2015年8月17日 星期一

別再自稱用敏捷程式設計了!

大概在我大一的時候,extreme programming 開始流行,著名的敏捷程式宣言 被提出。
直到今日,這依然是很值得一讀的文章。

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

對我而言,Agile software development 就只是這四條理念,而不是什麼 SCRUM, pair programming 或者是 work flow。這四條理念不是獨立的四條,而是互相支援的四個功能。

  • 如果沒有 working software,那麼 interaction 就會變成很膚淺,缺乏深度思考,自然就無法完成需要深度思考的軟體,如作業系統與編譯器。
  • 如果沒有 customer collaboration,那麼 working software 的 iteration 就只是漫無目的的 iteration,無法達到盡善盡美。
  • 如果沒有 customer collaboration,那 responding to change 就會變成沒有意義。

 整個 agile software development 要成功,有兩大核心能力要具備
  • 這群人善於溝通工作內容,了解彼此工作能力
  • 有願意投入的客戶,帶領團隊往正確的方向發展
通常我們透過這兩點來看這個團隊是否有機會使用 agile
  • 團隊成員技術實力是否落差過大。
  • 是否有與客戶的利益一致
溝通工作內容最大的問題通常是因為實力落差,均強或均弱的團隊通常會有辦法溝通工作內容。
所以,別鬧了,如果你無法滿足這兩個條件,就貿然丟掉 process, tools, documents, plan,你就是在自殺。

你可知道滿足這兩個條件有多難嗎?

能夠待在一個成功的敏捷式開發團隊是一件非常愉快的事,可是這種團隊其實非常罕見。大多數軟體團隊的狀況是:
  • 這群人不那麼了解彼此工作能力,彼此工作能力實力有很大落差,但是他們個性容易相處。
  • 有客戶,但是互動不頻繁,甚至可能會有點偏頗。更常見的是根本就沒有客戶,所有的需求來自於 marketing 或自行猜測。
大多數現稱的 agile workflow,如 github 與 JIRA workflow,都沒有思考過「真正的 agile 團隊有多罕見」這件事,只是大力的宣導他們是使用 agile development,但是我覺得這只是為自己工具尚不完善的推託之詞:
  • 我的 issue work flow 很 naive,因為 Individuals and interactions over processes and tools
  • 我的 document 跟 issue 銜接能力有問題,因為 Working software over comprehensive documentation
  • 我沒有 CI 跟 release engineering 的能力,因為 Customer collaboration over contract negotiation
  • 我沒有 milestone 跟 roadmap 規劃功能,因為 Responding to change over following a plan
真正能夠執行 agile 的團隊真的沒那麼常見,我磨合那麼多團隊,也沒有成功的磨合過幾個。

我真的很鼓勵團隊使用 github 或 JIRA,多使用一點號稱 agile development 的環境。這世界上已經有太多軟體團隊了,應該是減少一些團隊的時候。

真正的敏捷式開發團隊,可能會讓你嚇一跳,他們通常使用的工具都是最傳統的工具,因為他們不會花任何一點力氣在學習使用工具上面 ,他們會花力氣在利用工具來幫助溝通。

真正的敏捷式團隊,依然是會有大量的 document 的,他們懂得 document 的價值,不會寫無意義的文件,但是該寫的文件絕對不會錯過。

真正的敏捷式團隊,對客戶是很負責的,才能建立與客戶之間的信任感。所以他們會花大量時間在設計 SOP,確保 release engineering 的流暢。

真正的敏捷式團隊,所有人都有一致的 vision,他們會從 vision 開始設計 plan,他們了解 plan 本身不重要,但是 planing 是無比重要,一定要有 planing,而且一定是  PDCA (plan, do, check, react)這四個流程做得完美無缺。

馬的,這世界上太多的偽敏捷式團隊了,騙得小朋友團團轉,搞得我頭好痛。

沒有留言:

張貼留言