2020年3月25日 星期三

Changelog - Clean Agile


前言

現在這個世界什麼都離不開軟體, 開的車子裡面有軟體, 用的家電有軟體, 電腦, 手機, 手錶...任何你想得到的事, 軟體工程師因此成為成長最迅速的一個群體. 然而, 這麼多新人加入, 他們都很年輕, 沒有經驗, 帶領他們的人可能也只多了幾年經驗, 沒有太多東西可以傳承, 仔細想想, 整個社會都深度依賴軟體, 但大家對於開發軟體流程卻莫衷一是, 是件多麼危險的事. 現在軟體界, 大家都在講 Agile 流程, 但每家公司執行 Agile 的方式似乎都不一樣, 那麼, 究竟 Agile 是什麼?


Waterfall History

1970年代, 當軟體專案越來越大, 開始有人討論軟體流程. 一篇論文"Managing large-scale software systems"提出了 Waterfall 流程: Analysis, Design, Development and Test, 雖然原始作者在論文裡面原意是要批評 Waterfall 流程在現實中如何不可行, 但卻意外的大受歡迎, 可能很多人沒有讀完論文, 只看了論文開頭的第一張圖片吧 XD

Agile History

Waterfall 流程制霸了軟體界30年, 開始有一群人提出新的想法, "Agile" 浮出檯面. 關於 Agile 的基本想法, 就是以很短的work cycle產出, 並且驗證, 收集回饋. 一開始的 Agile 流程核心規範的是技術紀律: test-driven development, pair programming, simple design, refactoring, 確保每次cycle的產出都是有效的. 不過在2003年有了 certified scrum master class 後, Agile 開始變得越來越 PM 相關. 為此 "Clean Code"的作者寫了這本"Clean Agile", 試圖讓工程師重拾 Agile 的初心.

這真的是Agile嗎? 

當每個人都宣稱正在使用 Agile 時, 你該怎麼判斷"這真的是 Agile "嗎? 試著用以下三點判斷:

  • 每個cycle結束時, 我們是否真的有能夠上線的產出? 能夠上線代表有經過測試, 有文件, 沒有重大問題.
  • 在work cycle裡, 我們是否與stakeholder密切溝通? Agile 縮短 work cycle 是為了即早發現問題, 解決問題, 調整方向, 如果做決定的人不在這個流程裡, 那麼就違背了 Agile 的精神.
  • 我們是否有寫測試? 在 Agile 流程裡, 就是反覆的測試與重構, 才有辦法頻繁的出版, 並且確定每次出版不會改了這裡壞了那裡.

總結


Agile 的核心不在 daily stands-up meeting, 不在 user point, 這些都是工具而已. 核心在於紀律與共識, 在 Agile 提出二十年後, 讓我們回歸初衷.

Reference source:

https://changelog.com/podcast/367
https://www.youtube.com/watch?v=T4Td2vgrgsM

沒有留言: