結論先講

Tech Lead 不是「團隊裡技術最好的人」,也不是「Senior 工程師的升級版」。是能用技術判斷力帶領團隊做出好決策,同時讓每個人都成長的人。

如果你當上 Tech Lead 後還是花 80% 的時間寫 code,那你可能只是一個「有 title 的 Senior」。真正的 Tech Lead 的時間分配大概是:30% 寫 code、30% code review 和技術討論、20% 溝通和對齊、20% 規劃和決策。


1. 技術決策:選擇比努力重要

Tech Lead 最重要的工作不是寫 code,是做決策。

技術選型的思考框架:

考慮面向問自己的問題
團隊能力團隊成員會這個技術嗎?學習成本多高?
社群和生態有足夠的文件和社群支援嗎?五年後還會活著嗎?
業務需求這個技術能解決我們的具體問題嗎?
維護成本長期維護需要什麼?upgrade path 清楚嗎?
招人用這個技術招得到人嗎?

Build vs Buy:

情境Build(自己做)Buy(用現成的)
核心競爭力是你的產品差異化 → Build不是核心 → Buy
時間壓力有時間 → 考慮 Build趕時間 → Buy
長期維護有團隊維護 → Build不想養 → Buy
特殊需求市場上沒有合適的 → Build現成的就夠用 → Buy

真實案例:某團隊花了三個月自己寫 CMS,結果功能不到 Strapi 的 10%,還要持續維護。如果當初花兩週評估和設定 Strapi,省下的時間能多做三個 feature。

做決策的方式:

不是 Tech Lead 一個人說了算,也不是民主投票。好的流程是:

  1. 定義問題和限制條件
  2. 列出選項(至少兩個)
  3. 團隊討論 pros/cons
  4. Tech Lead 做最終決定,並說明理由
  5. 記錄下來(ADR - Architecture Decision Record)

寫 ADR 不是官僚,是讓六個月後的你(和新人)知道當初為什麼選這個方案。


2. 帶人:Code Review 是最好的教學場景

Tech Lead 的帶人不是辦讀書會(雖然那也不錯),是在日常工作中讓人成長。

Code Review 的藝術:

不好的 review好的 review
「這樣不對。」「這邊用 X 會有 Y 問題,考慮用 Z 嗎?因為…」
只看 coding style看設計、可維護性、邊界情況
每個 PR 都改一堆分清楚 must-fix 和 nice-to-have
把 PR 當成展示自己多厲害把 PR 當成教學機會
三天後才 review一個工作天內回覆

怎麼讓 Junior 成長:

  • Pair programming:不是你寫他看,是他寫你引導
  • 給適當挑戰的任務:太簡單沒成長,太難會挫折
  • 允許犯錯:在安全的環境犯錯(staging、feature flag)
  • 教方法而不是給答案:「你可以用 X 工具看看是什麼問題」而不是直接告訴他答案
  • 定期 1:1:不只是問進度,是了解他卡在哪、想學什麼

Mentoring vs Managing:

MentoringManaging
關注個人成長團隊產出
方式引導和建議指派和追蹤
頻率按需固定
Tech Lead 的角色主要是 Mentor部分 Manager(看組織)

3. 溝通:最被低估的技能

Tech Lead 是技術和業務之間的翻譯者。

跟 PM/老闆溝通技術:

不要說:「我們需要重構這個 service,因為現在的架構用了 monolithic pattern,coupling 太高,沒有 proper separation of concerns。」

要說:「如果不整理這段程式碼,接下來每個新功能要多花 2-3 倍的時間開發,而且 bug 會越來越多。我建議花兩週時間整理,之後開發速度會快 30%。」

跟上層溝通的原則:

不要做的要做的
說一堆技術名詞用業務影響來說明
只說問題帶著解決方案來
說「不可能」說「可以,但需要 X 資源 / Y 時間」
等被問才說主動同步風險和進度
私下抱怨正式提出並推動改善

向上管理(Upward Management):

這不是拍馬屁,是讓你的主管能幫你:

  • 定期同步技術風險(不是出事了才說)
  • 用數據說話(「這個技術債讓我們每個 sprint 多花 20% 時間修 bug」)
  • 提出選項而不是問題(「我建議方案 A,因為…」)
  • 知道你的主管在乎什麼(OKR?交付時間?品質?)

4. 取捨判斷:Perfect vs Good Enough

這可能是 Tech Lead 最難的技能。

什麼時候追求完美:

  • 安全相關的程式碼(auth、加密、權限)
  • API 介面設計(改了會 breaking change)
  • 核心架構決策(影響未來一年的開發)
  • 資料模型(schema 改了要 migration)

