페이스북의 테크 리더로 일하고 있는 Bobi님이 그동안 본 개발자의 특징을 Medium에 정리한 글을 번역한 글입니다.
원문 1: Junior vs. Senior vs. Staff Engineer
원문 2: What does a Principal Software Engineer do?
주니어 개발자
주로 코딩 능력을 보여주고 엔지니어링 실무에 익숙해지는 데 초점을 맞춘다.
- 🖥 최신 프레임워크로 마이그레이션하고 누락된 테스트를 추가하는 등 코드베이스를 이해하고 이를 발전시키기 위해 요청사항을 처리함.
- 🖥 코드를 깔끔하게 적음.
- 🖥 중형에서 대형 기능까지 독립적으로 완성할 수 있음.
- 🗣 다른 분야(설계, PM, 분석가) 사람들과 함께 업무를 수행할 수 있음.
시니어 개발자
자신을 "어떤 서비스나 시스템의 소유자"로서 해당 제품에 대한 전문 지식을 처음부터 끝까지 잘 알고 있어야한다.
- 🖥 대규모 프로젝트를 높은 수준의 생산성으로 설계, 세분화 및 완료함.
- 🖥 별도의 가이드 없이 스스로 기존 시스템/제품의 문제를 능동적으로 발견하고 솔루션을 제공함.
- 🖥 소규모 그룹(예: 주간 회의 개최, 다른 파트너와의 서면 커뮤니케이션)과 함께 프로젝트를 진행할 수 있음.
- 🗣 인터뷰나 멘토링과 같은 활동을 통해 개발팀 발전에 기여함.
- 🗣 동료에게 구체적이고(on-point) 실행 가능한 피드백 제공.
- 🗣 지속적인 프로젝트를 촉진할 수 있는 XFN 및 XFN 관계를 구축할 수 있는 역량을 갖고 있음.
스태프 개발자 (테크 리드)
일반적으로 각 엔지니어링 팀은 1-2명의 "스태프 엔지니어 (staff engineer)"를 보유하고 있으며, 이들은 "테크 리드"로 간주된다. 그는 팀의 성공을 엔지니어링 매니저와 공동 소유하고 있다.
기술적 측면에서는 다른 사람이 거의 할 수 없는 기술적 문제를 스태프 엔지니어가 파악하고 해결할 수 있다는 점이 가장 큰 차이점이다.
- 🖥 시스템/제품의 가장 어려운 부분을 구현할 수 있음.
- 🖥 적절한 테스트, 잘 계획된 발표 및 모니터링과 같은 모범 사례와 함께 고품질 작업 제공.
- 🖥 새 시즌 로드맵과 같이 팀의 방향을 설정하는 노력을 주도할 수 있음.
- 🖥 시스템/제품/조직의 가장 큰 애로사항을 파악하고 솔루션을 제안함. 여기서 말하는 솔루션은 명확한 결과물과 이정표가 있는 해결책이며 구현하는 데 수년이 걸릴 수 있음.
- 🖥 가장 중요한 것은 XFN의 동료(DS/design/PM/등)를 활용할 수 있는 역량을 입증하는 것! 또한 프로젝트 산출물을 평가하고 검증할 수 있어야 함.
- 🗣 구두 및 서면 모두에서 뛰어난 의사 전달자.
- 🗣 팀에 할당되지 않은 리소스를 활용할 수 있음.
- 🗣 신입 팀원을 주니어 및 시니어 모두 모집하고 교육할 수 있음.
- 🗣 최신/최고의 코딩 작업 방식을 채택하는 등 조직 내 엔지니어링 문화에 영향을 미칠 수 있음.
수석 개발자
일반적으로 수석 엔지니어는 여러 팀, 조직 수준의 영향을 미치는 이니셔티브를 파악, 추진 및 제공할 수 있어야한다.
- 🖥 비즈니스에 중요하고 조직 대 기업 수준에 영향을 미치는 기회를 파악함.
- 🖥 주요 성공 지표를 식별하고 중요한 경로의 구성요소에만 집중함.
- 🗣 조직의 엔지니어링 문화에 지속적으로 영향을 미침.
- 🗣 수석 엔지니어 및 관리자 채용 지원
- 🗣 업계의 새로운 제품 또는 기술 평가
'수석 개발자'의 유형
- Generalist: 제품/서비스 분야의 확고한 리더. 지속적으로 큰 영향력을 행사함.
- Specialist: 특정 영역의 전문가로 간주되는 사람. 자신의 분야 발전에 지속적으로 기여함.
- Coding Machine: 복잡한 문제에 대한 솔루션을 구축하고 대부분의 엔지니어보다 훨씬 빠르게 수행함.
- Product Manager(PM) Hybrid: XFN 커뮤니케이션, 제품 전략 및 기술 솔루션이 필요한 복잡한 비즈니스 문제를 해결함.
좋은 번역 감사합니다.