從阿甲接觸敏捷至今,對於sprint和iteration這兩個詞也是經常混著用,但關於這兩個詞之間的關系和區別,還真的沒有思考過。正好阿甲也想趁這個機會和小夥伴們壹起把這個概念理清楚,所以-
“幹貨還有5秒鐘到達戰場”
大家先看下iteration和sprint這兩個英文單詞的本源之意。
以下是劍橋詞典對於iteration和sprint的解釋:
Iteration?:
the process of doing something again and again, usually to improve it, or one of the times you do it.
Sprint:
to run as fast as you can over a short distance, either in a race or because you are in a great hurry to get somewhere。
在wiki中:
叠代是重復反饋過程的活動,其目的通常是為了接近並到達所需的目標或結果。每壹次對過程的重復被稱為壹次“叠代”,而每壹次叠代得到的結果會被用來作為下壹次叠代的初始值。
在Scrum中,Sprint 說的是類似橄欖球比賽中的沖刺:大家團結壹致,為了完成該Sprint的目標瘋狂向前沖。
通過以上對於沖刺和叠代的字面分析,我們可以看到叠代的重點在於重復(again and again)過程,而沖刺的重點則是在相對短的時間盡快(run as fast as you can)到達終點。
這也和我們在產品開發管理中運用這兩個詞語的場景基本符合,下面我們從產品開發過程來更深入認識下面這兩個單詞是從哪裏來,要到哪裏去這個深刻的哲學問題。
早在20世紀50年代末期,軟件領域中就出現了叠代模型。
最早的叠代過程可能被描述為“分段模型(stagewise model)”。叠代模型是RUP推薦的周期模型。被定義為:叠代包括產生產品發布(穩定、可執行的產品版本)的全部開發活動和要使用該發布必需的所有其他外圍元素。
在某種程度上,開發叠代是壹次完整地經過所有工作流程的過程:需求分析、設計、實施和測試工作流程。
實質上,它類似小型的瀑布式項目。
RUP認為,所有的階段都可以細分為叠代,每壹次的叠代都會產生壹個可以發布的產品,這個產品是最終產品的壹個子集。
叠代開發承認我們在把事情做對之前有可能做錯,在把事情做好之前有可能做壞。(Goldberg and Rubin,1995)
叠代開發本身是壹種有計劃的修改策略:通過多次開發來改善正在構建的特性,逐步得出壹個完善的解決方案。例如,對壹個知之甚少的產品,開始時可以先創建原型以獲得重要知識,接著可以創建壹個更好壹點的修訂版,再接下來是壹個相當好的版本。例如,在文章寫作過程中,我在收到反饋以及對如何表達主題有了更深刻的理解後,把每章都修改了幾次。
在scrum框架中則整合了叠代和產品增量2個概念使用沖刺(sprint)來作為固定時間盒的描述。Sprint 是 Scrum 的核心,其長度(持續時間)為壹個月或更短時間的限時,在這段時間內構建壹個“完成的”、可用的和潛在可發布的產品增量。在整個開發過程期間,?Sprint 的長度通常保持壹致。前壹個 Sprint 結束後,新的下壹個 Sprint 緊接著立即開始。
沖刺則更強調在短的時間內“撞線”,團隊成員確定沖刺的目標之後,以盡可能快的速度來進行協同工作,幫助團隊在沖刺結束的時候達成目標。這個目標可能是產品增量,也可能是壹些獨立的特性,但是在Scrum中稱其為PSP(潛在可交付)。沖刺的另外壹個特性則是在每個沖刺中壹定要有計劃/評審/回顧/每日站會等儀式來確保沖刺能夠達到應用的效果。而在叠代中則不必須要。
舉個例子:
阿甲以前在某大型電信企業參與開發壹個復雜系統,全部開發周期為壹年,項目經理將項目分解為幾個小的裏程碑,然後確定了每個裏程碑要交付的功能特性和相關交付物,接著客戶在每個裏程碑截至日期進行驗收,我們可以認為這就是壹種叠代開發模式。
但是在這個項目中,需要註意的是前期需求分析,功能設計都是在叠代開始前就已經做好的,這也是很多大型企業使用叠代來進行產品開發的壹個習慣做法。而且每個裏程碑實際上不壹定能產生增量或者特性,比如說有壹些是文檔的輸出或者單獨測試,基礎架構搭建完成等。
而大部分scrum團隊則采用的是1-4周sprint來進行開發,每個sprint有固定的儀式來讓大家參與,同時結束的時候要產生PSP(潛在可交付),業務和市場每個sprint都會參與團隊評審,通過這種方式來獲取快速反饋和高效協同。
每個sprint的產出壹定是可以交付(但不壹定交付),能夠通過客戶的評審並且驗收,同時也是要有價值的!
這就要求團隊成員不僅僅是完成任務,更多的是思考如何給客戶帶來價值。
從上面我們可以看出沖刺和叠代實際上是有壹些區別的,但在實際應用中,阿甲發現很多SM或者coach在講述這個問題的時候經常使用叠代來進行替代,這是壹個習慣問題。不過阿甲發現,更多的時候如果我們使用沖刺概念則能夠給團隊帶來的壹些更好的效果,因為沖刺更可能帶來短時間撞線的緊促感,更好地讓團隊成員計劃每日的工作,反思自己每天的工作給予我們沖刺結束交付帶來的幫助和阻礙。而另外壹點則是如果使用叠代,則意味著不壹定要有實際可用的交付物,但是沖刺則不然。
上面就是阿甲自己對於叠代(iteration)和sprint(沖刺)在敏捷和scrum中的理解,不知道小夥伴們是否認同呢,當然也歡迎各位小夥伴們批評指正和補充。
阿甲的壹個特質優點就是臉皮厚,不怕板磚哦。