千呼萬喚始出來,認識許久的前輩、部落格 Complete Think 的主人 Rick 大大終於出書了。隨著新書資訊已經對外公開,我也終於可以把這個好消息分享給大家了。以下就全文獻上我為 Rick 的著作《SRE實踐與開發平台指南》所寫的推薦序,希望大家會喜歡。
啊,想要買書的這邊請喔!購書傳送門:《SRE實踐與開發平台指南》
Complete Think—知識工作者都必須學習的專業能力 如果你身處在 IT 或軟體開發相關產業,你可能會聽過下面的這些經典問題「星期五下班前可不可以部署?」、「為什麼老工程師要用註解的方式留下目前用不到的程式碼?」、「OOXX很潮,我們要不要用?」⋯⋯當你遇到這些經典問題時,不知道你第一時間的反應是什麼?是立即帶著(正面或負面)情緒回答呢?還是一笑置之?又或者是你會先退後兩步,釐清問題的範圍、全貌及背景資訊,然後再回答問題呢?
Rick Hwang,一位我有幸在社群中結識亦師亦友的前輩,「Complete think」不僅是他個人技術部落格的名稱,也是他個人思考方式的最佳寫照。如果你問我什麼是現代知識工作者都必須學習的重要能力,我認為答案會是「如何思考、看透問題背後的問題(QBQ)、洞悉問題本質、以及建構自己的知識(思維)體系」,而在 Rick 身上,我看見了這些能力的真實體現。回到前面的經典問題,如果是讓 Rick 來回答它們,你絕不會聽見「等到你老了,就知道為什麼要這麼做」,反之你會看到他清楚的陳述問題背後的問題,並提供具有清晰前提要件和背景資訊的完整論述。
有沒有一本書,都還沒進到正文,只是閱讀作者給讀者的「如何閱讀這本書」,就令人體驗到受益無窮和開啟思維的體驗?有!就是 Rick 的這本《SRE實踐與開發平台指南》。這本書乍看是在談論如何實踐 SRE,實則深入探討了能幫助團隊和組織運作順暢的各種架構和原則。
即便你不是 SRE,但只要你仍在 IT 或軟體開發相關產業,你絕對不能錯過這本書。而如果你已經是 SRE,你又不希望自己只是一位 Server Reboot Engineer 或 Service Restart Engineer,那麼你最好說服整個團隊一起結伴細讀這本能幫助你們學習 Complete think 的好書。學習作者是如何運用矩陣思維、從不同的層次來看待各種問題與現象,從更宏觀全貌的角度進行思考,明白如何依據自身的時空背景,找到適用於你們問題的「適切答案」。
最後,讓我再問一次「星期五下班前可不可以部署?」,想知道答案嗎?去找吧!Rick 已經將一切的答案都放在他的書中了!
—— DevOps Taiwan Community 志工 / 前 Organizer 陳正瑋(艦長)
(再次附上購書傳送門:《SRE實踐與開發平台指南》)
在休養生息的倒數日,找來電影《薩利機長:哈德遜奇蹟》一起度過。雖然不是好萊塢動作爽片,但劇中包含感人、激勵人心的劇情,以及關於心理健康、創傷的演出,還有最重要的面對危機事故的正確態度。這些內容反而令人想要再次細細回味這部電影。
(有部分劇透,請慎入)
(本文同步發表於 Medium )
 (Photo by Smit Patel on Unsplash)
