前言
好的工程師和普通的工程師到底差在哪裡?成長的軌跡又有哪些階段?
對公司而言,工程師的第一優先是快速 ship feature、達成商業需求;只有當能穩定交付、為團隊釋放出時間後,才會有更大的空間培養專業能力。
這跟學校的想法完全不同:在學校我可以慢慢理解;在公司我必須先讓系統動起來、讓功能上線,然後再空出時間學習。
成長的軌跡
Level 1:達到及格線——框架使用者
這個階段的目標:先活下來。能在短時間內進入狀況、開始貢獻產出。
- 特徵:能上手被交付的任務
- 主要的能力是:
- 熟悉專案架構、工具鏈、CI/CD
- 能依樣畫葫蘆完成任務
- 把定義好的feature做出來,即使品質還不完美
Level 2:開始產生影響——功能與設計的實作者
到了第二層級,不只是會照做,而是開始能獨立完成任務,並在一定範圍內做出設計決策。
- 特徵:
- 能從需求,設計出Feature和API規格
- 這階段的工程師通常開始做到:
- 會拆解需求與任務
- 能寫出更可讀、可維護的程式碼
- 懂得 trade-off:效能、成本、開發速度之間的平衡,故可以提出不同的方案給需求方
Level 3:開始經營職涯——真正的工程師
真正的工程師,不只是寫程式,而是規劃並打造系統。寫的軟體不僅能跑,更能在未來持續擴張。
工程師設計與撰寫軟體時,要同時平衡「穩定」與「改動」。
資深工程師的差異,在於他能決定:
- 要做什麼
- 為什麼做
- 怎麼做才對
- 什麼不該做
有幾個具體的衡量點:
- Scope & Impact(範圍與影響力) 能處理更大的系統、更長的時間尺度、更高的商業影響。
- Navigate through ambiguity(在模糊中前進) 資深工程師最大的能力,是能在資訊不完整、需求不明確時,仍能推進事情。
資深工程師會問的問題不是「怎麼做」,而是:
- Can you do this?(你做得到嗎?)
- How can you do it well?(怎樣才算做得好?)
- Should we do this?(這件事值得做嗎?)
- What should we do?(我們到底該做什麼?)
為什麼沒有在進步?
因為最難的從來不是技術,而是:每天擠出 1 小時,開始讓自己進入能力的複利成長。我會把時間花在「把工作做完」,但幾乎沒有時間花在「讓自己進步」。
而厲害的工程師,通常會刻意做這些投資:
學習
- 多讀一份設計文件
- 提升Debug的能力,把除錯工具用到精通
- 更深入理解你正在用的技術
- 多讀一本書,建立長期系統性的理解
關係
- 善於溝通,維持值得信任的合作關係
- 不要低估自己和主管的關係,務必讓主管理解我身為開發者的職涯目標和期待
- 在會議過後自己研讀資料,並做出建議
- 參與meetups或是conference,這些是許多機會的來源
參考文章
https://betterprogramming.pub/the-one-key-skill-i-look-for-to-judge-seniority-426041dc2967