產品級敏捷 2.0: 使用者的想法與產品之間的那條最短的路徑
2017.7.4, 深圳, Ken Fang
前言:
簡單設計只是寫文件, 而不能指導開發, 這樣的簡單設計, 就只是在瞎折騰。
但是, 軟體開發的過程中, 不做簡單設計, 軟體開發就永遠做不好。
簡單設計能指導開發, 指的是:
1.簡單設計能使開發人員, 在開發前, 有一清晰且明確的指導地圖; 開發人員沿著這指導地圖, 便可開發出高質量的程式碼。使得程式碼不僅能符合各個質量屬性上的要求, 更能使程式碼具備好的 “隔離 “; 不會因後續需求上的變更, 而產生新的缺陷或失敗。
2. 簡單設計能使開發人員, 在開發前, 便設計出測試用例; 使得開發人員可明確的定義, 每日所開發的 TASK, 完成的標準是什麼? 需通過那些測試用例的場景?
3. 簡單設計能使開發人員, 明確且客觀的做出結論: 今天該完成的 TASK 完成了沒? 假如, 沒完成, 真正的問題是什麼? 該尋求什麼樣的協助?
本文:
簡單設計要如何做?
有的人是天生就會的。
而大部分的我們, 簡單設計的思維, 是要經過一段時間鍛練的;不是天生就會的。
Matei Zaharia; Spark 開發的主導者。
Matei 當在用 Scala 開發 Spark 時, 並沒有做所謂的簡單設計。
Matei 在開發前, 會先在腦中清楚的浮現出軟體的架構。
Matei 便照著腦中的軟體架構, 開發完了一行又一行偉大的程式碼。
Matei 每次在開發完一段程式碼後, 便會根據程式碼的弱點, 設計所謂 “災難測試” 的測試用例;測試自己所開發的程式碼, 在架構上的弱點為何?
敏捷開發與軟體工程實踐;如:Story 場景樹;對 Matei 而言, 是完全沒有 “必要” 的。因為, Matei “天生” 就會簡單設計了。
Story 場景樹, 主要是要幫助開發人員, 鍛練 “簡單設計” 與 “測試用例設計” 的思維;當經過一段時間的鍛練後, 開發人員自然而然的, 就可沒有 “必要” 的再使用 Story 場景樹, 進行簡單設計。因為, 開發人員已能將軟體架構浮現在腦海中, 並能自然而然的思考出測試用例。
為何?
因為, Story 場景樹夠視覺化, 夠輕量級;放在ㄧ個腦袋裡, 綽綽有餘。
[圖一: Story 場景樹: 視覺化、輕量級的開發人員指導地圖]
結論:
擁有 “簡單設計思維” 的開發人員, 永遠是在用 “腦” 驅動著手, 產生一行又一行偉大的程式碼。之所以稱之為一行又一行偉大的程式碼, 是因為, 每一行程式碼永遠都是能隨著時間的推移, 而能持續的演進; 演進的過程中, 卻依然保持著健康、強壯。偉大的程式碼就宛如是擁有強健生命的有機體。
永遠只會用手寫程式碼的開發人員, 產生的程式碼從一出生 (第一個版本), 就發育不全 (缺陷百出)。毫無疑問的, 隨著時間的推移, 病只會越來越重 (缺陷、失敗越來越多) 。
將能鍛鍊 “簡單設計思維” 的方法、工程實踐, 放在永遠只會用手寫程式碼的開發人員的面前時, 所會發生的場景, 就宛如是圖二中, 那位拉車的…
拉車的永遠說...我很忙。
拉車的永遠說...先證明輪子對我是有價值的,我才會考慮用輪子。
拉車的永遠說...我現在牛逼的很,為什麼要用輪子?
人生是選擇題, 不是是非題; 做出什麼樣的選擇? 便過著怎麼樣的人生; 產出什麼樣的程式碼。
[圖二: 拉車的: 我很忙…]