今天想來談談如何在循環中, 需要先進行設計嗎? 什麼? agile 不是不用設計, 直接就來開工了, 不是嗎?
這是很多人對 agile 的誤解, 認為 agile 就是不用設計. 因此很多老人家, 只要一聽到要採用敏捷開發, 就認為這是不可行的, 或者說這是妖言惑眾.
此外, 不只老人家擔心, 也很多敏捷擁護者, 也認為 design up front 不是 agile, 敏捷就是要先開始寫程式, 一邊寫一邊修改, 也就是 TDD + CI + refactoring 一起上.
真的是這樣嗎?
Uncle Bob 說: "agile 就是不做 design up front”, 這句話是狗屎, 這並不是 agile.
他說, Big Design Up Front (BDUF) 才是 agile 不建議的, 不可能一堆人花個數個月的時間, 然後做出一個複雜的架構設計, 這樣是可以 work 的. 你需要先做些架構設計, 但是要從 Little Design Up Front (LDUF) 著手, 把些必要的事情先決定好, 但是一次範圍不要太大, 然後快速確認是否正確
試想, 即使在 waterfall 的時代, 如果有人想要一次把架構設計到位, 這可行嗎? 不但曠日費時, 並且沒有說的準是否這些設計沒問題, 通常一部分出來後, 就先找人做些 POC, 確認這些想法是否正確. 如果不行, 或者有些地方不理想, 便再進行修改.
所以 agile 並不是發明新的做法, 他只是把之前行之以久, 並且有成效的做法, 把它加以強調. 可是冠上 agile 之後, 很多人就誤解它, 或是排斥它.