豐田的精益系統由兩大支柱構成。一為及時生產,即以拉動方式、小批量均衡化的生產,追求零庫存。一為自動糾錯(或稱內建質量),即將質量融入產品的設計與生產中,而非靠事后檢驗來提高,其核心思想是上游工序必須保證絕不傳遞瑕疵品。關于拉動生產,前文已經提了很多,鑒于質量問題的極端重要性,本文專門探討下這個內建質量體系。
首先,質量不應該是通過檢驗(測試)來提高的,我們僅僅用檢驗將不合格品找出來,并且根據檢驗結果來間接衡量質量情況而已,常見的檢驗方法有如下兩種:
1.最終檢驗:去數一下在生產的末端有多少件不合格品,然后加上流入客戶的不合格品,這樣可以得到一個不合格率,也就是不合格品在全部產品中所占的比例。但是這個數據不能夠用來說明過程,不能發現問題在哪里。這項指標在軟件業中稱為泄漏故障,但泄漏故障數只反應了軟件對外部暴露出來的質量情況,無法反映出軟件開發過程中的浪費。
2.清點內部報廢:清點在生產中丟棄和返工的不合格品。更精確一點,找出生產的每一個步驟中可能出現的問題,我們稱之為缺陷機會。使用這種方法,我們才能找出問題并將他們分等級,計算出每一百萬件產品中的缺陷率。這樣才會對工廠的生產能力有比較準確的認識。比如菲爾的工廠采用紅箱子機制后,頭一天就發現了20%的不合格品(一天內總共裝配35個斷路器,其中有8個需要返工),以前這些都是員工自行在修理,結果掩蓋了深層次的設計問題。這條在軟件業中就是技術債務、內部泄漏(代碼交給項目組測試內測后才發現的問題)、CI靜態檢查或者自動化測試發現的問題,關注這些才能對軟件的內在質量,以及項目軟件開發流程中的問題有更深的了解。
其次,為做到內建質量,需要滿足三條:
1.內建問題識別能力:任何時候,工人和機器都要有識別和檢查錯誤的能力。對應在工廠中采用實踐為紅箱子策略:找一些紅色塑料箱,然后把他們發給生產線上的每一個工人。同時告訴他們,不允許返工,如果發現了任何不合格品,不管是零件,還是來自于上一個工位的中間產品,都要把它放到紅箱子里面去。
2.問題可視化與及時處理:對于出現的任何錯誤,需要設法將其及時暴露出來,然后立即進行處理。對應實踐為安燈(Andon)系統:每個工位旁有一根繩子,稱為安燈繩,如果工人發現問題,將其拉動,一個信號燈就會亮起來,燈上數字對應著進行作業的工位,然后現場管理人員(一般是領班和負責的工程師)就會立即到該工位去確定問題,并協助解決問題。在這個系統中工人做的是發現問題并尋求幫助。如果管理人員能快速有效的解決問題,生產線就不會停下來,這樣管理人員和工人共同承擔了責任。
3.一條需要嚴格執行的紀律:當一個不合格品被發現的時候,不管是什么原因,如果一個生產周期里問題無法解決,必須停止生產線進行調查。
這三項要求環環相扣,對應在軟件業中,就是,一:開發人員需要有質量意識,和足夠的技術水平能識別代碼風險,對于發現的技術債務需要將其顯示暴露出來,這能讓團隊及時了解哪個環節出現了風險;二:需要有持續集成系統(CI),并且盡可能把代碼審查,自動化測試等功能加入,并且把CI檢查結果可視化給整個項目團隊;三:嚴格的CI紀律,只要CI失敗,其他人都必須停止合入代碼,直至問題修復。在整個體系中,這第三點至關重要,有些人覺得,有錯發現就行了,問題又不是我引發的,為什么需要我也停下來? 我覺得至少有如下幾個原因:首先,當問題出現后,其他人再提交新代碼,可能在前一個問題未解決前就帶入新的故障,最后導致整個系統的問題解決時間延長;其次,停止生產線對及時解決問題是一個正向壓力,這種壓力會促使代碼提交者更關注新提交代碼的質量(避免新提代碼破壞CI),同時會盡力提升代碼的提升次數同時降低每次代碼提交的數量(小步提交,即使出現問題也能在很短的時間內解決),當大家都采用小步提交技術后,又會進一步促進CI系統的完善和提升(加快CI的構建速度,縮短檢查間隙),從而觸發一個正向循環;第三,堅持這種紀律也是在向整個項目團隊宣貫質量第一的思想,不能因為趕時間而在質量上妥協,只有這樣才能真正降低項目的維護成本。而且,從另一個角度看,如果項目雖然口頭上天天喊質量第一,但在實際操作時,卻連CI紀律都無法貫徹,站在員工這邊,會怎么理解這個質量口號呢。
最后,在內建質量三項基本要求以外,我們還需要注意一些和人相關的問題,才能保證質量建設能夠持續改善下去,這些問題包括:
1.提升工人的問題識別能力,需要在系統思考上下功夫,讓工人把缺陷和上游工位的工作聯系起來,從整體上對好和不好的產品有明確認識。并能從以下幾個方面去找問題:
怎么知道所做的工作是正確的?
怎么知道沒有為下游工位制造問題?
碰到問題的時候,如何解決?
2.需要改變工人不關心質量的現狀。這里至少需要有一個機制讓大家可以提建議,而且管理層需要迅速的回應大家提出的建議。在回應建議時,有兩個注意事項。一是時間,不能超過一周,超過了,提建議者的熱情就會冷卻。二是內容,回應并不是一定要求在這么短的時間內解決問題,員工們真正需要的是管理層去和他們溝通。也即,"你必須把自己大部分的時間奉獻給現場和員工,否則,員工不會把他們奉獻給公司。"