軟體架構・絮語

Automate everything, make life easier!

One-Week Sprint 的節奏

我曾在 iThome 的 2012 年度必看好書中,推薦 The Scrum Field Guide(當年是第一版,現在有第二版了)。當年看這本書時,還沒置身 Scrum 團隊的經驗,純粹是為了未來做準備,所以,對書中講的種種招數,只能默記在心,等待實務印證。 整本書非常精彩,但最讓我印象深刻的,就是駭人的 “one-week sprint" 論調: 當時雖然不甚理解箇中用意,也覺得很不可思議,但我是好學生(嘻),一直把 "one-week sprint" 當成心嚮往之的標竿,日後也不時把所見所聞拿來對照思考。 後來,接觸到許多流程思維:由 Toyota 引領風潮的 Lean...

READ MORE

API Design・閱讀材料

隨著業績蒸蒸日上,開始需要檢討既有 service APIs 的架構,以應付成長擴充的需要。但在動手術之前,必須先統一團隊成員的 API design 品質意識。所以,這又是我「讀書會」招數派上用場的時機了。此為其一。 幾位新人陸續報到,也需要一些訓練材料。此為其二。 於是,就有了這份閱讀清單。 由於時間限制,我只挑選能夠在四小時以內自行閱讀完畢、能夠在兩個小時以內集體討論完畢的素材。所以,這份閱讀清單,並不是最周全的,但應該足以闡述 "specification-driven development" 的觀點。 戴明說:「品質是內建的,不是檢驗出來的。」而...

READ MORE

Docker 導入:障礙與對策

《神雕俠侶》當中,楊過遭遇斷臂之禍,卻因禍得福,巧遇神雕,進而造訪獨孤求敗的劍塚: 劍魔獨孤求敗既無敵於天下,乃埋劍於斯。嗚呼!群雄束手,長劍空利,不亦悲夫! 劍塚埋了三柄長劍: 無名利劍:「凌厲剛猛,無堅不摧,弱冠前以之與河朔群雄爭鋒。」 紫薇軟劍(缺):「三十歲前所用,誤傷義士,不祥,乃棄之深谷。」 玄鐵重劍:「重劍無鋒,大巧不工,四十歲前恃之橫行天下。」 腐朽木劍:「四十歲後,不滯於物,草木竹石均可為劍。自此精修,漸進於無劍勝有劍之境。」 讀了這一段「前輩神技,令人難以想像」的描述,我一直有種感嘆: --- Quote: 2016-08-22...

READ MORE

與導入 Docker 有關的 UDE

TOC Thinking Processes 的 UDE (undesirable effects) → CRT (current reality tree) 推導過程,雖然燒腦,卻非常犀利,直指核心。私底下,我也很喜歡蒐集各種 UDE 言詞,畢竟高德拉特說:「總是要從人們最擅長的步驟做起,而每個人都最擅於發牢騷和抱怨。」(語出《絕不是靠運氣》p.303) 原始的 UDE 言詞,往往過於零碎,我喜歡先用 affinity diagram 之類的手法前置處理過,比較容易聚焦。 今年七月我在 DevOps Summit 2016 的〈從限制理論看...

READ MORE

軟體品質講座·閱讀材料

朋友對我在前一篇文章〈錯誤處理需要全盤策略〉提到的【軟體品質講座】讀書會內容感興趣。此為其一。 最近面試工程師時,談到他們經手過的案例,我都忍不住想引述這份閱讀清單。此為其二。 所以,就公開這份閱讀清單吧。 由於時間限制,我只挑選能夠在兩小時以內自行閱讀完畢、能夠在一個小時以內集體討論完畢的素材。所以,這份閱讀清單,並不是最周全的,但應該足以闡述「階層方式、全盤角度」的錯誤處理觀點。 Part Zero / 可以借來參考引用的投影片: [教材] 例外處理設計與重構實作班 (at Slideshare) Part I /...

READ MORE

錯誤處理需要全盤策略

繼上次讀書會之後,最近在替團隊安排第二次讀書會的材料。 這次我選擇的主題是【軟體品質講座】。 在蒐集、自炊閱讀材料的過程中,腦中一直想到當年翻譯 The C++ Programming Language 時,一直被洗腦的「要以階層方式、全盤角度考量錯誤處理」觀點,以及對 defensive programming 的保留態度。 搞定這麼一疊閱讀材料後,順便把以前 The C++ Programming Language 的說法調閱出來,做個對照。近 20 年前的觀點,現在來看,仍不過時。搭配這次讀書會精心蒐集的材料,對這種「階層方式、全盤角度」的觀點,掌握得又更徹底了。 以下摘錄...

READ MORE

從 Ansible 到 Docker:混血模式

自從 2015 年 4 月在 Docker Taipei 社群講了一場〈追求極簡化 Docker image 之路〉之後,在「極簡化 Docker」這條路上,另一條途徑 Alpine Linux 開始嶄露頭角。這種方式,漸漸凌駕過去蠻幹的手法,地雷減少,有顯著的流程優勢,品質上也不見得遜於長期被 glibc 把持的傳統體系。 我嘗試用這種手法重整過去的東西,得到還不算太差的結果。因此,一直希望能有機會再給一場類似【追求極簡化 Docker image 之路,Part 2】的演講。 此外,由於自己持續在使用 Ansible 來處理組態設定事宜,持續維護近 20 個 Ansible...

READ MORE

為什麼要追求極簡化的 Docker image?

今早在 Community Open Camp 的【從 Ansible 到 Docker:混血模式】演講過後,有人在聊天室提問: 請問為什麼要追求最小化的 Docker image? 其實,去年我在 Docker Taipei 社群主講〈追求極簡化 Docker image 之路〉的時候,曾如此開場:「一部分原因,是技術性的探討。經過這番探討,對 Docker 底層機制會掌握得更深刻,有助於更善用 Docker,也很自然會理解 Docker 與 VM 的明顯差別在哪裡。」 當然啦,那是一種極度保守的理由。因為在當時,「極簡化...

READ MORE

簡報者的小工具

自從去年一月看了 ihower 的〈講個秘訣:技術簡報的好用工具〉之後,我才想到,身為 Mac 用戶,我好像太疏於好好整頓自己的電腦,讓我在簡報時更順暢。於是,經過一番嘗試,我也建構出自己的工具組合。 後來,在演講或講課時,總會遇到有人問道:「william,你是用怎麼弄出 xxx 效果的?」每次簡報,屢試不爽;乾脆自己整理一篇文章好了。 註:此文只列出我最常用的工具,更完整的,請見 ihower 的〈講個秘訣:技術簡報的好用工具〉。 布幕 Desktop...

READ MORE

系統思考及換位思考,一例

其一 過去這一年,我針對 monitoring 議題發表兩次演講:〈Whoscall 的 Realtime Monitoring 經驗分享〉及〈Monitoring 改造計畫:流程觀點〉,可看出那段日子我的關注重點。 Monitoring,在傳統 value stream 來看,是偏向 Ops 這一端,發揮空間狀似沒有像 Dev 那麼寬廣。 其實不然。站在 monitoring 這個制高點,幫助我更深刻體會 lean thinking 及 TOC 都很注重的 “flow”。 以此視野看系統,我看到某些 services 問題,需要從研發環節下手,甚至是要將 QA 或 QC...

READ MORE