軟體架構・絮語

Automate everything, make life easier!

用 POOGI 角度看 Scrum 案例

手中有 hammer,看到什麼都覺得像 nails。 很神奇,雖然我在看的是 Scrum 之父 Jeff Sutherland 寫的《Scrum:用一半的時間做兩倍的事》第六章,但卻一直嗅到 TOC 聚焦五步驟的蛛絲馬跡⋯⋯ Medco 公司有一個原訂一年要竣工上線的專案,整個華爾街都在看,但幾個月後,專案無明顯進展,眼看半年後就要跳票了,大家卻束手無策: It took the company nearly six months to figure out that they couldn't do it on time. Their calculations...

READ MORE

TOC 瓶頸處理九大原則

高德拉特初試啼聲之作《目標》,最為人津津樂道的,不外乎是「聚焦五步驟」(又稱 POOGI)及「鼓-緩衝-繩」(Drum-Buffer-Rope; DBR)。 此兩者都是流程,都是可立即實施的方法。 不過,在進入流程之前,有沒有更基本的現象觀察及原則歸納,可讓我們在運用這些流程時,更具方向感,不易走偏?畢竟,不懂原理,貿然盲目依循流程,並不會增加成功機率,反而可能因為不明就裡,不知變通,導致無法排除障礙,進而放棄整套方法。 高德拉特在《目標》書中,曾藉由鐘納 (Jonah) 之口,對主角羅哥 (Rogo)...

READ MORE

Sprint 的 dependency

「假設鄉民們只有時間讀一本 Scrum 的書,要讀哪一本好呢?」 Teddy Chen 說:「Essential Scrum 這本書,對於 Scrum 的介紹,是目前市面上寫的最好的一本。」 所以,從這本書取材,應該頗具代表性。 這本書第 19 章,舉了一則 sprint backlog 例子。如下圖所示,此團隊承諾在此 sprint 中要完成 4 個 features,總共 21 個 story points,初估工時 150 小時: 看到這例子,不禁好奇,面對這些拆解好的 activity/task,一日、兩日、三日下來,task board...

READ MORE

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

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

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

READ MORE