迭代你好,我是衝刺

摘要: 一會“迭代”,一會“衝刺”,一會“sprint”,這些詞到底是不是一個意思呢?

本文分享自華爲雲社區《迭代你好,我是衝刺》,作者:敏捷的小智。

很多團隊在使用Scrum的時候,都知道兩到四周爲一個週期,這個週期叫衝刺;進入到衝刺後,團隊一定會有人提到“這個衝刺我們要xxx”、“本迭代還有xxx沒完成”、“這個sprint還要xxx”——一會“迭代”,一會“衝刺”,一會“sprint”,這些詞到底是不是一個意思呢?

“迭代”和“衝刺”的定義

按照慣例,先查驗身份——我們看看這倆詞的定義。

在維基百科中,迭代(iteration)在軟件開發領域沒有單獨的詞條解釋,而是將迭代與增量開發捆綁到一起,即迭代增量開發(iterative and incremental development),在敏捷軟件開發這一詞條中,有一句關於迭代的介紹:“Iteration, or sprints, are short time frames that typically last from one to four weeks”——即迭代/衝刺都是一個時間盒的概念,通常持續一到四周。

衝刺(sprint)源於Scrum,在最新2020版的Scrum Guide中,對於衝刺的定義是“Sprints are the heartbeat of Scrum, where ideas are turned into value.They are fixed length events of one month or less to create consistency.”。

通過兩個定義可以看出,衝刺和迭代大方向上好像確實沒啥區別,都是時間盒的概念,持續時間也都差不多,那細節方面有沒有啥不同呢?

“迭代”與“衝刺”的區別

迭代這詞誕生的比較久——20世紀60年代就已經開始出現迭代增量開發了。最早的迭代增量開發不是出現在軟件行業,而是航天事業——美國通過迭代增量的開發方法,造出了水星太空艙,幫助美國完成了第一次航天載人計劃。後來迭代增量開發被應用到軟件研發行業。

“軟件研發的每個迭代都涉及一個跨職能團隊,負責所有職能:規劃、分析、設計、編碼、單元測試和驗收測試”(Each iteration involves a cross-functional team working in all functions: planning, analysis, design, coding, unit testing, and acceptance testing. ——維基百科),“規劃、分析、設計、編碼、單元測試和驗收測試”聽起來是不是很耳熟?是的,這是瀑布模型的內容。迭代很像一個小瀑布,每個迭代產生一部分產品功能,多個迭代就可以堆砌成一個產品。和瀑布不同的是,迭代和迭代之間,可以對產品做出一定量的調整,保證產品沿着正確的方向發展。

衝刺一詞則來源於Scrum,Scrum本意是橄欖球中爭球,Scrum團隊應該像橄欖球遊戲中的持球者一樣,爲了團隊目標,朝着一個方向衝刺。在最新版的Scrum Guide中,能夠查到116處“sprint”,而“iteration”出現的次數則是0——在Ken Schwaber 和 Jeff Sutherland兩位老爺子看來,衝刺sprint纔是Scrum的官方唯一指定時間盒代名詞。

Scrum中的衝刺由計劃會議展開,這點和迭代的規劃比較像,評審會議則相當於軟件的一次小的交付。但衝刺和迭代還是略有差別——首先,衝刺中我們提倡測試驅動開發,而不是必須等功能開發完成,再着手測試工作。

其次,衝刺中每天都會開每日站會,將一個大的衝刺分解成多個小的衝刺,團隊成員通過“昨天做了什麼”,“今天要做什麼”,“遇到什麼阻礙”三個問題,瞭解團隊每個人的工作狀況,以便於共享項目進度,早日發現問題,快速做出調整應對生產,而迭代則沒有每日站會的相對的規定。

最後,衝刺完成後還有回顧會議,團隊通過回顧這個迭代哪些做的好,哪些做的不好,可以對以後迭代做出調整。以上幾個點是迭代沒有明確的。

搞混了,沒啥大不了

綜上,嚴格意義上迭代和衝刺是兩個概念。

從專業角度來說,Scrum中應該使用衝刺(sprint),而非迭代(iteration),衝刺一詞也會給團隊成員帶來一種緊張感,促使團隊更好的完成計劃會議制定的目標。

從非專業角度來說,只要教練和團隊成員能夠領悟彼此的意思或者能夠做到術語統一,並且提到“迭代”或“衝刺”的時候知道對方說的是什麼,把“衝刺”叫成“迭代”也無傷大雅,畢竟大多數時候,大家說的都只是一個時間盒。

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章