什麼時候 Good Enough 就好:

  • 內部管理工具的 UI
  • 一次性的 script
  • 還在驗證的 feature(可能下週就砍了)
  • 非關鍵路徑的最佳化

Technical Debt(技術債)的管理:

類型範例處理方式
刻意的「先用 hardcode,下個 sprint 改」記錄下來,排進 backlog
意外的「原來這個 library 有 bug」評估影響,決定優先級
長期累積的「這段 code 三年沒人動了」碰到再改,不要沒事去重構
架構級的「我們的 monolith 太大了」需要正式的計畫和資源

好的 Tech Lead 不是追求零技術債(那不可能),是知道哪些債可以欠,哪些不能。就像個人財務,房貸可以,信用卡循環利息不行。


5. 架構 Ownership:負責但不獨裁

Tech Lead 是架構的 owner,但不是 gatekeeper。

Owner 和 Gatekeeper 的差別:

OwnerGatekeeper
確保架構方向一致所有設計都要我點頭
授權團隊做決策只有我能做決策
出了問題一起解決出了問題是你的問題
教團隊理解架構原則建立只有自己懂的系統
歡迎挑戰和討論不接受質疑

架構文件的最低要求:

你不需要寫 100 頁的架構文件。但至少要有:

  • 系統架構圖:各 service 之間的關係(C4 Model 的 Level 2 就夠了)
  • ADR(Architecture Decision Record):重要的技術決策及理由
  • Onboarding 文件:新人第一天需要知道的事
  • API 文件:OpenAPI/Swagger,或至少 Postman collection

技術方向的守護:

  • 定期 review 架構是否還符合需求
  • 不要讓每個人用不同的 pattern(今天 MVC,明天 Clean Architecture,後天 DDD)
  • 技術棧的變更要有好理由,不是因為「新的比較酷」
  • 留意技術趨勢,但不要追每一個

6. 什麼時候該寫 code,什麼時候不該

Tech Lead 還是要寫 code,但不是所有 code 都該你寫。

應該寫的:

類型為什麼
Prototype / POC快速驗證技術方案是否可行
核心框架和 infra code影響全團隊的基礎設施
困難的 bug展示除錯方法論
Pair programming教學目的

不應該寫的:

類型為什麼
每個 feature你會變成瓶頸
別人可以做的剝奪團隊成長機會
緊急的 hotfix(如果有人可以做的話)你應該在協調和溝通
追求「只有我才寫得好」這是 ego,不是 leadership

一個檢驗方法:

如果你不在的時候,團隊完全無法運作,那你沒有在做 Tech Lead 的工作,你只是在當最忙的工程師。好的 Tech Lead 讓團隊在自己不在時也能正常運作。


Junior 工程師 vs Tech Lead 的思維差異

面向Junior 思維Tech Lead 思維
看到 bug怎麼修為什麼會發生?怎麼防止再犯?
新 feature怎麼實作值不值得做?優先級?
技術選擇什麼最新什麼最適合我們
code review有沒有 bug設計合不合理?可維護嗎?
時間壓力加班趕完調整 scope 或 deadline
溝通完成了通知 PM主動同步風險和進度
成功定義我寫的 code 被 merge團隊交付了好的產品

FAQ

Q1: Tech Lead 和 Engineering Manager 有什麼不同?

Tech Lead 偏技術決策和技術帶人,Engineering Manager 偏人事管理(hiring、performance review、career development)。有些公司兩個角色是同一個人,有些分開。如果你不喜歡處理人事問題,Tech Lead 可能更適合你。

Q2: 當 Tech Lead 薪水比較高嗎?

在台灣,Tech Lead 的薪水通常比 Senior 高 10-20%,但不是大幅跳升。真正的薪水差異在 Engineering Manager 或 Principal Engineer 等級。Tech Lead 的價值在於影響力和成長機會,不純粹是薪水。

Q3: 當了 Tech Lead 技術會退步嗎?

如果你完全不寫 code,會。所以要保持一定比例的 coding(大概 30%)。但你的技術成長方向會改變:從「寫更好的 code」變成「做更好的技術決策」。你會對系統有更全面的理解。

Q4: 不想管人但想繼續走技術,有什麼選擇?

Individual Contributor(IC)路線:Senior → Staff → Principal → Distinguished。這條路線在大公司(Google、Meta、Amazon)很成熟。你不用管人,但影響力要到技術組織層面。在台灣,這條路線的機會相對少。

Q5: 怎麼知道自己適不適合當 Tech Lead?

問自己幾個問題:

  • 你願意花時間幫別人解問題,即使自己做更快嗎?
  • 你願意在會議中翻譯技術語言嗎?
  • 你願意做決策並承擔後果嗎?
  • 你能接受「團隊成功」比「個人產出」更重要嗎?

如果大部分答案是 yes,你可能適合。


系列導航