1. 程式人生 > >再看敏捷開發

再看敏捷開發

 敏捷開發好還是不好,估計會像CC++C++Java哪個更好那樣一直無休止地爭論下去。其實,好或不好關鍵還要看是不是你的那道菜。   從公司搞大躍進式地敏捷開發開始,一直從一個程式設計師的角度看敏捷開發,對敏捷開發的第一印象就是不停的開會,我大致估算過,一個Scrum團隊,平均每個星期大概有兩整天的時間是在開會的:Daily Standup meeting, Sprint Planning, Sprint Grooming, Sprint Review, Sprint Retrospective, Sprint … 歐麥高!有必要開這麼多會嗎?!我是程式設計師,我需要時間去寫程式碼,給我時間寫程式碼,我把功能實現了就好了!囉哩囉嗦開那麼多會,有必要嗎?!

不論怎樣,生活還是要繼續,我們就這樣懵懵懂懂、半推半就地實踐著我們自認為的敏捷開發……

前段時間,一個偶然的機會,我的工作角色發生了比較大的變化,開始做一個專案(Feature)的負責人,我們稱之為FP(不是Fang Pi,是Feature Prime)。此時,因為兩年多的實踐結果並不理想,公司已經不再大肆鼓吹敏捷開發了,但是車子大了不是說剎車就停得住的,在我們的開發過程中還是摻雜著一些敏捷開發過程的元素,這也剛好讓我有機會從另外一個角度重新審視敏捷開發。

作為FP,我的工作主要是制定計劃、監控進度、預估風險和風險發生時作出相應處理。

首先,要說一下這個“計劃”,一個專案的計劃絕對不是一個靜態的、一成不變的計劃,專案的計劃是要隨著專案的進行不斷調整以適應各種變化的一個動態的計劃。當然,這並不表示專案初期的長遠計劃沒有意義,專案剛開始的時候,一個比較長遠的計劃,對整個專案的開展具有重要的指導意義,很簡單,凡事只有有了方向才能向前進。其實,這也常常是初嘗敏捷開發者的一個理解誤區,認為敏捷開發的專案都沒有一個長遠的計劃。誠然,敏捷開發因為以小步快走的方式進行,所以更多的是短而小的計劃,一個

Sprint通常不超過三個星期,但這並不表示敏捷開發的專案就沒有長遠計劃,只是這個長遠的計劃更多地是被專案負責人所關心的,開發團隊更多的是關心當前或下一個Sprint要做的事兒。

再說“監控進度”和“預估風險”。專案的第一個Sprint結束後,我們開了一個Retrospective meeting(這個會議我一直是支援的,因為我認為階段性的反思和總結是很重要的),會上大家一致認為剛剛結束的一個Sprint裡,團隊成員之間的溝通太少,導致資訊不同步,會議決定從下個Sprint開始恢復每天站會(Daily Standup meeting)。每天都進行一次15分鐘左右的同步會議,對於FP瞭解專案的進度和估計可能的風險,都有很大的幫助,因為每天同步可以保證資訊的實時性,而面對面交流則可以保證資訊的準確性。可在我們團隊裡面,我慢慢地發現了一個問題,每次同步得到的資訊都不是那麼清晰,都有一些模稜兩可、不是很確定的地方。究其原因,則是因為在

Sprint開始之前,整個團隊並沒有設定一個明確的目標,而只是大致討論一下,接下來的三個星期要做什麼,至於做成什麼樣、具體怎麼做則完全沒有討論。其結果就是團隊成員在沒有明確目標的情況下即開始工作,每天都在摸索中前進,所以在每天同步會上反饋的資訊自然是模糊不清的。此時,Sprint PlanningSprint grooming會議的重要性就體現出來了,這些會議的目的就是要整個團隊明確設定當前Sprint的目標,並清晰劃分每個人的任務(Task),只有這些都清楚了,每天的同步會議才有更多意義。然而,在我們的實際情況中,這些意義又常常僅僅是為FP監控整個專案的進度提供了方便,開發人員則不太願意關心這些,他們更多地是急於寫程式碼去實現需求,用程式碼來實現自己的價值。這個時候,我們就需要一個能夠真正做到Self-Organized的團隊。”Self-Organized”通常譯為“自組織”,我覺得譯為“精誠合作”更為貼切,意思是說團隊的每個成員不僅要對自己的任務負責,更要積極主動地為整個專案負責。總之,只有一個Sprint的目標清晰了、任務劃分細緻明確了,每天同步會議反饋的資訊才足夠準確,才能幫助FP更好地監控專案的進度並預估可能的風險。

洋洋灑灑千餘字,總要有點結論性發言。首先,敏捷開發對於管理專案不能說不好,但是想做好很難。其次,想做好敏捷開發,必須有合適的團隊,也就是”Self-Organized”的團隊。所以,敏捷開發好還是不好,取決於它是不是你的那道菜。

                              -- 2013年8月