Feb. 26 15:00~16:54
Clean Agile
《Clean Agile: Back to Basics》是Robert C. Martin(Uncle Bob)最新著作,這本書算是他老人家對於敏捷開發的歷史回顧,以及他對於敏捷開發應該長成什麼樣子的個人意見。
***
第1章
第1章Introduction to Agile談到談到敏捷的歷史,從1880年代的Scientific Management(科學管理)演變到Waterfall,再到1980年代末期~1990年代早期的敏捷改革時期,Uncle Bob提到當時多個輕量級軟體開發方法的興起,到2001年17位輕量級流程愛好者在美國猶他州雪鳥滑雪聖地的聚會,誕生了敏捷方法與敏捷宣言。
第1章最後提到Ron Jeffries所畫的The Circle of Life這張圖,它表達了XP的12個實務做法,《Clean Agile: Back to Basics》這本書的核心基本上是圍繞著The Circle of Life,由外而內分成三章解釋這張圖。
讀完《Clean Agile: Back to Basics》之後,Teddy覺得Uncle Bob所謂的Clean Agile底子裡其實就是XP,這很可能是因為Uncle Bob一開始接觸的敏捷方法就是XP,而且他是個TDD堅定信仰者的關係。
▲The Circle of Life,節錄自《Clean Agile: Back to Basics》
***
第2章
第2章The Reason for Agile,對Uncle Bob來說,理由很簡單:「讓自己以及軟體開發這個行業變得更專業」。如果你夠專業,你就有勇氣可以拒絕長官不合理的要求,你敢說No。你軟體會變軟,你會持續改善與學習,且無懼改變。你的軟體品質會很好,QA應該找不到任何bug。客戶與開發人員各遵其職,相互合作。基本上算是一種軟體開發的大同世界XD。
***
第3~5章
接下來的三章分別介紹The Circle of Life的三個圈圈:
- 第3章Business Practices:介紹Planning Game、Small Releases、Acceptance Tests、Whole Team這幾個實務做法。本章一開始簡短的介紹Story和Story Point,以及軟體估算的幾種方法。然後提到Velocity、小規模釋出、驗收測試以及敏捷團隊的組成。接觸過XP或Scrum的朋友讀起來應該沒什麼困難。
- 第4章Team Practices:這一章提到Metaphor、Continuous Integration、Collective Ownership、Sustainable Pace,除了Metaphor以外其餘三個實務做法都很容易理解。Metaphor在XP剛提出的時候其實很抽象,不好解釋。但後來有了Domain-Driven Design(領域驅動設計;DDD)之後,Metaphor就有了一個完美的解釋方式,就是DDD裡面的Ubiquitous Language(通用語言)。
- 第5章Technical Practices:這一章提到Simple Design、Pairing、Test Driven Development、Refactoring,算是軟體開發人員比較熟悉的內容。
***
第6章
第6章Becoming Agile,這一章原本是最吸引Teddy的章節。如何變得敏捷?Uncle Bob又回頭偷Kent Beck的四個XP價值觀:
- Courage
- Communication
- Feedback
- Simplicity
這章還有三點Teddy覺得很有趣的部份
- Transformation:敏捷轉型是這幾年很熱門的話題,作者認為˙(大型)組織的敏捷轉型很多都是失敗收場,因為「中間管理層」所存在的目的與敏捷精神相違背,因此他建議「產生新的組織來實施敏捷而非將現有組織轉型」。
- Coaching:近幾年敏捷圈很流行的Coaching(敏捷教練),Uncle Bob的看法異於常人,他覺得敏捷團隊不需要,或是只有偶爾需要聘請教練。
- Agile in the Large:Uncle Bob認為敏捷就是為了解決中小型軟體開發團隊所誕生出來的方法,所以根本沒有所謂「大規模敏捷」的問題。因為大規模團隊合作的問題在5000年前已經被解決了。
***
第7章
第7章Craftsmanship,本章不是由Uncle Bob執筆,而是「外包」給寫了《The Software Craftsman: Professionalism, Pragmatism, Pride》的作者Sandro Mancuso,寫得出乎Teddy意料之外的好。
Software Craftsmanship Manifesto(軟體工藝宣言)在2009年提出,Teddy之前一直覺得既然已經有敏捷宣言了,為什麼要畫蛇添足?是要另立山頭佔領地盤嗎?
廣義來看它可視為一種對於敏捷宣言的補充說明,身為一位軟體工程師,Software Craftsmanship Manifesto 的內容原本就是自己一直以來所重視與實踐的方向,落實敏捷不就是這樣嗎?!
還真的不是,敏捷經過這麼多年的演化,即使只將敏捷限定在軟體開發組織中,很多時候還是偏向A Name Without Quality,變成一種口號與行銷工具。所以這章重回敏捷軟體開發的初心,軟體工藝,也算是呼應了Uncle Bob在第二章所提到的專業。
***
結論
這本書提到很多敏捷這個詞被提出前後的歷史故事,以及重新詮釋XP的12的實務做法與4個價值。雖然書中對於Clean Agile的看法可能與現今主流趨勢相差甚遠,但這應該是作者有意為之的結果。從正面來看,可以讚賞作者不忘初心,方得始終。從負面來可,可以批評他食古不化,沒有與時俱進。
看完《Clean Agile: Back to Basics》,Teddy立馬買了《The Software Craftsman: Professionalism, Pragmatism, Pride》,且興起把當年沒看懂的XP系列書籍拿出來再看一次的衝動。
▲年輕時購買的XP系列叢書,現在回頭讀應該比較看得懂吧XD。
***
友藏內心獨白:是初心不是粗心。