技術管理閒聊:對事不對人
大家雙十節快樂!本週的技術管理電子報,剛好有兩個案例,想來聊聊「對事不對人」這件事。
第一個案例是 Facebook 在 10 月 4 日服務中斷了 6 個多小時的事情。技術上的原因是因為工程師下錯了指令,而自動化檢查的程式有 Bug 沒有發現,導致 BGP 消失而外面完全連不上 Facebook。事件的詳細說明蠻多地方都有,Facebook 自己也有在工程部落格上說明,有興趣的話可以了解一下。但就算是這麼嚴重的問題,Facebook 對這個問題的看法是:
Every failure like this is an opportunity to learn and get better, and there’s plenty for us to learn from this one. After every issue, small and large, we do an extensive review process to understand how we can make our systems more resilient.
對 Facebook 來說,所有的問題都是讓團隊學習,如何讓系統更有適應力的一個機會。因此,在每次發生問題之後,Facebook 都會召開檢討會議,而這個檢討會議並不是檢討某個人,而是重新檢視系統為什麼會發生這個事情,可以怎麼調整來避免類似的事故再度發生。
另一個案例是九月底2.5萬份教育部學習歷程檔案遺失的事情。技術上的原因是因為工程師在設定VM的時候,誤用了「非永續性儲存裝置」,導致系統當需要安全性更新而重開VM的時候,部份的資料因此而消失的狀況。這一樣是個 P0 (Priority 0) 的問題,但網路上許多人的反應是很簡單的:「有領(公家)錢的人要來負責。」
當然有人出來負責是必要的,Facebook 也會有人出來負責,但負責的這個人,他所需要負的責任,我認為應該是「用技術的方法,提出降低未來風險的作為」。這是因為:
事情已經發生,造成的損失已經是沉沒成本,糾結在這個成本上並不會讓整個系統更好。
排除人為蓄意的狀況,如果系統有問題,則任何人來執行都可能會發生同樣的事故,因此換人並不能解決根源的問題。
工程師的強項應該是用技術方法來解決問題、降低風險,而換人並不是一個技術的方法。
針對人的錯誤指責,會造成「多做多錯,不做不錯」的心態,最後結果就是團隊只敢做自己熟悉的事情,不敢嘗試用創新的方法來解決問題。
這也是當重大交通事故(例如墜機)發生後,最後產出的事故調查報告都會有一句話:
重大運輸事故之調查,旨在避免運輸事故之再發生,不以處分或追究責任為目的。
我認為這是「對事不對人」的最好的解釋了。