### Software Engineering in Enterprise vs Product Companies
---
## 1. 容易懂 (Easy Know)
想像一下,軟體工程師就像是在蓋積木。有些公司像是「蓋城堡」的工程師,他們蓋的城堡要非常大、非常堅固,而且要能讓成千上萬的人用上好多年都不會倒塌。所以他們會花很多時間去計畫、檢查,確保每塊積木都放得剛剛好。這樣做雖然比較慢,但蓋出來的城堡超級可靠!
另一些公司像是「蓋火箭」的工程師,他們想要很快地做出最新的、最酷的火箭,讓大家馬上就能體驗。他們會一直嘗試新設計,如果發現火箭的某個部分不好玩或不實用,就會馬上改掉或發射另一台新的。這樣雖然速度很快,很刺激,但也可能常常改變方向。
學會怎麼蓋又堅固又酷炫的積木,一個工程師就會變得超厲害喔!
## 2. 總結 (Overall Summary)
這篇文章深入探討了軟體工程師在「企業公司」與「產品公司」之間工作文化的顯著差異,作者透過八年的豐富經驗,橫跨Salesforce、SAP等企業巨頭以及Meta、Tesla等產品創新者,點出了即使職稱相同,「軟體工程師」的工作內容與所學技能卻截然不同。
在企業公司工作,例如Salesforce和SAP,核心價值在於「可靠性」。由於其系統需支援成千上萬的企業客戶,並穩定運行數年甚至數十年,因此「流程」是首要考量。從設計審查、多重程式碼審查、QA測試到排定的部署日,每個環節都嚴謹且耗時。作者初期曾因一個微小的使用者介面修正需耗時兩週才上線而感到沮喪,但隨後理解這是確保系統穩定,避免對客戶造成大規模影響的必要之惡。這類公司的工作模式以「客戶需求」為導向,而非使用者增長,重點在於建立信任並維護數十億美元企業的正常運作。這段經歷教會了作者如何設計穩定且具韌性的系統、處理遺留程式碼,並成為一個結構化且可靠的工程師,但也伴隨著創新緩慢及個人工作影響力不易被看見的權衡。
相較之下,在Meta和Tesla等產品公司,工作節奏則截然不同。「所有權」是關鍵,工程師需從設計、建構、測試、發布到問題修復,全程負責。工作環境快節奏且充滿壓力,但也賦予工程師極大的自由與成就感。決策高度「數據驅動」,每次會議都從數據分析開始,若無法證明其對參與度、影響力或效率的提升,功能便可能立即被放棄。技術更新速度極快,工程師需持續學習以跟上潮流。這類經驗教會作者如何快速行動與實驗、衡量影響力,並培養出產品負責人的思維。然而,隨之而來的代價是混亂、優先級瞬息萬變,以及始終處於衝刺狀態的壓力感。
作者總結,企業公司教會工程師如何打造「經久不衰」的產品,培養紀律與長遠思維;產品公司則教會工程師如何打造「當下重要」的產品,培養影響力導向思維。最優秀的工程師應能兼具兩者特點:既能快速交付又能保持穩定,既能追求速度又能兼顧規模設計。因此,無論是處於職業生涯初期或中期,作者建議工程師應勇於嘗試這兩個截然不同的世界,透過多元的經驗來提升適應性,最終成為更全面、更強大的軟體專業人才。
## 3. 觀點 (Viewpoints)
* **企業文化著重穩定與流程導向:** 企業公司以確保系統長期穩定運作為核心,透過嚴謹的設計審查、多重程式碼審查、QA測試及排程部署,即便小型修改也需較長時間才能上線。這確保了系統的可靠性,避免對廣大企業客戶造成負面影響。
* **產品文化強調快速迭代與數據驅動:** 產品公司則追求快速交付與實驗,工程師對專案擁有端到端的所有權,並透過數據(如參與度、影響力)來快速評估功能成效,若無明顯數據支持,則可能立即放棄。這模式培養了快速應變和市場敏銳度。
* **客戶驅動 vs. 數據驅動:** 企業公司的工作內容常由單一大客戶的特定需求所驅動,著重於建立和維護客戶信任;而產品公司則依據大數據分析結果來制定產品方向,目標是優化使用者體驗與產品增長。
* **技術發展速度的差異:** 產品公司傾向快速採用新技術與框架,要求工程師持續學習以保持競爭力;企業公司因系統穩定性需求,技術更新相對緩慢,工程師需更擅長處理遺留程式碼。
* **個人成長與工程師素養:** 在企業公司,工程師學習建立穩定系統、結構化思維和耐心;在產品公司,則培養快速應變、衡量影響力和承擔所有權的能力。兩者皆能塑造更全面的工程師,學習兼顧穩定與速度是成為卓越工程師的關鍵。
* **職涯發展建議:** 作者建議職涯早期應選擇能最大化學習機會的環境,而非追求舒適;職涯中期則應尋求能發揮最大影響力的平台。最重要的是,若有機會,應嘗試在兩類公司都工作,以培養更強的適應性。
## 4. 摘要 (Abstract)
* ✅ 軟體工程師的職責在企業與產品公司中意義截然不同。
* ⚠️ 企業公司(如Salesforce)注重嚴謹流程,以確保系統穩定性並服務數千家企業客戶。
* 📌 在企業環境中,學習如何設計穩定系統、處理舊程式碼並培養耐心至關重要。
* 🚀 產品公司(如Meta)則強調快速開發、端到端所有權及數據驅動決策。
* 📊 產品工程師需不斷學習新技術、衡量影響,並像產品負責人一樣思考。
* ⚖️ 企業公司教會你如何打造「經久不衰」的產品,而產品公司則教你如何打造「當下重要」的產品。
* 💡 最優秀的工程師能結合兩者優點:既能快速交付,又能保持穩定與規模。
* 🌟 職涯發展上,體驗這兩種世界能讓你成為一個更具適應性的工程師。
## 5. 問題測驗 (FAQ)
**1. 根據文章內容,以下哪項是企業公司(如Salesforce, SAP)軟體工程工作的主要特點?**
A. 強調快速迭代和數據驅動決策
B. 工程師對專案擁有端到端的所有權
C. 透過嚴謹的流程和審查來確保系統的可靠性和穩定性
D. 頻繁嘗試新技術和內部框架
**正確答案:C**
**解釋:** 文章明確指出企業公司圍繞可靠性建立,每個步驟都有流程,例如設計審查、多重程式碼審查、QA測試和排定部署日,以確保系統長期穩定運行。
**2. 在產品公司(如Meta, Tesla)中,軟體工程師最常被要求具備的思維模式是什麼?**
A. 以單一大客戶需求為中心,建立長期信任
B. 像產品負責人一樣思考,並透過數據衡量影響力
C. 處理大量遺留程式碼,並確保系統數十年穩定運行
D. 嚴格遵守既定流程,避免任何可能破壞穩定性的風險
**正確答案:B**
**解釋:** 文章提到在產品公司,決策是數據驅動的,工程師會被推動去像產品負責人一樣思考,不僅僅是程式設計師,並不斷衡量影響。
**3. 作者總結,成為一名「更強大的工程師」的關鍵特質是什麼?**
A. 專精於某一種技術或框架,成為該領域的權威
B. 堅持在自己最舒適的環境中工作,最大化生產力
C. 能夠同時具備企業公司的「穩定性」與產品公司的「速度與影響力」
D. 只專注於新技術的學習,忽略舊有系統的維護
**正確答案:C**
**解釋:** 作者在文章結尾明確指出,最優秀的工程師應該能學會兩者:「ship fast and keep things stable」(快速交付並保持穩定)以及「move with speed and design for scale」(以速度前進並為規模設計),這意味著融合兩種工作模式的優點。
---
**https://thehustlingengineer.substack.com/p/software-engineering-in-enterprise?r=yznlc&%3Butm_medium=ios&triedRedirect=true**
**Summarized by 小濃縮David888.com**
- **Telegram**: [@quantaar_bot](https://t.me/quantaar_bot) | **Line**: [@032trcev](https://line.me/R/ti/p/@032trcev)
---
[Original Source](https://thehustlingengineer.substack.com/p/software-engineering-in-enterprise?r=yznlc&%3Butm_medium=ios&triedRedirect=true)