直到今日,這依然是很值得一讀的文章。
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
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 要成功,有兩大核心能力要具備
- 這群人善於溝通工作內容,了解彼此工作能力
- 有願意投入的客戶,帶領團隊往正確的方向發展
- 團隊成員技術實力是否落差過大。
- 是否有與客戶的利益一致
溝通工作內容最大的問題通常是因為實力落差,均強或均弱的團隊通常會有辦法溝通工作內容。
你可知道滿足這兩個條件有多難嗎?
能夠待在一個成功的敏捷式開發團隊是一件非常愉快的事,可是這種團隊其實非常罕見。大多數軟體團隊的狀況是:
- 這群人不那麼了解彼此工作能力,彼此工作能力實力有很大落差,但是他們個性容易相處。
- 有客戶,但是互動不頻繁,甚至可能會有點偏頗。更常見的是根本就沒有客戶,所有的需求來自於 marketing 或自行猜測。
- 我的 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
我真的很鼓勵團隊使用 github 或 JIRA,多使用一點號稱 agile development 的環境。這世界上已經有太多軟體團隊了,應該是減少一些團隊的時候。
真正的敏捷式開發團隊,可能會讓你嚇一跳,他們通常使用的工具都是最傳統的工具,因為他們不會花任何一點力氣在學習使用工具上面 ,他們會花力氣在利用工具來幫助溝通。
真正的敏捷式團隊,依然是會有大量的 document 的,他們懂得 document 的價值,不會寫無意義的文件,但是該寫的文件絕對不會錯過。
真正的敏捷式團隊,對客戶是很負責的,才能建立與客戶之間的信任感。所以他們會花大量時間在設計 SOP,確保 release engineering 的流暢。
真正的敏捷式團隊,所有人都有一致的 vision,他們會從 vision 開始設計 plan,他們了解 plan 本身不重要,但是 planing 是無比重要,一定要有 planing,而且一定是 PDCA (plan, do, check, react)這四個流程做得完美無缺。
馬的,這世界上太多的偽敏捷式團隊了,騙得小朋友團團轉,搞得我頭好痛。
沒有留言:
張貼留言