Scrum敏捷開發(fā)實戰(zhàn)(1):方法介紹
編輯導(dǎo)語:在敏捷開發(fā)中,Scrum是一種增量迭代式的開發(fā)過程,對于產(chǎn)品開發(fā)過程十分重要。本篇文章作者分享了Scrum在敏捷開發(fā)中的方法,講述了傳統(tǒng)開發(fā)和敏捷開發(fā)的對比、Scrum的特點等,一起來學(xué)習(xí)一下吧,希望對你有幫助。
先從一則故事說起:
一天,一頭豬和一只雞在路上散步
雞對豬說:“嘿,伙計,我們合伙開一家餐館怎么樣?”
豬看了一下雞說:“好主意,那我們給它取什么名字呢?”
雞想了想說:“叫‘火腿和雞蛋’怎么樣?”
豬說:“那不行,我要全身投入,而你只是參與而已”。
這是在Scrum推出的系列故事中最有代表性的一個故事,它向我們展示了兩種角色:豬和雞。
在敏捷開發(fā)中,Scrum是一種增量迭代式的開發(fā)過程,它包含了一系列的實踐和角色定義的過程骨架。
主要角色包括產(chǎn)品負(fù)責(zé)人(Product Owner即PO)、敏捷教練(Scrum Master即SM)、開發(fā)團(tuán)隊成員等,他們在項目中承擔(dān)實際工作,是Scrum團(tuán)隊中的核心成員,扮演著“豬”類的角色,是必須要全身心投入的。
而用戶、客戶、老板們則代表著“雞”類角色,他們是項目的需求方和參與者,不會為項目跟進(jìn)的結(jié)果負(fù)責(zé)。
但他們對產(chǎn)品的意見至關(guān)重要,因此也必須考慮到他們,這就要求PO和SM必須處理好兩種角色的關(guān)系,這在實際操作中是最難的一個環(huán)節(jié)。
在正式介紹Scrum之前,我們先說下傳統(tǒng)開發(fā)和敏捷開發(fā)的對比。
一、傳統(tǒng)開發(fā)
傳統(tǒng)的軟件開發(fā)采用的是瀑布式開發(fā)流程,它把整個開發(fā)過程分成了需求、設(shè)計、編碼、測試、發(fā)布等階段,只有前面階段達(dá)成后再進(jìn)入下一個階段,整個過程按照事先制定的計劃前進(jìn)。
這種預(yù)定計劃的方法,帶來的問題也是顯而易見的,每個階段之間都有強(qiáng)烈的依賴關(guān)系,前一個階段被視為后一個階段的輸入。
如果輸入的質(zhì)量不高則會嚴(yán)重影響后續(xù)階段的輸出質(zhì)量,隨即帶來后續(xù)一些列階段的停滯,最終導(dǎo)致開發(fā)周期拉長項目延期,甚至以失敗告終;
我們的市場需求瞬息萬變,很難實現(xiàn)產(chǎn)品需求明確完整的收集,項目早期的承諾也導(dǎo)致對后期需求的變化難以調(diào)整、代價高昂。
同時,技術(shù)的發(fā)展也日新月異,對于所定義的功能可能實現(xiàn)也面臨著多重不確定性的因素。
所以從需求的明確性和功能實現(xiàn)的確定性兩個維度出發(fā),當(dāng)需求的不明確性和功能實現(xiàn)的不確定性均超出一定范圍之后,呈現(xiàn)出復(fù)雜系統(tǒng)的特征,瀑布式開發(fā)這種結(jié)構(gòu)化的方法便不再適用,而敏捷開發(fā)方法便是在這樣的背景下誕生。
Fix Feature,F(xiàn)lextime(傳統(tǒng)開發(fā)固定范圍,彈性時間)
二、敏捷開發(fā)
敏捷開發(fā)的一個核心思想的轉(zhuǎn)換是,從瀑布式開發(fā)所代表的“Fix Feature, Flex time”(固定范圍,彈性時間)轉(zhuǎn)向“Fixtime, Flex Feature”(固定時間,彈性范圍)。
Fixtime,F(xiàn)lex Feature(敏捷開發(fā)固定時間,彈性范圍)
在市場變化和技術(shù)變化的背景下,既然市場需求和產(chǎn)品定義所代表的“范圍”無法實現(xiàn)固化。
因而無法確定應(yīng)該投入多少資源來完成,那不妨固定好已有資源的,以資源位約束,實現(xiàn)“范圍”的最大實現(xiàn),從“計劃驅(qū)動”轉(zhuǎn)向為“價值驅(qū)動”。
在敏捷開發(fā)的思維模式提出后,2001年,敏捷宣言誕生。
- 個體和交互 勝過 過程和工具;
- 可工作的軟件 勝過 面面俱到的文檔;
- 客戶合作 勝過 合同談判;
- 響應(yīng)變化 勝過 遵循計劃;
- 精益求精 勝過 簡單執(zhí)行。
(注意:這里的勝過不是不要做,而是當(dāng)兩者出現(xiàn)沖突的時候,我們進(jìn)行選擇的判斷依據(jù))。
對比瀑布式開發(fā),敏捷開發(fā)更加貼近最終的市場環(huán)境,它有著更好的適應(yīng)性,同時在敏捷宣言的指引下,更強(qiáng)調(diào)發(fā)揮人的價值,能更好的挖掘出團(tuán)隊的潛能。
敏捷開發(fā)充分發(fā)揮“人”在軟件開發(fā)中的價值,強(qiáng)調(diào)追求有價值的產(chǎn)品結(jié)果,發(fā)揮每個人的主動性和創(chuàng)造力。
在敏捷宣言的指引下,產(chǎn)生了很多種敏捷開發(fā)方法,而沖刺和迭代式的“Scrum”方法,更進(jìn)一步通過具體的實施手段展現(xiàn)“敏捷宣言”所代表的敏捷價值觀。
三、Scrum介紹
Scrum原始含義是指英式橄欖球次要犯規(guī)時在犯規(guī)地點對陣爭球。
Sprint則是指竭盡全力的沖刺短跑,為球隊爭得利益,球隊隊員為一個整體,按照陣型發(fā)揮各自的價值,最終的結(jié)果取決于團(tuán)隊的配合和取勝的決心,而不是教練在場下的指揮。
- 1986年,Scrum首次應(yīng)用于產(chǎn)品開發(fā),竹內(nèi)弘高和野中郁次郎在 《The New New Product Development Game》文章首次提到將Scrum應(yīng)用于產(chǎn)品開發(fā)。
- 1993年,Jeff Sutherland在首次在Easel公司定義了用于了軟件開發(fā)行業(yè)的Scrum流程,并開始實施。
- 1995年,Jeff Sutherland和Ken Schwaber規(guī)范化了Scrum框架,并在OOPSLA 95上公開發(fā)布。
- 2001年,敏捷宣言及原則發(fā)布、敏捷聯(lián)盟成立,Scrum是其中一種敏捷方法。2002年,Ken Schwaber和MikeCohn共同創(chuàng)辦了Scrum聯(lián)盟。
Scrum敏捷開發(fā)讓團(tuán)隊以一個整體走完全程,產(chǎn)品開發(fā)過程從一個精心挑選的多學(xué)科團(tuán)隊的不斷互動中產(chǎn)生,團(tuán)隊成員從開始到結(jié)束都在一起工作,該過程不是在定義好的、高度結(jié)構(gòu)化的階段中進(jìn)行的,而是在團(tuán)隊成員的相互作用下產(chǎn)生的。
四、Scrum的特點
1. 內(nèi)置的不穩(wěn)定性
高層通過發(fā)出一個寬泛的總體戰(zhàn)略方向的信號來啟動項目,并設(shè)置了一個極具有挑戰(zhàn)的目標(biāo),同時賦予項目團(tuán)隊極大的自由來完成這個項目,這樣既給團(tuán)隊壓力,同時把團(tuán)隊推到墻邊并把他們逼到極致發(fā)揮他們的創(chuàng)造力。
2. 自組織的項目團(tuán)隊
當(dāng)項目團(tuán)隊被驅(qū)動到“零信息”的狀態(tài)時,他們就會呈現(xiàn)出一種自組織的特征,這種狀態(tài)存在模糊性和波動性,因此需要項目團(tuán)隊像初創(chuàng)團(tuán)隊一樣運(yùn)作,承擔(dān)主動性和風(fēng)險,并制定獨(dú)立的議程,當(dāng)一個群體表現(xiàn)出三個條件:自治、自我超越和異花授粉,這個群體就擁有了自組織的能力。
- 自治:公司的參與僅限于在一開始的指導(dǎo)、資金和道義支持,日常工作中高層很少介入,團(tuán)隊可以自由地設(shè)定自己的方向。
- 自我超越:項目團(tuán)隊全神貫注于對“極限”的永無止境的追求,從總部提出的指導(dǎo)方針開始,他們開始建立自己的目標(biāo),并在整個開發(fā)過程中不斷提升目標(biāo)。
- 異花授粉:由具有不同職能專業(yè)、思想過程和行為模式的成員組成的項目團(tuán)隊進(jìn)行新產(chǎn)品研發(fā),這種多樣性孕育了新的思想和概念(這里和黑客增長理念接近,多樣團(tuán)隊的觀點碰撞,獲得更具創(chuàng)意的實驗方案)。
3. 重疊的開發(fā)階段
在瀑布式方法下,一個項目以循序漸進(jìn)的方式經(jīng)歷幾個階段,只有在滿足了前一階段的所有需求之后,才能從一個階段過渡到下一個階段。
通過一些檢查點控制風(fēng)險,但這種方法幾乎沒有為集成留下空間,某個階段的瓶頸可能會減慢甚至停止整個開發(fā)過程。
而在整體或橄欖球方法下,這些階段有相當(dāng)大的重疊,這使得團(tuán)隊能夠吸收整個開發(fā)過程中產(chǎn)生的振動或“噪音”,重疊方法加強(qiáng)了共同責(zé)任和合作,激發(fā)了參與和承諾。
團(tuán)隊必須同步進(jìn)度以滿足最后期限,突出了解決問題的重點,鼓勵主動采取行動,發(fā)展多樣化的技能,并提高對市場條件變化的敏感性。
4. 多重學(xué)習(xí)
由于項目團(tuán)隊的成員與外部信息來源保持密切聯(lián)系,他們可以快速響應(yīng)變化的市場條件。
團(tuán)隊成員參與一個不斷嘗試和犯錯的過程,以減少他們必須考慮的選擇的數(shù)量。他們也獲得了廣泛的知識和多樣化的技能,這有助于他們創(chuàng)建一個能夠快速解決一系列問題的多才多藝的團(tuán)隊。
5. 微妙的控制
盡管項目團(tuán)隊在很大程度上是獨(dú)立的,但他們并不是不受控制的,管理層建立了足夠的檢查點,以防止不穩(wěn)定、含糊不清和緊張局勢演變成混亂。
與此同時,管理避免了那種損害創(chuàng)造力和自發(fā)性的嚴(yán)格控制。相反,它強(qiáng)調(diào)的是“自我控制”、“通過同伴壓力的控制”和“通過熱愛的控制”,我們統(tǒng)稱它們?yōu)椤拔⒚畹目刂啤薄?/p>
6. 學(xué)習(xí)的組織轉(zhuǎn)移
跨層次和跨職能積累知識的動力只是學(xué)習(xí)的一個方面,項目成員也有同樣強(qiáng)烈的動力將他們的學(xué)習(xí)成果轉(zhuǎn)移給小組以外的其他人,將學(xué)習(xí)內(nèi)容轉(zhuǎn)移到后續(xù)的新產(chǎn)品開發(fā)項目或組織內(nèi)的其他部門。
Scrum敏捷開發(fā)的實施讓開發(fā)團(tuán)隊有了一定自主權(quán),已安排好的計劃很大程度上不會被打斷,同時上下游相互配合,為一個共同的目標(biāo)而努力,每個人都清楚團(tuán)隊其他人的工作內(nèi)容,每天都知道項目的實時進(jìn)度,團(tuán)隊是一個整體的存在,而不是每個人獨(dú)立工作下的個體,有著很強(qiáng)的集體榮譽(yù)感。
但Scrum能否成功實施,關(guān)鍵要先獲得高層的認(rèn)同和理解,讓高層們理解Scrum的要義、利弊,如果Scrum能帶來高效、優(yōu)質(zhì)的開發(fā)成果。
那就在制定績效結(jié)果并在實施過程中放權(quán),讓每個成員真正意識到項目成果是自己的事,而不是領(lǐng)導(dǎo)的事。
如果是職能型的研發(fā)團(tuán)隊,同時也要獲得各需求方的認(rèn)可和支持,分享在這種方法下對整體的收益最大化,否則可能會面臨各種不理解,最終可能導(dǎo)致實施失敗。
因此,我們要落地Scrum敏捷開發(fā),就要做好“豬”與“雞”兩種角色之間心理上的平衡與和諧,“雞爺爺”切不可把“小豬”們看成是一群豬八戒,空有一身本領(lǐng),但好吃懶做。
“小豬”們也不可把“雞爺爺”想象成周扒皮,只會半夜雞叫,影響正常的開發(fā)進(jìn)度。
豬和雞雙方相互理解,達(dá)到項目開展過程中的平衡點,才能讓整個項目順利的完成。
作者:周武,曾就職于騰訊、邊鋒,現(xiàn)在一家上市公司產(chǎn)品負(fù)責(zé)人;公眾號:周武說。
本文由@ 周武 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于CC0協(xié)議。
- 目前還沒評論,等你發(fā)揮!