我在 Salesforce Heroku 工作時的 Slack 頭像。那次發的周邊商品讓大家都很滿意,我記得那件襯衫非常舒適,帽子則是很紫色。

當我讀到那篇部落格時,我也曾以為 Heroku 已經結束了。後來我和仍在那裡工作的朋友聊過,我不認為 Heroku 已死。

我不想過多談論自己,但我覺得透明說明我的背景很重要,讓你了解我的觀點來自何處。

我直接服務所有 Heroku 工程團隊,任何時候同時管理 9 到 11 個專案。我向一位在阿根廷的經理報告,並指導三位阿根廷工程師。我一年內發表了六份技術設計文件,與所有架構師合作,並與數十個 Salesforce 團隊(包括安全、合規和可靠性組織)介接。我寫了一個名為 uwu 的平台,並公開批評 Heroku 的命名傳統。uwu 是一個更大專案的一部分,旨在解決我即將談到的痛點。我甚至讓當時的 CEO 在簡報中用聊天軟體說 uwu,那是我職涯中最瘋狂的時刻,我的簡報裡還有 Minecraft 影片,當時真的玩得很開心。

後來,我的許多前同事可能會分享他們對 Heroku 衰落的見解,每個人都會有獨特的觀點,來自自身經驗。我認識一些人會對產品工程、願景、市場行銷、方向,甚至管理和領導有深刻看法。我將提供一個相鄰的視角,聚焦於收購後新創組織的動態,以及複雜系統動態和未妥善控制的熵如何影響我們。

我目睹的痛點與即將分享的教訓並非 Heroku 獨有,而是我在科技領域多個角色和故事中觀察到的普遍模式。這篇文章對於在科技公司工作、經營或關心軟體產品從中型市場轉向企業市場的人來說,將有價值。讀者將從中了解成長或停滯的痛苦與教訓。

每位談論前雇主的科技人都該問自己:

我分享的內容是否合乎倫理與法律?

這是否對我的前雇主及仍在那裡工作的人有益?

這些問題在我寫作時一直盤旋心頭:什麼可以公開分享,什麼不行?我非常謹慎,想以無責備的方式分享學到的教訓與回顧。

二月的溫哥華陽光難得,當陽光出現時我們都會好好利用。當時我正忙著準備春節,幾位朋友傳給我 Heroku 官方部落格的更新連結,還有各種社群討論。那時我穿著淡色毛衣,手拿抹茶拿鐵,試著同時應付清理工、清潔工和私人助理的問題——我承諾先處理生活中的技術債,才全力回歸科技領域。我的心思遠離那個我曾拼命投入的角色。罕見的陽光溫暖著我染成淡紫藍色的頭髮(自 Heroku 起我愛上紫色調),但我的手指冰冷,讀到公告時心情沉重如墜石。

自從因過度投入而請病假離開 Heroku 已有一段時間。與所愛事物分離總需時間,我想我經歷了所有悲傷階段,離開那些對我這位工程師和技術領導者意義重大的專案後(例如我從未完成管理數千 AWS 帳號的控制平面建設,該工作幫助我們節省了不少成本)——我終於接受了現實。經歷過悲傷的人都知道:悲傷是非線性的,我又再度為 Heroku 這個我曾擁有過最好與最壞經歷的角色感到悲傷。我回覆了幾則訊息,靜靜閱讀群組聊天內容,幾乎無言。情緒有時大到讓我無法言語,感謝自閉症。

我已經很久沒寫作了,真的沒有太多想說的。今天我想談談,從一位在巔峰時期崩潰的高效能個人貢獻者與技術領導者角度,Heroku 在走向混亂不堪的路上到底發生了什麼。

酷炫科技公司總是被收購,收購後的狀況總是艱難。列夫·托爾斯泰說過:「所有幸福的家庭都相似;每個不幸的家庭各有各的不幸。」將家庭換成任何複雜系統實體,你就會看到一套模式。這就是安娜卡列尼娜原則:

「所有適應良好的系統都相似,所有不適應的系統各有其不適應方式……但在不適應的混亂中存在秩序。看似矛盾的是,系統越不同,它們在一定範圍內實際上越相關。」

直到 2020 年代初,很多人聽到 Heroku 在 2010 年被 Salesforce 收購時仍感驚訝。隨著 Heroku 在行銷和產品決策中越來越明顯地展現這一事實,這種驚訝逐漸減少。以下是我 2021 年加入 Heroku 時個人工作日誌中的兩句話:

「Heroku 是 Salesforce 最不受寵的繼子」

「我們團隊是 Heroku 最被討厭的團隊,大家都討厭我們哈哈」

我改變了第二句,但我試圖改變第一句的轉型專案未能成功。

當一個子系統要整合進主系統時,摩擦必然產生。企業與被收購公司之間既有的工程實踐和流程造成內部疲憊。突然間,像身份管理、安全、合規、基礎設施資源資料等都必須與另一個「不按我們方式做事」的組織共享。我觀察到 Salesforce 在 2010 年收購時的整合效率不如現在——大家都是從經驗中學習。Heroku 的集中化努力明顯比應該的時間晚得多,我正好在收購十年後走進這個過程的中心。

我引用 2023 年個人工作日誌中的一段話:

「關於關鍵功能的集中與分散動態,在許多企業領域都能觀察到:『每個團隊應該自行處理基礎設施配置、安全、依賴管理、事件響應和值班流程,還是全部集中管理?』

局部控制意味著更高的專業度和更適合的解決方案,但代價是缺乏外部反思、知識孤島和標準不匹配;而集中控制則意味著變更緩慢、協作無效,以及解決方案不適合子系統。

Heroku 歷史上對集中化的抗拒導致了集中化壓力增加,最終強制集中化的結果帶來了深遠的系統影響。」

