軟體架構・絮語

Automate everything, make life easier!

與導入 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

從限制理論看 DevOps

自從寫了〈DevOps 核心元素的考古溯源〉一文,我就很想找個機會,好好闡釋 DevOps 的重要源頭:Lean Thinking。這個願望,在五月初那次兩個小時的〈有了 Agile,為什麼還要有 DevOps?〉演講中實現了。 不過私底下,還有另一個更大的野心:我想從 TOC (Theory of Constraints)(常譯為限制理論或制約理論)的角度,好好審視或詮釋一下 DevOps。 原因之一,這陣子一直浸潤在 TOC 世界中,不知不覺就會拿 TOC 心智框架來檢視萬物。有文為證: 向工廠管理致敬 向遊戲學習 轉大人,Part...

READ MORE

練字與程式設計

最近常常需要利用便利貼或紙筆思考。看了看筆跡,覺得⋯⋯呃,該開始重新練字了。 現在市面上看得到的範例及風格,比起只有張炳煌《硬筆書法》的當年,實在是進步太多太多了。 這是硬筆書法的文藝復興嗎? 最近常常趁思考的空檔,拿出紙張,甚至用自製的「斜十字格」A4...

READ MORE

演算法也有不神祕的一面(下集)

記得高中時,建中電研社社刊有一則笑話: 如果高斯 (Gauss) 小學時就學程式設計,他可能就懶得發明等差級數公式了,他會直接坐在電腦前,輸入: sum := 0 for i := 1 to 100 do    sum := sum + i end for 雖然是笑話一則,但也很貼切點出 algorithm(演算法;演算法則)的最原始用途:提供另一種解決數學題目的方法。 在前一篇文章〈運算思惟其實一點也不神祕〉中,我曾提到「運算思惟,目前公認有四大核心」,其中尤以第四核心最特別: 嚴格來說,運算思惟與其他領域(非 STEM 領域尤然)最大分野,就是演算法...

READ MORE