工程師克里斯這週要驗證東尼那段拖了快一個月的計費模組重構,特地提前把公司唯一一套「客戶沙盒」測試環境訂了下來,那是唯一能完整重現真實客戶資料規模的環境,平常大家排隊使用,克里斯提前兩天就訂好了週四整天。
同一週,布萊恩也在準備燈塔小隊那個延遲已久的帳單匯出功能。瑞秋跟客戶約好,週四下午要在客戶沙盒環境裡,直接展示即時預覽的成果。這是自從「先定案再追趕」那次重工之後,瑞秋難得主動找布萊恩討論排程,兩人一起把時程訂在週四,覺得終於能扳回一城。
週四早上九點,克里斯登入沙盒環境,發現裡面的資料被清空重灌過,跟他昨天測到一半的狀態完全不一樣。他一查,才知道布萊恩的團隊為了下午的展示,一早就把環境重置成demo用的乾淨資料。
「我這週四整天都訂好了,」克里斯在跨隊頻道裡打字,語氣藏不住不悅,「你們什麼時候訂的?系統上完全沒看到衝突提示。」
布萊恩很快回覆:「我們是跟瑞秋、跟客戶三方約好的時間,客戶那邊已經清空行事曆等我們了。這個demo拖了兩次,不能再延。」
「那我這邊也拖了快一個月,」克里斯回,「東尼那個重構,卡在驗證這一步已經卡了兩週,今天不驗,下週的release就要跳票。」
兩邊在頻道裡各自陳述理由,語氣越來越硬,誰也不覺得自己該讓。東尼看不下去,跳進來想幫忙緩頰,卻也忍不住替克里斯抱不平:「這個環境本來就是先訂先贏,我們是照規矩訂的,你們臨時要用,怎麼反而要我們讓?」娜迪雅也在燈塔小隊那邊解釋,設計早就跟客戶對過這個時段,不是說改就能改;瑞秋更直接補了一句:「客戶那邊已經清空一整個下午等我們,總不能現在打電話說要延期吧?」
吉娜在旁邊看著頻道裡越滾越長的訊息串,小聲跟辛蒂說:「這感覺已經不是我們能決定的事了,兩邊講的都有道理。」辛蒂點點頭:「而且照這個吵法,吵到晚上也不會有結果,因為根本沒有一條大家都認的規則可以拿出來比。」
ScrumMaster凱文跟資深工程師布萊恩試著在兩個小隊之間協調,發現這件事根本不是誰對誰錯的問題——公司從來沒有訂過「誰有優先權使用這套環境」的規則,也沒有人被賦予「出現衝突時由誰拍板」的權力。兩邊各自的理由都成立,卻沒有任何一條共同的邊界,能決定這次到底該聽誰的。
這件事最後被升上雙連結會議。這是蘇菲跟著艾佛勒以來,第一次看到全部五個小隊的代表同時出現在同一個房間,羅盤的凱西、潮汐的娜塔莎、燈塔的布萊恩、帆影的盧卡斯、守夜的克蘿伊,圍著長桌坐下,薇薇安坐在主位。
娜塔莎先開口,語氣比蘇菲印象中平靜許多,把克里斯訂環境的時間順序講清楚;布萊恩接著說明客戶那邊的時程限制,兩人講完,都沒有再互相指責,只是把各自知道的事實攤開來。一旁的盧卡斯忍不住問了一句:「所以這套環境,原本是誰負責維護的?」克蘿伊也搖搖頭:「我們守夜小隊有時候也會臨時用到,但從來沒搞清楚該找誰申請,都是直接登入進去看有沒有人在用。」
薇薇安聽完,沒有立刻裁決誰對誰錯,反而先問了一句:「這套環境,現在到底是誰在管理排程?」
會議室安靜了幾秒——沒有人答得出來。凱西翻了翻自己的信箱,也只找到半年前一封提過環境權限的舊郵件,早已沒有人在追蹤。
「這才是問題的根本。」散會後,艾佛勒跟蘇菲說,「潮汐跟燈塔吵的,表面上是『誰先訂的』,但更深一層,是這套資源根本沒有清楚的邊界——沒有人被賦予管理它的角色,也沒有人被賦予仲裁衝突的權力,兩個小隊各自的任務邊界,撞在了同一個沒人看管的空間裡。」
「所以雙連結會議,真正發揮的作用是什麼?」
「薇薇安沒有替他們決定這次誰該讓,」艾佛勒說,「她讓娜塔莎跟布萊恩一起,訂出一套之後任何小隊都能用的排程規則——需要跨隊使用的時段,提前登記在共用行事曆,衝突時由當週雙連結會議的代表協調,如果協調不了,才由她最後拍板。這樣一來,邊界被畫出來了,不是靠她每次都親自介入,而是靠一套大家都同意、下次還能重複使用的規則。」
蘇菲把這段記下來,忽然想起自己剛加入時,艾佛勒指出雙連結會議五位代表全是inlink、沒有outlink的那次對話——她原本以為那只是個結構上的漏洞,此刻才明白,這樣的會議,第一次真正派上用場,處理的不是某個小隊內部的事,而是一個沒有任何單一小隊能自己解決的邊界問題。
沒過多久,娜塔莎主動找上克里斯:「抱歉,這次是我這邊該早點跟你們同步。」克里斯也鬆了口氣:「我也是,早知道該先問問看有沒有人同時要用。」兩人一起把新的排程規則貼進團隊共用文件,還順手拉了東尼、布萊恩一起看過一遍,確認兩邊都能接受。這是潮汐與燈塔第一次,為了同一件事,坐下來一起解決,而不是各自往上升級。
蘇菲站在會議室外,看著這群人圍在螢幕前一起修改文件,忽然覺得,這場面跟她第一次見到雙連結會議那五位代表時的印象,很不一樣——那時候,他們像是五條各自往上匯報的線;此刻,這條線第一次真正往兩邊、往下面連了回去。