2016 年 08 月 27 日

為什麼軟體開發團隊要採用敏捷

大部份敏捷的書都告訴你如何做, 但很少告訴你為什麼要這麼做。  這個影片是ThoughtWorks於2014年的演說,在這演說之際,已在敏捷耕耘超過十年,Martin Fowler 與 Neil Ford 反推敏捷開發的成功經驗,點出敏捷中成功的要素,把敏捷開發的精髓做了很不錯的歸納。

1. 專案管理從傳統的預測型(Predictive Approach)轉為調校型(Adaptive Approach)

傳統專案的做法是"Planning Your Work, Working Your Plan."  專案如果能照計畫按時完成就是成功的專案,而這樣的成功取決於需求必須清清楚楚且穩定。 可是一般軟體專案的需求很難在初始階段就清楚確認,之後需求也常隨時間變動。 採用調校型的處理方式, 不斷地隨著變動演化,做對當下有幫助的事,切斷專案的成功一定要有穩定需求的依賴關係,採用迭代的方法一個循環一個循環持續改善,這樣的敏捷處理方式才有辦法應付軟體開發需求變動的問題。

2. 傳統的流程是先把流程圖畫出,再把需要的人填進去,人為運作的零件。敏捷則是先把一群合得來的人組成團隊,再由團隊來決定要採用什麼流程運作。

從傳統的流程觀點, 人是可替換的零件,但以敏捷的觀點來看人是主角 。事實上人本身就是無法預測的變數,投入不同的人,結果一定不同。 所以應該讓這群人一起去主導他們選用什麼流程來進行,才會比較有效率。

3. 建立快速且清楚的溝通管道

溝通 (Communication)  >  技術(Technology)

Peopleware所述,失敗的專案通常不是因為技術問題,而是人的問題。 當發現問題的時候或看見需要改善的地方,有沒有抓緊時效因應,結果將大不同。 所以建立快速且清楚的溝通管道對於最後的成敗有很大的關鍵效應。

4. 採用 經驗手法(Empirical Process) , 不用 明確手法 ( Defined Process)

舉做蛋糕和淋浴這兩件事來說,做蛋糕只要照食譜放入正確份量的原料,經過相同的程序, 就確定做出 一樣香噴噴的蛋糕。 這是 明確手法(Defined Process)。 淋浴的過程和做蛋糕全然不同,因為我們不太清楚要轉到哪裡熱水會剛剛好是自己喜歡的溫度。 所以我們要先轉到某個地方,測一下水溫,再做調節,用手感受一下水溫…如此在 OUTPUT 和 INPUT 間來回做 檢查(Inspect)調節(Adjust),這是經驗手法 (Empirical Process)。 在瀑布式(Waterfall)開發模式下,假設所有的軟體開發相關的一切都是明確的,團隊只要照計畫執行就能成功完成。 但事實上軟體開發牽涉到的技術變化與人的因素並不像瀑布式假設的那麼完美。敏捷讓你面對這個事實,採用經驗手法(Empirical Process) ,以迭代的方式,做"Inspect & Adjust"的持續改善。 process

5. 公開透明的進度資訊

在ThoughtWorks的北京辦公室,他們有滿牆的狀態卡(Kanban),所有的人走過去都可以知道現在有哪些正在進行、在什麼狀況,不再像傳統只有專案經理知道整個狀況。 ThoughtWorks在紐約和印度的辦公室則是用虛擬的卡牆-Mingle ,以幫助兩地協作並讓所有參與人了解專案現狀 。 除了工作進度,軟體開發真正的成果是可運作的軟體。  運用工具秀出所有build版本狀態對於軟體開發團隊的效率有很大的幫助。 (相關工具您也可參考JetBrains Team Tools)

6. 結對程式設計

在演說中,Neil Ford舉了兩個他喜歡的花園當例子,一是很有組織,植物都在矩陣中,另 一個是幾乎像野生,任植物自行發展。 人的左右腦可以說就是這兩種的組合,左腦是很有組織,邏輯思考,右腦則自由發展羅曼蒂克。 寫軟體一方面要有創意一方面也要很有組織,很不幸的,通常在寫程式的時候,偏向左腦,所以,結對的另一位在旁觀看的程式設計師,可以扮演右腦的角色,看到正在寫程式的人所看不到的部分,有可能旁觀者會發現有更容易的方法來達到同樣的目的。 這方法曾引起很多爭議,不過ThoughtWorks認為他們從中獲得很多好處。

7. 反省反饋持續改善

團隊定時一起做反省:哪些做得好?遇到什麼困難?有讓人困惑的地方?哪些需要改進? 把整個開發流程也當成需要不斷反饋改進的標的,做持續的改善。  如果你用的是極限編程(Exterem Programming),現在的方式跟以前的做法還一模一樣的話,那你並沒有真的在實行敏捷。

 

相關書籍:

The ThoughtWorks Anthology , Volume 2   團購

如果您遇上軟體開發的困難點,能找到曾遇上同樣問題的人指引就真的太好了.  本書整理了軟體開發領域的專家  ThoughtWorks 的經驗,將IT與軟體開發上最好的曾做過實際驗證的觀點一起呈獻給您.  您將獲得許多方面的經驗分享: 從測試到資訊視覺化、 從物件導向到函數程式設計、從漸增式開發到驅動創新達成交貨。在您需要專家指點時,您將發現這些解決方案的收藏很值得參考。

Agile and Lean Program Management   團購

以交付為協同作業的重心,而不是開會. 學習應該用甚麼樣的度量, 如何使用這些度量來幫助大家交付更多有價值的而不是那些您不想要的(都在處理流程的事).  創造一個僕人式領導與小世界網路(small-world networks)的環境.  讓跨組織的自治、協同作業與探索運行無阻, 以便更好更快地交付您的產品.

 

歡迎加入 JetBrains Taiwan-Team Tools 社團  8/31 抽獎活動

Soft & Share 精實雲端讀書會

本文特色圖片來自https://pixabay.com

覺得這篇有值得分享的觀念嗎? 歡迎分享 !

 

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

分類

軟體工程, 專案管理, 敏捷開發

標籤