凌晨一點四十分,羅盤小隊值班工程師泰勒的手機震動起來。警示訊息很短:核心結算服務延遲飆升,客戶端已經開始回報訂單卡住。房間裡只有筆電螢幕的光,男友還在熟睡,她盡量不出聲地爬下床,心跳卻已經先醒了過來。
她坐起身,打開筆電,在十分鐘內確認了問題——一個上游依賴服務的連線池被打滿。修復方式她知道,重啟加擴充就能解決,但風險是:如果她判斷錯誤,重啟可能讓問題從「延遲」變成「服務全斷」。
她的手指在「是否要叫醒技術主管凱西」的念頭上停留了幾秒。手機螢幕的時鐘顯示凌晨一點五十二分。她算了一下,如果現在打電話,凱西大概要花五分鐘才能完全清醒,等他上線看懂狀況,可能已經過了十分鐘——那十分鐘,足夠讓延遲從「偶爾卡頓」變成「大量訂單失敗」。
有一次她半夜叫醒主管凱西,換來的不是感謝,是隔天站會上一句不輕不重的:「這種等級的問題,你自己應該可以判斷吧?」另一次,她索性沒叫醒任何人,自己一個人扛,判斷也剛好是對的,卻沒有人特別說什麼——彷彿自己扛下來,本來就是應該的。從那之後,泰勒學會了一件事:不管半夜發生什麼,先自己想辦法把最壞的結果擋下來,早上再說。
泰勒最終決定,自己來。她花了四十分鐘,小心翼翼地重啟、觀察、擴充,凌晨兩點半,服務恢復正常。她在值班紀錄裡簡短寫下:「已排除,見附件 log。」然後回去睡覺。
隔天早上的站會,氣氛卻和泰勒預期的不太一樣。
「凌晨那個問題,」帶站會的資深工程師傑森先開口,「我看 log,你重啟服務前,其實有機會先切斷上游依賴、隔離風險再處理,對嗎?」
「對,但那樣做需要改設定,我怕來不及。」泰勒說。
「所以你選擇了風險比較高的做法。」傑森說。
「我……我覺得那個當下,重啟是最快的。」
「最快,」傑森重複了一次這兩個字,語氣聽不出責備,卻也聽不出讚許,「但風險呢?妳當時有算過重啟失敗的機率嗎?」
「沒有時間細算。」泰勒的聲音小了下去。
會議室沒有人接話。
坐在角落的蘇菲全程沒有說話,只是安靜地記錄。散會後,她把這段對話整理成一張表,拿去給艾佛勒看。
「妳看到什麼?」艾佛勒問。
「我看到一場檢討會,」蘇菲說,「大家在討論一個技術決策的對錯。」
「再看一次。這次不要看『他們在說什麼』,看『他們各自站在什麼假設上說話』。」
蘇菲重新看了一遍逐字稿,然後她畫出了兩欄。
泰勒當下的隱性假設:現在是我在值班,先扛起來是應該的/叫醒主管代表我撐不住/打擾別人是有成本的/SOP 是最後一道保護網,不是行動的預設依據。
站會上討論者的隱性假設:有問題就該照流程升級/沒升級代表判斷不夠好/打擾是理性的選擇之一/SOP 應該被當作行動的預設依據。
「這就是兩套完全不同、卻各自『合理』的世界觀,」艾佛勒說,「泰勒不是不遵守流程,她是活在一套沒有被明說出來的假設裡,做出了她認為『正確』的事。而站會上的人,也沒有惡意,他們同樣活在自己那套沒被說出來的假設裡。問題是,沒有人把這兩套假設攤開來過,所以每次對話,都只停留在『重啟對不對』這種表面的事實層,吵不出結果。」
「所以應該怎麼辦?直接告訴泰勒,下次有問題就打給主管?」蘇菲問。
「如果只是給一條新規則,」艾佛勒說,「那只是換了一顆藥丸,沒有治到病根。妳有沒有發現,從『昨晚發生了什麼』,滑到『你為什麼這樣做』,中間發生了一件很微妙的事?」
蘇菲想了想。「語言,變了。從討論『那件事』,變成了在問『這個人』。」
「對。這是一個訊號,不是巧合。」艾佛勒在白板上畫了一個階梯,最底層寫著「客觀發生的事實」,往上是「我選擇要注意的部分」、「我賦予的意義」、「我做出的假設」,最頂端是「我採取的行動與結論」。
「人不會直接對『事實』做出反應,我們永遠是對『事實加上我們自己的詮釋』做出反應。泰勒看到警示,爬上了她自己的階梯,得出『我該自己扛』的結論;站會上的人看到同一份 log,爬上了他們自己的階梯,得出『她判斷有問題』的結論。兩座階梯,都是從同一個事實出發,卻在半路上,各自往不同的方向爬去。而最麻煩的是,大部分人只會看到彼此站在階梯最頂端說出的結論,完全看不到,對方是踩著哪幾階,一路爬上去的。」
「那我們能做的是……」
「不是去爭誰的階梯比較對,」艾佛勒說,「而是教會這個團隊,在下一次類似的對話卡住時,有能力停下來,彼此把階梯攤開來看:『你是從哪個事實開始注意的?你怎麼詮釋這件事?你的假設是什麼?』泰勒需要被問的第一個問題,或許根本不是『你為什麼這樣做』,而是『那個當下,你看到、你在意的是什麼?』」
蘇菲把這句話寫進筆記本,底下這次畫了三條線。她忽然明白,艾佛勒真正想讓她學會的,不是一套用來質問別人的技巧,而是一套先誠實檢查自己那座階梯的習慣——包括,她自己此刻對泰勒、對傑森,是不是也已經,不知不覺地,爬上了某座只有她自己看得見的階梯。