,現在此方式已被眾多大、中、小型企業使用,其中包括Yahoo!,Microsoft,Google,Lockheed Martin,Motorola,SAP,Cisco,GE Medical,CapitalOne和US Federal Reserve。許多使用Scrum的團隊都取得了重大的改進,其中更有個別在生產效率和職業道德方面得到了徹底的改革。
阿捷:這麼多大公司都在用,看來不錯。我們該怎麼使用它?到底如何做才算是“Scrum”?
敏捷聖賢:Scrum其實僅僅定義了一個開發框架(Framework),具體的程式設計實踐,完全取決於每個團隊,並且是完全基於常識進行管理的。首先,我們來看看Scrum是如何符合我們所熟知的敏捷開發原則的。
阿捷沒有馬上回答,等著敏捷聖賢把剩下的話說完。
敏捷聖賢:保持簡單:Scrum本身就是很簡單輕量級的流程,它能簡化我們的開發流程。
接受變化:Scrum鼓勵將工作細分成小塊。它關注的是一小段一小段時間,但是隻有在這些時間段的中間,我們才可以重新調整工作的優先順序。
不斷迭代:Scrum需要在小於30天的一次次迭代中構建應用程式。
不斷的反饋和改善:在每一次迭代的末尾,Scrum流程要求我們回顧以前是怎麼做的,並且思考我們下次可以做哪些不同的事來改善流程。
協作:Scrum強烈鼓勵團隊成員的協作和溝通。如果沒有這些,Scrum就一點用都沒有。
減少浪費:Scrum幫助我們識別做那些只對客戶或者團隊有價值的事情。
阿捷:嗯,這些原則真的很實用。那具體的Scrum的流程又是什麼樣的呢?
敏捷聖賢:在講流程之前,我先給你講幾個關鍵的定義。
“產品訂單”(Product Backlog):這是你構建一個產品所需做的所有事情的一個高層次的列表,並按優先順序排列,這樣可以保證你總是工作在最重要的任務上。比如對於整個Agile OSS 產品套件,你的TD-SCDMA就是其中的一個Product Backlog,而且是比較重要的Backlog,要是我,就絕不會讓這個Backlog Block整整兩個月沒有進展。
“衝刺”(Sprint):一個Sprint就是一次為完成特定目標的迭代,一般是2~4周。
“衝刺訂單”(Sprint Backlog):是Sprint的工作任務列表。一個“衝刺”訂單來自於產品訂單上最高優先順序的一些任務,以及產生的附加任務,每一個任務都應該有一個明確的“完成(Done)”的定義。比如對於你的TD專案組,在每一個開發的版本上都要列出優先的開發任務。
“產品負責人”(Product Owner):這個人負責維護產品訂單內容和優先順序。
阿捷:這些新名詞還真的需要時間慢慢習慣才行。那流程到底是怎樣的呢?
敏捷聖賢:它是一個非常輕量級的流程。簡單講是先建立一個產品“訂單”(Backlog),做一個短期“衝刺”(Sprint)計劃,執行這個計劃,每天開會討論計劃中的問題和進展,計劃完成後演示工作成果,再對該階段的工作做回顧、反思,接著不斷重複以上流程。
阿捷:就這樣簡單嗎?有點太粗略了,你能不能講得更細一些?
第3章 橄欖球與軟體開發(6)
敏捷聖賢:我可以給你一些細的指導,可是時間不允許!我現在正在San Francisco的機場,等著轉機去東京呢!馬上要登機了。你在北京?北京好像現在已經很晚了吧?
阿捷:啊?我這裡快凌晨3點了,別管我時間了。趕緊教教我在這個流程中的每一步都該做哪些事情好嗎?
敏捷聖賢:嗯,那我得簡短些!
敏捷聖賢:當你構建產品訂單時,要建立一個按優先順序排列的所有功能的列表,把最重要的功能放在列表的最前面。
阿捷有點發傻:如果需要把所有的事情都放進去,不就和敏捷的簡單原則相悖嗎?
敏捷聖賢:最初的計劃是非常非常高層次的,僅僅是我們對客戶從今天開始想要的那些功能的粗略的認識。一旦認識發生變化,就要及時調整。下一步做Sprint“衝刺”計劃。你要從產品訂單拿