我看到的是好人從多方努力做出好工作卻產生的低效率。當時 Salesforce 約有 8 萬名員工,協調行動龐大無比。雖然大家都笑稱那個名字,Salesforce 的 V2MOM 框架理想上能讓人們聚焦共同目標。這是一個結構完善的框架,但結構也可能是雙刃劍。規劃季節總是令人頭痛,當涉及介接時更是如此。當涉及合規、安全和基礎設施時,規劃季節更是痛苦,因為每天有數百到數千個短暫實例上下線。規劃完成後是執行,別忘了中斷,因為熵是真實存在的,而 Heroku 長期人力不足。

所以一切進展緩慢,儘管大家都非常努力。事情也發展得很快,因為有很多聰明且勤奮的人,他們都希望 Heroku 表現良好。事情既慢又快,取決於中斷的意義和風險。坦白說,人手根本不夠。

Heroku 工程最大問題之一其實是資源不足。我見過資源過剩的組織失敗,那是另一回事。資源不足的組織則是以一種窮困而光榮的方式失敗,幾乎帶有詩意。我想多談談,但又怕透露太多。每個人都盡力了,我相信大家仍在盡力。

預算是根據所提供的價值談判的,而我覺得 Heroku 沒有完全展現其對母公司的價值。Heroku 是最不受寵的繼子,因為它默默做了很多工作。許多 Salesforce 內部服務運行在 Heroku 上,增加了成本負擔。Heroku 代表其他內部組織花了很多錢,但沒有辦法呈現這些,除非有更系統性的資源盤點。這很難做到,因為資源的維度和基數龐大。基本上,我們在與無限作戰。這是大數據問題,而數據本可用於決策。這是個人貢獻者的看法——數據驅動決策本可影響資源需求,這是希望。

在我最瘋狂的過勞夢中,我想像自己擁有決策權,專注於改善內部運營和降低成本。我聽過很多對 Heroku 產品方向的聰明評論(那些「應該、會、能」),我無新意。我要談的是我知道的:Heroku 本可看起來不像成本中心,這是個技術問題,可用事件驅動系統解決資源帳務與洞察,平台化的即用 API 設計,提供自助式有限權限的開關,低摩擦的資料輸出。

Heroku 還有其他問題,但這是我們團隊著手解決的問題。Heroku 是 AWS 的早期客戶之一,憑藉其規模擁有許多寶貴經驗。現代化 Heroku 的 AWS 帳號與資源管理成了我追逐的目標,我為此過勞。我曾提議將內部平台經驗產品化——如果 Heroku 發布一套十二因素 AWS 呢?我們擁有獨特的經驗,業界沒人見過。我曾與 AWS 人員洽談在 AWS Re:Invent 發表我們的工作。若真做了呢?基礎設施配置、維護、成本、安全、合規等大規模作業是一場災難,沒人知道如何解決,我們似乎用數據驅動設計和安全優先 API 找到方法。我不知道,我可能只是另一個對著虛空吶喊的工程師。

每個奮鬥的新創公司終將面臨轉型階段:是時候穿上成熟的褲子,整理所有系統。我見過新創撞牆的問題,因為創業者只想到當下,沒人考慮三、五、十年後會怎樣。

基礎設施配置與成本負擔

企業級團隊與組織協作協議

一致的企業文化(因為一旦建立,變化緩慢)

新創從中小企業轉型為企業合約準備階段,往往在這些問題上成敗關鍵。這些問題同樣影響自籌資金、風投支持和被收購的新創。Heroku 也曾遭遇這些問題,有趣的是,因為收購時期,Heroku 在這階段停留時間比我見過的任何組織都長。或許這也是它產生獨特成果的原因,或許這也是我們目睹其似乎陷入下滑的原因。

我離開 Heroku 時,更像是個個人貢獻者,與 IC 朋友交流多於領導朋友。1.5 年後,我以 IC 和領導者的雙重視角反思問題。這兩個角色讓我對 Salesforce、Heroku 及其社群充滿同理心與憐憫。Heroku 是最酷的,它在許多 DevOps 領域樹立了先例,是許多現今 PaaS 產品的基礎,我很榮幸曾是其中一員。我在 Salesforce 看到的問題並非單一企業獨有,而是所有組織在科技內外都會面臨的問題。變革艱難,當一切發生得如此迅速、規模如此龐大、人數如此眾多,推動變革更是困難。事情不會如我們所願,儘管我們都想要相同的結果,但系統根本沒設計讓我們以相同方式想要或解讀這些目標。不過,我們仍會繼續努力。

我認識的許多 Heroku 人員為了心理健康避免瀏覽 HackerNews 等網站。這麼大的組織,他們無法自由發言,必須將問題轉給企業公關和法務部門。作為前員工,我有較多自由,但仍須遵守法律。我只能說:聽起來有希望,因為許多痛點正被積極處理。

其他科技朋友向我表達慰問,但我在悲傷中仍抱有希望。Salesforce 是個擁有許多才智的龐大組織,誰知道接下來會發生什麼?本著知識開源精神,我分享這些教訓。我知道許多朋友在其他企業和中小公司也經歷類似痛苦,我真心希望業界能找到緩解之道。看來我們每 12 年就會重複遇到同樣問題,這幾天我跟學員講解時彷彿回到 2010 年代。我和另一位同樣過勞的科技人配偶談過,他說:「這更像潮汐而非循環,每波浪潮都帶來些微改變。」

我從系統熵是永恆且無法避免的事實中找到慰藉,但我們積極應對雖然像西西弗斯的苦工,卻有意義且能帶來喜悅。推動變革很難,但不推動就不會有改變。Heroku 並未消亡,它正在轉變。