劇情主軸為全美航空的一架班機剛起飛沒多久即遭遇鳥擊,因而導致失去動力,在此狀況之下,薩利機長判斷必須水面迫降於哈德遜河上,成功迫降的機長被眾人視為是英雄角色,但負責事故調查的「國家運輸安全委員會」,則質疑機長的這項決定,認為這可能是錯誤的決策,並且在事故當時亦可能有人為疏失。而最終電影的高潮即是在最後的聽證會上,薩利機長反敗為勝證明自己的判斷是正確的。
「若你想要找出其中的人為疏失,那麼你便不能將人性從中抽離。」 (憑印象記憶的劇中台詞)
在空難之後的事故調查,透過黑盒子及收集到的數據進行電腦模擬及真人駕駛測試。最初呈現在聽證會上的真人駕駛測試顯示在當時的情況下,機長擁有足夠的時間能夠安全返航,無需進行高風險的水上迫降。但薩利機長卻在聽證會中一針見血的點出這些模擬測試所欠缺的關鍵因素——人性。
從來沒有機長受過訓練,學習過「如何在低空遭遇鳥擊且動力全失時該如何因應。」,但負責擔任真人駕駛測試的駕駛員在聽證會之前,卻早已被清楚告知情景,並已練習過該情境 17 次,因此才能臨危不亂的做出完美的因應動作,將飛機返航降落於跑道上。這正是模擬測試與真實情境的最大差異,在有限時間、高度壓力的情境中,當事人是否依然能夠迅速、理智地做出正確的決策與判斷。
雖然這是一部關於航空業飛機事故的電影,但其中關於事故處理的態度卻值得借鏡。事實上也確實是如此,航空領域因為關係到人的性命,一架飛機若發生事故,很可能影響到超過百人的生命安危,因此為了避免發生意外及減少人為疏失,在航空領域中已經年累積出許多的方法、原則,而這些經驗也經常被借鏡至其他領域,例如劇中遭遇事故之後機長與副機長的互動即是其一,在事故當下,飛機操控權轉回由機長主控,同時副機長負責開始實施標準應急動作,而副機長即將進行的所有操作皆會口述,並由機長再次覆述或確認,這樣的互動其實在醫療領域中也經常能見到。
而劇中最令人敬佩的是薩利機長在事故當下所保持的沈穩、不慌亂、冷靜、理智的態度。這正是任何人都該學習的地方,因為唯有如此,才能正確、迅速的分析現況,在可行方案中找出最大的生機。
如將場景換成 IT、軟體業,試想在公司新產品的上線時刻,伺服器卻立即出現異狀,導致使用者的不良回饋開始大量湧入,身為工程師的我們該如何因應此種狀況?我們也有辦法保持冷靜嗎?恐怕這並不是一件容易的事情,能夠令人保持冷靜的因素,除了個人擁有的個性、性格的特質之外,還有另一項關鍵因素——「經驗」。
經驗可以分為兩個層面,一個即是如薩利機長一樣,駕駛飛機的年資已超過 40 年,充分累積該領域足夠的經驗及敏感度。另一個是特別針對事故所進行的案例分析與事故演練。事故分析、災難還原演練,每個人都知道這些是重要的動作,但有多少人能夠確實的實施?而在電影中即有一段劇情是薩利機長表示自己會定期閱讀其他班機的事故報告作為學習。
而在 Google 的《SRE》這本書中我們也能看見,原來 Google 的 SRE 們被要求、也被給予足夠的時間完成事故分析報告,並且報告必須由資深者及跨部門、跨領域者協助複閱以求完整。除此之外也會定期以模擬劇的方式,將經典的事故報告拿出來作為情境演練。
這些動作都有助於我們累積經驗。甚至更進一步,我們應該要擁抱事故,將其視為是正常任務的一環,因為事故隨時都有可能發生。這也正是現在逐漸被人提及的概念「Chaos Engineering」。
除了前述的內容之外,在這部電影中還有其他值得討論的內容,例如:
如何區分你在事故當下的判斷是來自深厚經驗的累積,或僅是毫無根據的直覺? 如何建立因應事故的標準程序,同時接納其他的可行備案? 專業人士應該擁有之不獨自邀功、不咎責(對事不對人)、當責(accountability)的態度。 你的團隊是建立於一兩位英雄角色,或你建造的是一組能互信、互助、值得信賴的團隊。 機器(Monitoring)可能會出錯、人也可能誤判,如何避免? 航空、醫療領域還有哪些優良的實踐是值得我們借鏡的? 您也有觀賞這部電影嗎?也歡迎與我分享您從電影當中獲得了哪些想法。