當托尼針對一個耽誤了期限的項目主持了“五個為什麼”討論後,轉機出現了。這次會議充滿見地,牢牢吸引了眾人,並且最後得出了切實的按比例投入的計劃。托尼解釋說,“這次成功要歸結為更有經驗的負責人和與會者。大家都知道‘五個為什麼’是什麼,而且我有效地把握了大家的討論方向,避免離題。這是一個轉捩點。就在那一刻,我知道‘五個為什麼’會成為一種新的工具,必將對我們團隊,乃至公司業務的全麵成功產生真正的影響力。”
“五個為什麼”表麵上看起來是關於技術問題和防止錯誤發生,但是,隨著團隊成員排除了這些表麵上的浪費,他們對如何一起工作產生了新的理解。托尼是這樣說的:“我敢說我發現‘五個為什麼’超越了對根本原因的分析,它揭示的信息讓團隊成員形成統一的理解和視角,把他們更緊密地聚攏在了一起。很多時候,問題使人疏離;‘五個為什麼’的效果正好相反。”
我請托尼提供一個IGN近期成功的“五個為什麼”的分析案例。他的報告如下。
為什麼不可以添加或編輯博客裏的帖子?
回答:任何一個對文章內容應用程序接口(API)的發帖要求(寫入)會收到“500錯誤”提示。
按比例投入方案:吉米,我們會設法解決API的問題,但是首先讓我們的內容管理係統(CMS)對用戶更寬鬆些。要提供更好的用戶體驗,就得讓用戶能添加並編輯草稿,不會收到出錯信息。
為什麼內容API會出現“500錯誤”?
回答:bson_extgem和它所依賴的其他gem不兼容。
按比例投入方案:金,把這個gem去掉(已經解決了中斷問題)。
為什麼這個gem不兼容?
回答:在原有版本上,我們加了一個新版的gem,沒料到應用程序意外地開始使用它了。
按比例投入方案:班內特,把我們的rails應用在gem管理方式上改成捆綁模式。
為什麼我們在開發中添加了一個新的gem版本卻沒有測試?
回答:我們不認為在這類情況下需要測試。
按比例投入方案:班內特和吉米,在API和CMS中加入一段單獨測試或功能測試,以便將來可以發現這種情況。
為什麼我們添加了本來不打算馬上使用的gem?
回答:為了準備編碼推送,我們想在開發環境中準備好所有新的gem。盡管我們的代碼部署完全是自動的,但gem不是。
按比例投入方案:班內特,在持續集成與持續部署的流程中,自動管理並安裝gem。
額外收獲——為什麼我們在周五晚上進行開發工作?
回答:因為沒人說不可以,這時候對開發員準備周一的部署工作而言時機恰好。
按比例投入方案:托尼,向團隊發個通知。周五、周六或周日都不做開發改動工作,如有特例必須由工程開發部副總裁戴維批準。當全自動持續部署流程到位,我們再來重新評估這條原則。
根據這次“五個為什麼”的討論和我們的按比例投入方案,我們的部署變得更簡單、更迅速,我們的流程不再允許開發員把會導致意外後果的gem放入開發係統。確實,我們再沒有遇到其他類似問題。像你所說的,我們加強了自己的“集群免疫係統”。
沒有“五個為什麼”,我們不可能發現以上的這些信息。我想,我們大概會告訴那個開發員別在星期五晚上幹蠢事,然後就完了。正如我早先強調的,一次好的“五個為什麼”討論帶來兩種產物,學習和執行。從討論中得到的按比例投入方案固然價值可觀,但其間的學習過程看似不顯眼,對開發員和整個團隊的成長卻意義非凡。