Kent Beck: 如何從完成任務轉型為高影響力表現的初級工程師
Kent Beck: 如何從完成任務轉型為高影響力表現的初級工程師
初級工程師的目標是成長,而非吞吐量
對於初級工程師而言,主要的成功指標並非完成任務的數量,而是進步的速度以及為系統帶來的價值。資深工程師將新進員工的薪資視為對該工程師未來潛力的「期權權利金」(option premium),比起眼前的短期生產力,他們更優先考慮培養高績效的下一代人才。
區分績效層級:A、B 與 C 級工程師
資深工程師會將新進員工分為三個層級,以決定如何分配導師制(mentorship)與支援資源:
- Category A (Game-Changers): 使身邊每個人都變得更有效率的工程師。
- Category B (Solid Performers): 可靠且能成長為穩定貢獻者的工程師。
- Category C (Underperformers): 一年內不太可能勝任該職位的工程師。
由於資深工程師的時間有限,他們會最積極地支持 Category A 的表現者,其次是 Category B,同時盡量減少在那些持續表現出 Category C 跡象的人身上花費精力。
基準線:'B' 級工程師的訊號
在追求卓越之前,初級工程師必須首先證明自己不是 Category C 的表現者。一個「穩健」(Category B)工程師的基準線是由可靠性以及避免產生負面外部性(negative externalities)來定義的。關鍵訊號包括:
- 功能性程式碼 (Functional Code): 提交的程式碼確實可以運作。
- 溝通 (Communication): 讓團隊隨時了解目前的活動狀況。
- 合理的時程 (Reasonable Timing): 在合理的時程內完成任務(理想情況下是在初始估計的三倍以內)。
- 減少摩擦 (Minimizing Friction): 避免為他人創造不合理的工作量。雖然尋求協助是可接受的,但造成過度的審查負擔(reviewer toil)、值班錯誤(on-call errors)或 DevOps 事件(DevOps incidents)會被視為負面表現。
任何試圖透過聲稱工作已完成但實際上並未完成來規避系統的行為,都是會立即將工程師標記為 Category C 的關鍵失敗。
邁向卓越之路:'A' 級工程師的訊號
區分高影響力(Category A)工程師的並非完成任務的數量,而是從每個任務中提取的學習量,以及其生產力的「一階導數」(first derivative)。高績效者透過以下行為展現價值:
策略性任務執行
- 質疑必要性 (Questioning Necessity): 提供令人信服的理由,證明某項任務根本不需要執行。
- 帕累托優化 (Pareto Optimization): 找出任務中那 10% 能提供 90% 效益的部分。
- 迭代式實作 (Iterative Implementation): 以幾種不同的方式實作任務,以尋找最佳方法。
- 簡化 (Simplification): 發現更好的設計,並在實作所需功能時提交能簡化現有程式碼庫的 diffs。
工作流與工具
- Incremental Delivery: 提交一系列小型的、每日的 diffs,而非提交一個巨大的 pull request。
- 工具改進 (Tooling Improvements): 編寫內部工具,簡化整個團隊重複性的任務。
- 跨團隊貢獻 (Cross-Team Contribution): 在不忽視主要職責的前提下,向其直接所屬團隊範圍之外的領域提交有用的 diffs。
專業成長與協作
- Insightful Reviewing: 作為一名反應迅速且具洞察力的程式碼審查者(code reviewer)。
- Quality Assurance: 在所有工作中包含穩健的單元測試(unit tests)。
- Knowledge Sharing: 以具說服力且對他人有用的方式記錄學習心得。
平衡探索與交付
大多數「A 級訊號」都需要比完成任務所需的絕對最小時間更多。為了達成此目標,初級工程師不應以完成任務的絕對最小時間為目標,而是應以合理的時程為目標。透過更好的時間與任務管理所節省下來的時間,應該重新投入到這些能造福整個團隊與系統的高價值活動中。