前言

好的工程師和普通的工程師到底差在哪裡?成長的軌跡又有哪些階段?

對公司而言,工程師的第一優先是快速 ship feature、達成商業需求;只有當能穩定交付、為團隊釋放出時間後,才會有更大的空間培養專業能力。

這跟學校的想法完全不同:在學校我可以慢慢理解;在公司我必須先讓系統動起來、讓功能上線,然後再空出時間學習。

成長的軌跡

Level 1:達到及格線——框架使用者

這個階段的目標:先活下來。能在短時間內進入狀況、開始貢獻產出。

  1. 特徵:能上手被交付的任務
  2. 主要的能力是:
    • 熟悉專案架構、工具鏈、CI/CD
    • 能依樣畫葫蘆完成任務
    • 把定義好的feature做出來,即使品質還不完美

Level 2:開始產生影響——功能與設計的實作者

到了第二層級,不只是會照做,而是開始能獨立完成任務,並在一定範圍內做出設計決策。

  1. 特徵:
    • 能從需求,設計出Feature和API規格
  2. 這階段的工程師通常開始做到:
    • 會拆解需求與任務
    • 能寫出更可讀、可維護的程式碼
    • 懂得 trade-off:效能、成本、開發速度之間的平衡,故可以提出不同的方案給需求方

Level 3:開始經營職涯——真正的工程師

真正的工程師,不只是寫程式,而是規劃並打造系統。寫的軟體不僅能跑,更能在未來持續擴張。

工程師設計與撰寫軟體時,要同時平衡「穩定」與「改動」。

資深工程師的差異,在於他能決定:

  • 要做什麼
  • 為什麼做
  • 怎麼做才對
  • 什麼不該做

有幾個具體的衡量點:

  1. Scope & Impact(範圍與影響力) 能處理更大的系統、更長的時間尺度、更高的商業影響。
  2. Navigate through ambiguity(在模糊中前進) 資深工程師最大的能力,是能在資訊不完整、需求不明確時,仍能推進事情。

資深工程師會問的問題不是「怎麼做」,而是:

  • Can you do this?(你做得到嗎?)
  • How can you do it well?(怎樣才算做得好?)
  • Should we do this?(這件事值得做嗎?)
  • What should we do?(我們到底該做什麼?)

為什麼沒有在進步?

因為最難的從來不是技術,而是:每天擠出 1 小時,開始讓自己進入能力的複利成長。我會把時間花在「把工作做完」,但幾乎沒有時間花在「讓自己進步」。

而厲害的工程師,通常會刻意做這些投資:

學習

  1. 多讀一份設計文件
  2. 提升Debug的能力,把除錯工具用到精通
  3. 更深入理解你正在用的技術
  4. 多讀一本書,建立長期系統性的理解

關係

  1. 善於溝通,維持值得信任的合作關係
  2. 不要低估自己和主管的關係,務必讓主管理解我身為開發者的職涯目標和期待
  3. 在會議過後自己研讀資料,並做出建議
  4. 參與meetups或是conference,這些是許多機會的來源

參考文章

https://betterprogramming.pub/the-one-key-skill-i-look-for-to-judge-seniority-426041dc2967

https://youtu.be/ztZphO13iIY?si=FXWlpA5BCnEa_jjT