得到技術長穆拉提的授權後,艾佛勒正式開始了他的「融入」行動。他沒有要求一間獨立的辦公室,而是讓人在開發團隊最核心的區域,那個被大家戲稱為「戰情室」的開放空間裡,給他安排了一個最不起眼的角落工位。他就像一個不起眼的小草,帶著他的筆記本,悄然融入了這個充滿緊張氣氛的生態系統。
他的第一天,從參加團隊的每日站會開始。
「方舟平台」的核心團隊被分成了三個小隊:負責後端微服務的「阿爾法隊」、負責前端介面的「貝塔隊」,以及負責測試與部署的「伽瑪隊」。按照敏捷開發的理想,站會應該是快速、聚焦、同步資訊的場合。但艾佛勒看到的卻是另一番景象。
阿爾法隊的站會,由資深後端工程師大衛主導。他語氣飛快地報告完自己的進度,然後開始詢問其他隊員。「那個計費模組的 Bug 修得怎麼樣了?」「資料庫的性能優化有進展嗎?」他的問題充滿了壓迫感,隊員們的回答簡短而防禦,眼神大多都盯著地板。整個過程不像同步,更像是一場每日的口頭考試。艾佛勒在筆記本上寫下:「權威集中,低心理安全感」。
貝塔隊的站會則完全相反,氣氛鬆散。大家輪流說著「昨天在做A,今天繼續做A」,沒有細節,沒有阻礙,更沒有求助。負責人馬克試圖追問幾句,但很快就被敷衍過去。會議結束後,艾佛勒卻看到幾個隊員立刻湊在一起,低聲討論著一個他沒在會上聽過的技術難題。他在筆記本上寫下:「公開溝通失效,資訊在『線下』流動」。
最令他印象深刻的是伽瑪隊的站會。QA負責人莉莉報告了幾個新發現的嚴重 Bug,她的語氣客觀而冷靜。但在她報告完畢後,整個團隊陷入了一陣尷尬的沉默。沒有人說「謝謝」,也沒有人追問細節。那沉默彷彿在說:「又是妳,又帶來了壞消息。」艾佛勒捕捉到了莉莉眼神中一閃而過的的黯然。他寫下:「QA被視為『壞消息的信使』,而非『品質的守門人』」。
站會結束後,艾佛勒開始在辦公區裡「漫遊」。他觀察工程師們如何互動。他發現,阿爾法隊和貝塔隊的成員幾乎沒有直接的口頭交流。當前端需要後端調整API時,馬克會在 Jira 上開一張 Ticket,詳細描述需求,然後把連結貼在公共的 Slack 頻道裡,再 @ 大衛。大衛通常不會立刻回覆,半小時後,他會在 Ticket 下面留言,質疑需求的合理性,或是要求提供更詳細的日誌。一來一回,一個原本五分鐘就能溝通清楚的問題,往往要耗上大半天。Jira 在這裡,成了數位化的「楚河漢界」。
他還注意到產品經理(PM)的位置。他們的座位被安排在開發區的邊緣,像是一座孤島。當一個PM小心翼翼地走到一位工程師身邊,試圖討論一個需求時,那位工程師甚至沒有摘下他的降噪耳機,只是指了指螢幕,示意他「有事開票 (Ticket)」。PM只好尷尬地退回到自己的孤島上。
艾佛勒花了點時間,瀏覽了團隊的 Slack 公共頻道。裡面充斥著CI/CD系統自動發出的部署失敗通知、Jira Ticket 的狀態更新,以及各種監控系統的紅色警告。真正由人發出的對話,卻少得可憐。而且,大部分對話都充滿了術語和縮寫,像是一種加密通訊,旨在宣告「我很專業」,同時也將非技術人員排斥在外。
到了下午,艾佛勒找到了技術長穆拉提,請求了一個看似奇怪的權限:他希望能以「唯讀」身份,訪問團隊的 Git Repository (代碼倉庫)。
穆拉提有些不解:「你看得懂代碼?」
「我看不懂你們的業務邏輯,」艾佛勒坦誠道,「但我看得懂『人』在代碼中的痕跡。我想看看你們的提交紀錄 (commit history),看看團隊是如何描述他們的工作的。我也想看看你們的程式碼審查 (Code Review) 過程,看看大家是如何提出和回應建議的。」
得到授權後,艾佛勒看到了更多驚人的細節。提交紀錄的訊息要嘛極其簡略,如「fix bug」、「update」,完全看不出修改了什麼;要嘛充滿了抱怨,如「workaround for that stupid API」(為了那個愚蠢的API做的繞行方案)。而在程式碼審查的評論區,他看到了沒有硝煙的戰場。評論裡充滿了命令式的語句(「這裡必須改」、「不要用這種寫法」),和不加掩飾的嘲諷(「我以為這是常識?」)。被審查者則用同樣強硬的態度反擊,或是用沉默來表達無聲的抗議。
一天下來,艾佛勒沒有和任何人進行一次正式的訪談,但他筆記本上的內容,已經比任何一份官方報告都更接近真實。他像一個偵探,從人們的行為、語言、工具的使用痕跡中,拼湊出這個團隊失能的真相。
傍晚,當大多數員工拖著疲憊的身體離開時,艾佛勒仍坐在他的角落。他看著空無一人的「戰情室」,心中已經有了一個初步的診斷。這裡的問題,遠比技術債或流程混亂更深。這裡的空氣中,瀰漫著不信任、恐懼和習得性無助。
他知道,在他能引入任何「解決方案」之前,他必須先讓這個團隊「看見」他們自己。而這,將是下一步最艱鉅的挑戰。