第八章|聯合專案:三隻貓的災難
09:00,「光速未來」科技新創,會議室「顛覆者」
我——厭世拿鐵,七歲,此刻正盯著投影幕上的專案名稱《全端整合生態系重構 2.0》,感覺到某種宿命的惡意。
這個客戶太完美了,完美到像是系統特意設計來羞辱我們的。他們同時聘請了三家公司:我,負責專案管理與流程規劃;碳烤,負責技術架構與危機處理;冷萃,負責使用者體驗與品質顧問。三隻貓,同一家客戶,同一個專案,同一個不可能完成的 deadline:下週一。
「我們相信跨界合作的力量,」客戶的執行長,一個穿著连帽衫的人類,站在白板前揮舞著馬克筆,「厭世的嚴謹、碳烤的行動力、冷萃的同理心,這將是夢幻組合!我們要打造的不是產品,是奇蹟!」
我在心裡翻了個白眼。夢幻組合?這座城市裡沒有夢幻組合,只有互相消耗的肉搏戰。我看向碳烤,他正用爪子轉著筆,眼神飄忽,顯然已經在評估「這把火會有多大」。再看向冷萃,他靜靜地坐在角落,筆記本攤開,但還沒有寫字——他在等待,等待有人先說出真實的需求,而不是願景。
「首先,我們需要明確範疇,」我開口,聲音帶著那種「我已經預見失敗」的疲憊,「你們說的『全端整合』具體包含哪些模組?API 介接?資料庫遷移?還是只是畫個漂亮的 UI?」
「全部!」執行長興奮地說,「我們要從零開始,打掉重練!顛覆市場!」
「從零開始?」碳烤突然插話,聲音比我想像的還要尖銳,「今天是週四,你們要下週一上線。從零開始意味著我們需要 72 小時不眠不休,而且這還不算測試時間。你們的備份方案是什麼?」
「沒有備份,」執行長微笑,那種矽谷式的、相信「破壞性創新」會自動修復一切的微笑,「我們相信敏捷開發,相信快速迭代,相信……」
「相信奇蹟?」我接話,語氣平淡,「好的,那我們需要先開三天的需求確認會議,釐清規格,建立溝通協定,設定版本控制流程……」
「三天?」碳烤轉頭看我,眼睛瞪大,「我們只有 72 小時,你要花三天開會?」
「沒有明確規格的快速行動只是亂竄,」我回瞪他,「上個月 D 棟機房的事你忘了?就是因為沒有確認參數就動手,才會……」
「那是因為有人故意放火!」碳烤打斷我,聲音提高,「這次不同,這次我們知道時間緊迫,我們需要立刻行動,邊做邊調整!」
「邊做邊調整等於邊做邊錯,」我冷靜地反擊,「然後你會在週日凌晨三點打電話給我說系統著火了,而我不知道你的系統架構,因為我們沒有開過架構審查會議。」
「那至少先做個雛形出來!」碳烤站起來,爪子拍在桌子上,「讓客戶看見進度,讓我們有東西可以迭代!而不是坐在這裡畫甘特圖!」
「夠了,」冷萃開口,聲音不大,但讓我們都停了下來,「在決定怎麼做之前,我們應該先聽聽真正會使用這個系統的人說話。」
執行長皺眉:「什麼意思?我就是使用者,我知道我要什麼。」
「不,」冷萃闔上筆記本,眼神溫柔但堅定,「你是付錢的人。真正使用系統的是你的員工,是你的客戶,是那些每天需要操作這個介面八小時的人。我建議,在寫任何一行程式、畫任何一張流程圖之前,我們先訪談五位終端使用者。」
「我們沒有時間訪談!」碳烤和我同時喊出來,然後互相看了一眼,驚訝於我們竟然達成了短暫的共識。
「沒有時間了解,就沒有時間做對,」冷萃說,「做錯了再重來,更沒有時間。」
會議室陷入一種詭異的僵局。三種工作邏輯,三套時間觀,三種對「專案成功」的定義,像三條不同頻率的電流,試圖通過同一個插座。
執行長看看我,看看碳烤,看看冷萃,然後笑了。那笑容讓我想起 047 號顧問——那種「我知道你們會失敗但我樂見其成」的笑容。
「我喜歡這種張力,」他說,「這代表你們都很投入。這樣吧,厭世負責規劃,碳烤負責開發,冷萃負責驗收,各自發揮所長,週一見成果。」
他走出會議室,留下我們三個,和滿桌子的衝突。
14:00,專案進行中:三重奏的崩解
接下來的 48 小時是地獄的三重奏。
我按照標準流程,建立了專案管理看板,設定了每日站會時間(早上九點、下午三點、晚上八點),製作了需求追蹤矩陣,定義了「完成」的標準(必須通過單元測試、整合測試、使用者驗收測試)。我把這些文件寄給碳烤和冷萃,附件大小 47MB。
碳烤回覆了一封信,主旨:「沒時間看」。內文只有一個連結,指向一個他已經架好的測試環境,附註:「先上線再說,有問題我扛。」
我點開連結,看到一個介面,美觀,功能完整,但沒有任何文件說明它的資料結構,沒有註解,沒有版本控制紀錄。這就像看到一棟蓋好的大樓,但沒有藍圖,不知道地基在哪裡,不知道哪根柱子承重。
我打了電話給碳烤:「這個不能上線,沒有測試紀錄,我們不知道它在極限負載下會怎樣。」
「那就測試啊,」碳烤的聲音從電話那頭傳來,伴隨著鍵盤敲擊聲,「我給你環境了,你去測,測出問題我修,但不要阻止我上線。」
「這不是測試的問題,是流程的問題!」我提高音量,「如果你現在上線,週末出問題,我們沒有人力支援,客戶會……」
「客戶現在就需要!」碳烤也喊回來,「他們週一要給投資人 demo,沒有東西展示,專案就死了!你的流程救不了死掉的專案,但我的程式碼可以!」
我掛上電話,爪子顫抖。我知道他是對的,在某種程度上。這座城市懲罰「沒有產出」的人,不管那個產出是不是垃圾。但我也知道我是對的——如果這週末系統崩潰,我們三個都會成為代罪羔羊。
然後冷萃介入了。他不是在調解,他是在執行他的「品質」。
他在週五下午,也就是上線前 72 小時,帶來了五位終端使用者——真正的客服人員,他們將每天使用這個系統八小時。他讓他們坐在碳烤的測試環境前,請他們操作。
十五分鐘後,一位年輕的女員工哭了。
「這個按鈕……」她指著螢幕,聲音發抖,「這個『完成訂單』的按鈕,是紅色的。在我們部門,紅色代表『緊急/錯誤』,綠色才是『完成』。我……我剛剛按下去,我以為我取消了訂單,我以為我搞砸了……」
碳烤的臉色變了:「這只是顏色問題,改一行 CSS 就好,五分鐘。」
「不,」冷萃說,聲音平靜,「這不是顏色問題,是語言問題。你用了你理解的語言,而不是她理解的語言。在她的世界裡,紅色是警告,是危險,是『你要被開除了』。你讓她恐懼。」
「那她要學習新系統啊!」碳烤的聲音帶著防衛,「總要適應期!」
「適應期不是用來適應恐懼的,」冷萃說,「適應期是用來適應新的邏輯。但如果介面本身就製造焦慮,邏輯再完美也沒用。」
我抓住這個機會:「所以我們需要重新設計 UI 規範,這需要兩天,然後碳烤需要重寫前端,這需要三天,然後我們需要重新測試……」
「我們沒有五天!」碳烤幾乎是吼出來,「我們有星期天晚上!而且這不只是顏色,這是整個邏輯,是……」
「是你沒有問過使用者的邏輯,」冷萃輕聲說。
碳烤僵住。他看著那位還在哭的女員工,看著他的「完美系統」,然後看著我們。他的眼神裡有憤怒,有受傷,還有某種我認得的東西——那種「我又搞砸了」的自責。
「好,」他說,聲音突然變得很小,「那我們怎麼辦?」
沒有人回答。因為我們都知道答案:這個專案注定要失敗。我們三個的工作風格,在正常的城市裡,在正常的時間裡,也許可以互補。但在這座永遠 23:47 的城市裡,在「下週一必須上線」的壓力下,我們只是互相拉扯的三股繩索,把客戶、把彼此、把系統,一起拉向崩潰。
23:30,週日深夜,「光速未來」辦公室
系統還是上線了。不,正確地說,是「被強行推上線」。
碳烤在週六晚上手動修改了所有按鈕顏色,但沒有時間測試不同瀏覽器的相容性。我在週日凌晨發現了流程上的三個重大漏洞,但沒有時間開會確認修正方案。冷萃在週日早上訪談了更多使用者,發現了更多問題,但沒有時間傳達給碳烤。
週一早上九點,執行長按下了「公開上線」的按鈕。
到中午十二點,系統崩潰了。
不是小故障,是全面的、災難性的、上了社會新聞頭條的崩潰。資料庫鎖死,使用者資料外洩,交易紀錄消失。客戶的投資人 demo 變成了一場公開的處刑。
執行長打電話給我們,不是一個一個打,是三方通話,聲音裡帶著那種「我早知道會這樣」的惡意:「我很失望。我以為三倍的專業會帶來三倍的成功,但看來專業人士也會犯基本錯誤。」
「這是因為你給的時間不夠,」我說,聲音疲憊。
「這是因為你們無法合作,」他回擊,「厭世,你太慢;碳烤,你太莽;冷萃,你太理想。你們三個在一起,不是夢幻組合,是災難組合。」
他掛上電話。我們三個站在「光速未來」的空蕩辦公室裡,周圍是熄滅的螢幕,滿地的咖啡杯,還有牆上那張「顛覆者」的標語,現在看起来像个笑话。
「他說得對,」碳烤說,聲音沙啞,「我們是災難。」
「不,」冷萃說,他走到窗邊,看著外面永遠灰色的城市,「是這座城市設計我們成為災難。」
我開始收拾我的東西。筆電、充電線、那本已經沒用的 47MB 專案管理文件。「我們本該合作的,」我說,聲音裡有責備,「如果你們照我的流程……」
「然後在開會中錯過 deadline?」碳烤冷笑,「還是你要說,如果我們照冷萃的方法,訪談一百個使用者,然後做一個永遠上不了的線的完美系統?」
「至少不會崩潰!」
「但至少會存在!」碳烤喊回來,「你的系統不存在,因為永遠在規劃!冷萃的系統不存在,因為永遠在傾聽!只有我的系統,雖然爛,但至少它摸得到!」
「夠了,」冷萃轉身,聲音不大,但讓我們停下,「夠了。」
他走過來,站在我們中間,看看我,看看碳烤。
「專案失敗了,」他說,「這是事實。但我們沒有失敗。我們做了我們相信的事。厭世,你保護了流程的完整性,雖然沒有人感謝你。碳烤,你保護了上線的可能性,雖然付出了代價。我,我保護了使用者的聲音,雖然沒有人聽見。」
「那有什麼用?」我問,聲音破碎,「專案還是死了。」
「有用,」冷萃說,「因為這證明了這座城市不允許合作。它不允許『嚴謹』和『行動』和『同理心』同時存在。它只允許競爭,只允許互相指責,只允許『都是你們的錯』。」
碳烤坐下來,抱住他的頭。他的爪子還在顫抖,因為連續 72 小時的燃燒。
「我們該怎麼辦?」他問。
「回去,」我說,突然地,「回去星塵咖啡館。」
23:47,星塵咖啡館
我們推開門時,時間顯示 23:47,但那個掛鐘的秒針在走動。咔,咔,咔,像在歡迎我們回家。
我們沒有說話。厭世走到吧檯後面,開始煮咖啡——不是為了提神,是為了儀式。碳烤癱在窗邊的軟墊上,焦黑的毛在燈光下看起來像燃燒後的餘燼。冷萃走到牆邊,看著那些便條紙。
然後,他做了一件事。他撕下一張新的便條紙,黃色的,遞給我們一人一張。
「寫,」他說,「寫下今天,我們學到了什麼。」
我看著那張黃色的紙。我該寫什麼?「我該學會放棄流程」?不,我不這麼認為。或者「我該學會快一點」?也不對。
我寫下:「專案可以失敗,但我不必為失敗道歉。我堅持了該堅持的,雖然這座城市不喜歡堅持。」
碳烤寫下:「救火救到系統崩潰,但至少我沒有讓火燒掉我自己。下次,我會先問顏色。」
冷萃寫下:「我聽見了,雖然沒有人聽我。被聽見的使用者哭了,這比上線更重要。」
我們把三張便條貼在一起,貼在牆上,貼成一個三角形,互相支撐。
「這座城市設計我們競爭,」冷萃說,退後一步看著那三張紙,「但我們選擇互相支撐。」
「專案失敗了,」我說,舉起我的杯子,裡面是第四杯咖啡,但我這次真的在品嚐它的味道,「但我們沒有失敗。」
「敬災難,」碳烤說,舉起他的杯子,聲音疲憊但釋然,「願它燒掉錯誤的系統,留下正確的我們。」
「敬合作,」我說,「在這座不允許合作的城市裡。」
「敬失敗,」冷萃說,溫柔地,「願它教會我們,成功不是唯一的證明。」
我們碰杯。咖啡在杯子裡晃動,像某種尚未熄滅的液體。
窗外的城市依然困在 23:47,依然忙碌,依然競爭,依然在製造「最後一哩路」的幻覺。
但在這間咖啡館裡,在這面貼著三張新便條的牆面前,三隻貓學會了一件事:他們可以失敗,可以崩潰,可以互相指責然後原諒,但他們不會再讓這座城市告訴他們,他們是彼此的敵人。
我們是彼此的漏洞,是彼此的時間異常,是彼此在永遠下班不了的城市裡,唯一能證明「另一種可能」的證據。
ns216.73.216.67da2


