如何對待工程師團隊犯錯誤

昀哥 2021年5月

首先我把話撂到這兒:

如果針對工程師團隊犯的每一個錯誤都錙銖必究,以罰代管,那也就不需要這種管理團隊了。罰,誰不會罰?!管,你會嗎?!

 

一.犯錯誤是什麼狀態?

幹活的纔會犯錯,不幹活當然不會犯錯。

2002年我剛做技術總監,依託於微軟的COM+服務做分佈式服務治理,面向全國提供一項移動數據企業級服務,每天就像坐在火山口,如履薄冰如臨深淵。

你說我有沒有責任心?肯定是有的。每天都在上下班路上閉着眼覆盤代碼和架構(那時候C++程序是基於COM+和MSMQ服務的鬆散耦合多服務多節點協同模式),腦海中就像《後翼棄兵》裏一樣打開了一屏屏代碼和日誌的視圖上下翻動,絞盡腦汁想有什麼可以優化的地方,還有哪些地方可能會引發內存泄漏或線程安全。

你說我有沒有壓力?當然有啊。恐懼和焦慮伴隨着我,讓我懼怕聽到短信告警聲和電話鈴聲。手機裏常備一條上行短信指令,隨時隨地準備上行短信,遠程重啓核心服務。

你說我態度端不端正?非常端正。服務有隱患,我特別願意承認,特別願意改。我曾經說過,實事求是,是工程師團隊的最低道德要求。但在沒有更先進的架構級解決方案出現之前(比如十年後出現的Redis、Dubbo、Docker等史詩級解壓作品),我只能在原有方案基礎上修修補補。

有此親身體會,我遇事都是相信除了極個別人之外絕大多數工程師都是榮譽感很強的,也是非常不願意看到事故發生的,更會在第一時間開動腦筋定位和解決問題,用不着領導催。

 

二.如果換成是我,我會犯這個錯誤嗎?

有一次線上嚴重漏測造成了比較大的影響,我該責怪誰呢,產品、研發、測試?

我把這個項目的測試用例拿出來仔細看了一遍,把測試用例評審會議紀要又都翻出來看了一遍。最後我的結論是,如果把最後的看門人換成是我,我編寫的測試用例,還與產品和研發都評審了幾輪測試用例,在這種情況下也沒有能查缺補漏提前發現,那說明只能亡羊補牢,補上測試用例,用測試用例來確保每次更新迭代都能複覈這個路徑。還能怎麼辦?
態度有問題嗎?

態度有問題,可以處罰。

態度如果沒有問題,那就是能力有問題。

能力有問題,那也是領導的管理問題。

板子應該打到領導的屁股上,要麼是領導沒有預見性,要麼是領導沒有輸出工具,要麼是領導沒有培訓到位。

領導沒有預見性怎麼辦?換領導啊。預見性這種東西,真的是天賦。

沒有輸出工具怎麼辦?亡羊補牢爲時未晚,趕緊總結方法論,全面自動化。

沒有培訓到位怎麼辦?從這一刻開始,認認真真逐字逐句地死磕RCA報告制度,讓每一次錯誤變成有意義的共同記憶。

如果這些都做了,那追究責任的話,也只能“壓實”分管領導的“主體責任”了。

 

三.技術歸零 管理歸零

出了事故,處罰誰?

罰基層員工?

罰部門主管?

罰分管高管?

罰之前先搞清楚目的。

罰是爲了不再發生,對吧?

可在IT生產上,往往是你要是知道這麼會死你就不會死,往往是死了才知道原來還有這種死法~
面對錯誤,有兩種領導。

第一種,成功領導。成功領導會問你還需要什麼資源支持,喜歡從錯誤中吸取教訓,舉一反三,構築內功,絕不再犯。

第二種,普通領導。而普通領導則既不能技術歸零“定位準確、機理清楚、問題復現、措施有效、舉一反三”,也不能管理歸零“過程清楚、責任明確、措施落實、嚴肅處理、完善規章”,反正就是員工你不對,你錯了,你疏忽大意,你搞砸了,你要對此負全部責任。


有一年在一個重要節日的晚高峯,我們的驗券核心服務突然出現嚴重超時問題,不僅僅是我,連業務方都派了代表蹲守在排查人的旁邊,大眼瞪小眼,你看我我看你,但是經過了兩個多小時的排查,各種服務重啓無效,代碼看了一個遍,始終找不到問題原因。在排除了所有的不可能之後,無論剩下的多麼難以置信,那就是真相。終於發現是偶然間把測試環境的 MySQL 數據庫端口號配置帶上了線。因爲測試環境的服務器資源緊張,所以驗券的核心數據庫 MySQL 端口號不是默認的 3306,但兩三年來他們一直如此,測試環境和生產環境就是不一樣,從未因此出錯。這回把錯誤的端口帶上去之後,生產環境的驗券組件連接數據庫超時之後進入了另一個業務邏輯(這段邏輯還包在一個C++庫裏,多年都未動過,所以第一時間沒有懷疑到這裏),倒是也能驗券,但損失了等待超時的時間,從而讓商家無法容忍。

怎麼辦?

後來我要求研發協作平臺必須實現一個特性:上線的時候必須做到一包(注:打包的包)到底,一鏡(注:鏡像的鏡)到底。具體指的是,一個代碼分支對應的一個包(或鏡像),可以流經測試環境,直接上生產環境,一路穿行,全程無需手工干預,無需手工改配置文件,無需重新打包。一鏡到底,就要求配置與代碼分離,與環境有關的配置不能存儲在工程的配置文件裏。

我再也不相信測試通過後的二次打包。一次兩次上線可能不出錯。一千次一萬次上線呢?一鏡到底是保證我們不再次死於非命的保命良方。而且系統即流程,要把這個最佳實踐做實到系統裏。

 

四.小結

言而總之,總而言之一句話,壓實分管領導的主體責任,同時讓災難成爲團隊的寶貴財富而不僅僅是罰款和心理負擔。

 

-EOF-

附圖:

攝影師:K. Treetrong

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章