有些書的序我會跳過不看, 但這本書的序我強烈建議一定要看, 它寫了一相當有價值的東西。
本書的英文書名叫:重視實效的程序員(Pragmatic Programmer)
什麼是重視實效?
在現在這個快速變化的世界, 昨天的好架構明天可能就變成反模式, 程式語言及工具也推陳出新, 許多老的工程師會嘆跟不上時代, 或是在這行實在太累了, 永遠都要學習。
撇開終生學習這個高大上不談, 程式開發還是有些特性是不太會變的, 本書要講的就是這些可以幫助大家成為更好的程式設計師的一些方法。
什麼是重視實效? 意思是你不該局限于任何特定的技術, 而是應該擁有足夠廣博的背景及經驗基礎, 以讓你能在特定情況下選擇好的解決方案。
我喜歡這種書是因為你可以在任何時候回來翻它, 翻完後可以得到更多的靈感。
程式員的修煉之道 - 序

編程是一種技藝, 你每天都在創造小小的奇蹟。
編程是艱難的工作, 不存在最佳解決方案這種東西
能夠存在的只是在某些特定情形下更為適宜的系統
注重實效
-
意思是你不該局限于任何特定的技術, 而是應該擁有足夠廣博的背景及經驗基礎, 以讓你能在特定情況下選擇好的解決方案。
-
注重實效的程序員不僅要完成工作, 而且要完成得漂亮。
注重實效的程序員有以下特徵
- 早期的採納者/快速的改編者
- 好奇
- 批判的思考者
- 有現實感
- 多才多藝
但, 最基本的特徵是
- Care About Your Craft 關心你的技藝
- Think! About Your Work 思考! 你的工作
挑戰
- 在你做某件事情的時候思考你在做什麼。
- 對你每一天、每一次開發上所做的每一項決策做出批判評估。
你在大型團隊中, 仍然可以是注重實效的個體
是木匠、石匠、雕刻工和玻璃工之類的手藝人
超越了純粹機械方面的一個整體
軟體工藝的支柱: Care、Learn、Practice、Share
它是一個持續的過程
改善: 持續地做出許多的小改進
豐田形學: Improvement Kata
台灣著名的鋼琴家「Pianoboy」高至豪
- 你有什麼夢想?
- 如果你願意為了它,努力數十年而不停止
- 如果你願意努力推銷自己的夢想10年,既使遇到無數的否定和嘲諷還是願意前進
- 如果你願意堅信你的判斷,既使放棄穩定的薪水和工作,既使失敗,也願意
- 我相信大部分人,絕對會比我更成功。
Section 1. 如果重來, 我會這樣導入持續測試
什麼是持續測試?
持續測試是一個過程, 它將自動化測試放進軟體開發之中, 不斷的反覆進行, 以期儘早的業務風險的回饋。ref: 持续测试与自动化测试的区别是什么?
Automation Test 不是敏捷導入所要做的第一件事
在產品設計時就提供實例化規格
Why?
How?
讓 User 做測試
這一點是有趣的地方,提到利用金絲雀部署 -> Monitor (建立指標) -> Feedback --> Fix用原生的測試框架
測試人員的技術與 Develop 重疊, 彼此能有正向的聯結 (減少 solio)ATDD
對 Develop Team 的技術及能力要求很高, 不容易做到目標先不對準 Live Documents, 而是做好 acceptance criteria
Git Branch Flow
Git Flow 的問題是 Long-lived branches, 不利整合用 tunk branch 可以強迫團隊合併持續整合
導入樂高建構法, 寫完什麼就 commit 什麼, Feature 如果不要發, 就藏在 debug mode 裡
持續測試的週期
<–需求–|--產品設計–|--開發–|--測試–|--監控結果–|--維護–>Section 2. 從工程角度, 挖出產品風險
讓團隊了解指標的意義
做這些事的過程:
不要指望明星球員
吃狗食
流程導入的建議
Section 3. Agile UX
設計帶來改變
設計用來協助解決 Fuzzy Problem ===> Innovative Solutions1. Mind the Gap 全區思考, 留意間隙
有意識的留意 Gap
如何消除 Gap?
辦 Workshop 的方式
2. Run with Brian 謀定而後動, 知止而有得
3. Close the Loop 反覆打磨, 止於至善
幾個推薦的 Process or User Group