Kent Beck: 주니어 엔지니어가 작업 완료에서 고영향력 성과로 전환하는 방법
Kent Beck: 주니어 엔지니어가 작업 완료에서 고영향력 성과로 전환하는 방법
주니어 엔지니어링의 목표는 처리량이 아닌 성장이다
주니어 엔지니어에게 성공의 주요 지표는 완료한 작업의 수가 아니라, 개선 속도와 시스템에 더해진 가치이다. 시니어 엔지니어는 신입 사원의 급여를 그 엔지니어가 미래에 될 모습에 대한 ""option premium""으로 간주하며, 즉각적이고 단기적인 생산성보다 고성능의 차세대 인재를 육성하는 것을 우선시한다.
성과 계층 구분: A, B, C 엔지니어
시니어 엔지니어는 멘토링과 지원 리소스를 어떻게 배분할지 결정하기 위해 신입 사원을 세 가지 계층으로 분류한다:
- Category A (Game-Changers): 주변의 모든 사람을 더 생산적으로 만드는 엔지니어.
- Category B (Solid Performers): 안정적인 기여자로 성장하는 신뢰할 수 있는 엔지니어.
- Category C (Underperformers): 1년 이내에 해당 역할에서 성공할 가능성이 낮은 엔지니어.
시니어 엔지니어는 시간이 한정되어 있기 때문에, Category A 성과자를 가장 공격적으로 지원하는 것을 우선순위로 두며, 그 다음은 Category B이며, 지속적으로 Category C임을 나타내는 사람들에게는 노력을 최소화한다.
기준점: 'B' 엔지니어의 신호
탁월함을 추구하기 전에, 주니어 엔지니어는 먼저 자신이 Category C 성과자가 아님을 증명해야 한다. ""solid"" (Category B) 엔지니어의 기준은 신뢰성과 부정적인 외부 효과를 피하는 것으로 정의된다. 주요 신호는 다음과 같다:
- Functional Code: 제출된 코드가 실제로 작동한다.
- Communication: 현재 활동에 대해 팀에 계속 알린다.
- Reasonable Timing: 합리적인 시간 내에 작업을 완료한다 (이상적으로는 초기 추정치의 3배 이내).
- Minimizing Friction: 타인에게 불합리한 양의 업무를 유발하지 않는다. 도움을 요청하는 것은 괜찮지만, 과도한 리뷰어의 수고를 초래하거나, on-call 에러나 DevOps 인시던트를 유발하는 것은 부정적으로 간주된다.
엔지니어를 즉시 Category C로 낙인찍는 결정적인 실패는, 작업이 완료되지 않았음에도 완료되었다고 주장하며 시스템을 속이려는 모든 시도이다.
탁월함으로 가는 길: 'A' 엔지니어의 신호
고영향력 (Category A) 엔지니어를 구분 짓는 것은 완료한 작업의 양이 아니라, 각 작업에서 추출한 학습량과 생산성의 ""first derivative""이다. 고성과자는 다음과 같은 행동을 통해 가치를 증명한다:
Strategic Task Execution
- Questioning Necessity: 작업이 전혀 필요하지 않다는 설득력 있는 근거를 제시한다.
- **Pareto Optimization: 작업의 10%를 수행하여 90%의 이익을 제공한다.
- Iterative Implementation: 최선의 접근 방식을 찾기 위해 작업을 여러 방식으로 구현한다.
- Simplification: 더 나은 설계를 발견하고, 필요한 기능을 구현하면서 기존 코드베이스를 단순화하는 diffs를 제출한다.
Workflow and Tooling
- Incremental Delivery: 거대한 pull request 하나 대신, 작고 매일 제출하는 diffs의 연속을 제출한다.
- **Tooling Improvements: 팀 전체를 위한 반복적인 작업을 단순화하는 내부 도구를 작성한다.
- Cross-Team Contribution: 주요 책임을 소홀히 하지 않으면서, 즉시 속한 팀의 범위를 벗어난 영역에서도 유용하게 쓰이는 diffs를 제출한다.
Professional Growth and Collaboration
- Insightful Reviewing: 반응이 빠르고 통찰력 있는 코드 리뷰어로 활동한다.
- Quality Assurance: 모든 작업에 견고한 unit tests를 포함한다.
- Knowledge Sharing: 학습한 내용을 타인을 위해 설득력 있고 유용하게 문서화한다.
탐색과 전달의 균형
대부분의 ""A signals""는 작업을 완료하는 데 필요한 절대적인 최소 시간보다 더 많은 시간을 요구한다. 이를 달성하기 위해, 주니어 엔지니어는 작업을 완료하는 위한 절대적인 최소 시간을 목표로 삼는 것이 아니라, 합리적인 시간을 목표로 삼아야 한다. 더 나은 시간 및 작업 관리로 인해 절약된 시간은 팀과 시스템에 이익이 되는 이러한 고가치 활동에 재투자할 수 있다.