敏捷无敌之橄榄球与软件开发(9)
橄欖球與軟件開發 (9)
本文摘自《敏捷無敵》一書
?阿捷滿懷希望地問了很多人,可是最終沒有人能夠解決他的問題,也沒有人知道如何找到敏捷圣賢,甚至大多數人都沒聽說過論壇里有這么一個ID!幾經周折,阿捷終于在論壇早期的精華帖中找到了一個E-mail地址,據帖子主人說,曾經有一個叫做“敏捷圣賢”的朋友通過這個E-mail地址和他討論了很多軟件工程方面的問題,由此促使他寫下了這篇帖子。
阿捷懷著死馬當活馬醫的心態,用這個電子郵件地址給傳說中的“敏捷圣賢”發了一份電子郵件。
敏捷圣賢:
你好!別人都這么稱呼你!我也只好這么稱呼你了。???
我現在遇到一些很棘手的問題,我在論壇里發了很多帖子,但是沒有人能夠幫助我。有人告訴我,可能只有你才能幫助我!??
我是Agile公司的一名項目經理,之前我們采用的傳統軟件開發模式已經不能滿足現在的需要。我想采用敏捷的方式來幫助我們進行開發。
我看過《人月神話》,我知道對于目前的軟件開發,還沒有什么“銀彈”,但我還是希望從你那里獲得什么“銅蛋”,或者“糖衣炮彈”也行,只要能解決我的問題!
如果方便,可以回郵件或者加我MSN嗎?我的MSN是agilejie@msn.com。???
盼復!極其盼復。????
阿捷
時間一天天過去,白天上班的時候阿捷還要和大民阿朱他們一起為了項目早日Release而浴血奮戰,晚上則依舊是一周兩次和美國總部那邊開Conference Meeting。在其他的時間里,阿捷已經沒有時間再去練習CS的槍法,而是如饑似渴地學著敏捷的知識。阿捷有一種預感,如果世間還有一種方法可以幫助他們按時Release Agile OSS 5.0的TD-SCDMA產品,能夠幫助中國的銷售團隊拿到中國移動的TD訂單,那就是“敏捷開發”。阿捷還有一種預感,那就是敏捷圣賢一定會給他回信。阿捷每天下班回到家第一件事情就是去查自己的MSN上有沒有新加入朋友的請求,而每次的結果都讓阿捷很失望。漸漸地,阿捷的心已經有點涼了,自己有時候也在找借口安慰自己:“反正項目Delay也不是TD一個項目組的事情,周小小和Rob他們兩個組的進度更慢。
還是在周五晚上,時鐘已經指到了凌晨2點,小黑早就已經回到自己的小窩里打著小呼嚕了,而阿捷還在開著這周的Conference meeting,情況都不容樂觀,不僅中國這三個組,美國那邊的開發情況也都不樂觀,項目Delay已經成為板上釘釘的事情了。Release Manager甚至建議將開發計劃延遲到2008年的5月份。在一陣悲觀情緒之中,阿捷結束了這周的Conference Meeting。突然間,MSN彈出一個讓阿捷怦然心動的窗口,“Hi,阿捷,請加我。”這個人的簽名居然是“敏捷圣賢”!???
阿捷一陣激動,趕緊通過“敏捷圣賢”的請求!那邊已經發過來了信息!?
?
敏捷圣賢:你好,阿捷?
阿捷:圣賢你好!我是阿捷。
敏捷圣賢:你是怎么知道我的?
阿捷:嗯,是猴子告訴我的,我們上學的時候住一個宿舍!
敏捷圣賢:哪個猴子?Sorry,我已經沒印象了。我知道你說的那個中文的敏捷論壇網站,不過我已經很久沒有登錄去看了,那里真正有價值的東西太少。
阿捷大致把現在他的項目背景、開發方式、項目管理的方法和工具,以及目前遇到的問題等一股腦講給敏捷圣賢。他本以為敏捷圣賢會很驚訝于Agile公司系統的龐大和繁雜,卻沒想到敏捷圣賢對他說:“你之前所說的問題,其實是當前大型軟件公司開發的通病,我一點也不驚訝。既然你想用敏捷開發來改變現狀,那么我想知道,關于敏捷軟件開發,你又了解多少呢?”
阿捷:嗯,我知道TDD,FDD,結對編程……
阿捷把這些天學來的敏捷開發詞匯全都敲了出來。
敏捷圣賢:嗯!這都是一些具體的開發模式,對于提高你們的編程效率是有幫助的。但對于項目的整體改善,效果不大,你需要改善項目整體管理方式才行!
阿捷:奧!是什么樣的管理方式??
敏捷圣賢:如果你想使用一個輕量級、能很快取得巨大成效且流程簡單容易使用的東西,那就是Scrum!
阿捷:Scrum?這是什么的縮寫?
敏捷圣賢:Scrum不是什么縮寫,就是一個單詞!你看過橄欖球吧??
阿捷:在電視里看過!橄欖球分為英式和美式,英式不穿防護服和不戴頭盔;美式都要帶,而且比較野蠻。其實橄欖球起源就在英國,美式橄欖球是后來由移民帶到美洲后演變發展而來的。我覺得,共同點是將球送到對方的陣區內,本質區別是英式玩球,美式玩人。但橄欖球跟軟件開發有什么關系?
喜歡體育的阿捷從前寒假的時候都會在家里看美國超級碗的轉播。?
敏捷圣賢:有關系!你看電視比賽時,當比賽出現小的犯規或因為隊員受傷等原因中斷的時候,怎么處理的?
阿捷:爭球!雙方各三名前鋒隊員相互摟抱,半蹲頂架在一起。由有球權的隊投球。投球隊員投球后,雙方隊員互相頂推,中間的隊員搶球。投球隊員繞到球隊的后面將球撿起,可以傳球或帶球跑,比賽繼續進行。
敏捷圣賢:嗯!差不多!你知道在橄欖球中這個術語叫什么嗎?
阿捷:國內都叫司克蘭。
敏捷圣賢:嗯,英文就是Scrum!意思是密集爭球!實際上,我想說的Scrum這個敏捷項目管理方式,寓意就來自于“密集爭球(scrum)”,寓指整個團隊攢足力量,為了一個共同的目標,一起向前快跑!
阿捷沒想到這軟件開發還跟橄欖球扯上了,馬上輸入:呵呵,這個比喻很貼切。
敏捷圣賢:根據我的實踐,Scrum是目前最符合敏捷開發模式的敏捷項目管理方式,能帶來很多好處。
阿捷馬上問道:最初是誰提出的這個思想?都有哪些公司在用?
敏捷圣賢:Scrum是在十多年前由Ken Schwaber和Jeff Sutherland博士共同提出的,現在此方式已被眾多大、中、小型企業使用,其中包括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 5.0產品套件,你的TD-SCDMA就是其中的一個Product Backlog,而且是比較重要的Backlog,要是我,就絕不會讓這個Backlog Block整整兩個月沒有進展。??
“沖刺”(Sprint):一個Sprint就是一次為完成特定目標的迭代,一般是2~4周。?
“沖刺訂單”(Sprint Backlog):是Sprint的工作任務列表。一個“沖刺”訂單來自于產品訂單上最高優先級的一些任務,以及產生的附加任務,每一個任務都應該有一個明確的“完成(Done)”的定義。比如對于你的TD項目組,在每一個開發的版本上都要列出優先的開發任務。??
“產品負責人”(Product Owner):這個人負責維護產品訂單內容和優先級。?
阿捷:這些新名詞還真的需要時間慢慢習慣才行。那流程到底是怎樣的呢?
敏捷圣賢:它是一個非常輕量級的流程。簡單講是先建立一個產品“訂單”(Backlog),做一個短期“沖刺”(Sprint)計劃,執行這個計劃,每天開會討論計劃中的問題和進展,計劃完成后演示工作成果,再對該階段的工作做回顧、反思,接著不斷重復以上流程。
阿捷:就這樣簡單嗎?有點太粗略了,你能不能講得更細一些??
敏捷圣賢:我可以給你一些細的指導,可是時間不允許!我現在正在San Francisco的機場,等著轉機去東京呢!馬上要登機了。你在北京?北京好像現在已經很晚了吧???
阿捷:啊?我這里快凌晨3點了,別管我時間了。趕緊教教我在這個流程中的每一步都該做哪些事情好嗎??
敏捷圣賢:嗯,那我得簡短些!?
敏捷圣賢:當你構建產品訂單時,要創建一個按優先級排列的所有功能的列表,把最重要的功能放在列表的最前面。?
阿捷有點發傻:如果需要把所有的事情都放進去,不就和敏捷的簡單原則相悖嗎??
敏捷圣賢:最初的計劃是非常非常高層次的,僅僅是我們對客戶從今天開始想要的那些功能的粗略的認識。一旦認識發生變化,就要及時調整。下一步做Sprint“沖刺”計劃。你要從產品訂單拿出一些優先級最高的任務,制訂一個2~4周的計劃,決定如何完成這些任務。然后開始執行這個計劃。?
阿捷有點明白了:好的。那其他的呢??
敏捷圣賢補充著:每天開一次短會,檢查Sprint中每個任務的進展狀況,對未完成的任務,要求任務所有人給出新的剩余工作量的估算。?
阿捷:啊?每天都開一次碰頭會,那得浪費多少時間啊!?
敏捷圣賢:所以你作為Scrum Master要讓會議開得很短,對于你現在的TD項目組來說,5個人,我覺得只要花10分鐘就夠了。在Sprint完成之后,大家聚在一起,展示一下工作成果,這時候一定要讓產品負責人知道已經完成了哪些工作。???
阿捷:好的,然后再開一次回顧會議?我們以前項目做完后,都會搞一次的。
敏捷圣賢:對,一個Sprint結束后,做一次反省。從團隊的角度來審視哪里做得好,并繼續保持,找出不好的地方,并尋求改善方法。
阿捷:這個流程真的很簡單。不錯。?
敏捷圣賢:還有,在一個Sprint做完之后,你要重新調整一次產品訂單,然后再做計劃,開始下一個Sprint。?
阿捷:好的。呵呵,聽起來Scrum還不錯。我想下周一就開始,我的項目團隊做一個兩周的Sprint,看看效果如何。你覺得好嗎?
敏捷圣賢:呵呵,不會吧,阿捷,這么著急?你是我遇到的第一個剛聽了Scrum,馬上就要實施的人!可是你真的準備好了嗎?
阿捷很有信心:差不多吧!Scrum這玩藝兒聽你講起來挺簡單的!我在網上再找點資料。???
敏捷圣賢:這么有信心!祝你成功!我得走了,已經開始通知旅客登機了!?
阿捷:哈哈,好的。謝謝你!祝你旅途愉快!再見!?
敏捷圣賢:再見!?
阿捷突然又想到一件事情,趕緊和敏捷圣賢說:等一下,還有一個問題。我們原來實行的是CMM/CMMI那套,后來又是六西格瑪,現在是ISO 9000,每周的開發都要和美國那邊做匯報,現在大家都還在采用傳統的瀑布開發模式,要是就我一個組采用Scrum,能跟其他組融合嗎?會不會相互沖突?如果沖突怎么辦?而我又該如何向我的Manager解釋這些呢?
?
當阿捷敲完這長長的一串時,敏捷圣賢的頭像已經變成灰色,他已經下線了。阿捷有點發呆地看著電腦屏幕,看來這些問題只能依靠自己解決了。
總結
以上是生活随笔為你收集整理的敏捷无敌之橄榄球与软件开发(9)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语foteball足球foteball
- 下一篇: python文字游戏循环3次_Pytho