Search

개발자 커리어 체크리스트🇰🇷(Appsilon Career Paths and Key Skills 2023-07 ver.)

위 글에서 앱실론이란 데이터 컨설팅 기업에서 사용하는 커리어 프레임워크를 알게 됐다. 기업에서는 비싸게 뽑은 인력 ‘관리’를 잘하는 것이 중요하다. 그런데 꽤 큰 테크기업의 이런 평가표를 알게 됐으니, 개인으로선 그 기준에 맞춰 자신을 되돌아보고 또 준비하며 경력 개발을 할 수 있겠다 싶었다(적어도 한 회사 승진하는 법을 오픈북으로 볼 수 있는것 아닐까?)
그리고 직접적으로 관심이 커진 것은, 위 글에서 포함된 커리어 프레임워크(현재의 정확한 이름은 Career paths and Key skills이다)의 L3 번역본을 보고 나서이다.
많은 감정이 들었는데…(글 후반에 기술) 무엇보다 나를 체크하기 위해 Career paths and Key skills를 한번 전체를 읽어보기로 했다. 내친 김에 전체 두 개 경로의 각 항목을 번역하고 체크리스트로 만들어 보기로 했다.

Tech Leadership PathBusiness Leadership Path

미리 말하자면, 나는 아직까지 IC(individual contributor)를 목표로 경력 개발을 하고 싶다. 하지만 욕심이 많아서 Manager(통상적으로 Product Manager, 여기선 Delivery Manager)의 기술 역량을 포기하고 싶진 않다.
따라서 둘 다에 대한 각 레벨별 Impact만 기술한다. Example Achievements/Antigoals는 따로 번역하지 않는다. 각 항목의 예시를 채워가며 체크하는 것도 재밌을 것이다.

Software Engineer

L3 - 잠재력 있는 엔지니어

통상 다른 업계에서 기술 습득 후 첫 번째 정규직 엔지니어링 및 컨설팅 업무를 할 수 있는 엔지니어
개발(dev)
DoD에 따라 코드, 테스트 및 문서를 작성한다.
직접 감독 하에 기능 및 버그 수정을 위한 소프트웨어 설계에 참여한다.
ci/cd
팀의 개발 워크플로우를 이해한다.
1인 프로젝트에서 git을 효과적으로 사용하고 대규모 프로젝트의 gitflow 워크플로우를 학습(learn)한다.
지속적 통합 및 지속적 배포 프로세스에 사용되는 도구에 대한 전반적인 이해가 있다.
진행(process)
프로젝트 회의에서는 프로젝트 진행에 필요한 모든 정보를 수집한다.
향후 회의를 원활하게 진행할 수 있도록 회의 진행 방식을 학습한다.
신뢰성(reliability)
기한에 맞춰(on time) 결과를 제공합니다(deliver).
너무 많은 컨텍스트를 장황하지 않게 효과적으로 전달한다.
작업을 꾸준히 진행한다.
작업에 막힘이 없도록 언제 도움을 요청해야 하는지 알고 있다.
주도성(initiative)
자신의 직접적인 책임을 넘어 회사의 다른 영역에 도움을 주고자 하는 열린 자세이다.
팀워크(teamwork)
팀 내 의사소통을 효과적으로 한다(Effective in communicating status to the team).
다른 사람들에게 작업 중인 내용을 알게 한다.
메시지에 효율적이고 예측 가능한 방식으로 답장한다(반드시 즉각적인 답장은 아님).
의사소통(communication)
의사 소통 시 생각을 명확히 전달한다.
고객이 혼란스럽지 않게 작은 업데이트 사항을 전달하고 간단한 질문을 명확하게 설명합니다.
학습(learning)
빨리 배운다.
다른 사람에게 피드백을 구하고 개선 방법을 찾기 위해 노력한다.
같은 실수를 두 번 반복하지 않는다.
적절한 순간에 도움을 요청하고 그로부터 배운다.
겸손하다.
믿을만한 기여자(Solid Contributor)가 되기 위한 전문성 성장에 집중한다.
스스로 효과적인 학습 방법을 찾는다.

L4 - 믿을만한(Solid) 엔지니어

소프트웨어 및 컨설팅 회사 문화를 이해하고 숙련된 프로젝트 리더 아래에서 양질의 작업을 제공할 수 있는, 소규모 프로젝트를 독립적으로 수행하는 엔지니어
개발(dev)
숙련된 엔지니어의 지도 없이 기능을 설계, 개발, 출시 및 유지 관리한다.
명확하고 간결하며 테스트가 완료되고 다른 사람이 쉽게 이해할 수 있는 코드를 구현한다.
단위 테스트를 작성한다.
프로젝트 DoD를 따른다.
DoD에 따라, 팀에서 도움이 된다고 인정하는, 엄격한 코드 리뷰를 수행한다.
기술 부채를 효과적으로 관리한다.
가능한 경우 모든 PR 기술 부채를 청산한다.
필요한 경우에만 부채를 지고 주석이나 README에 써 둔다.
의사소통(communication)
기술적 글 쓰기(technical writing) - 유익한(informative) 문서, 읽기 설명서(README), 코드 주석, 구현 계획, 작업 설명을 쓴다.
가정(assumptions)을 이야기하고 작업에 대한 설명을 요청한다.
오해한 명세(specification)로 잘못 작업하지 않는다.
ci/cd
개발 워크플로 모범 사례를 도입 및 관리한다.
효과적인 git 사용
지속적 통합(Continuous Integration)
지속적 배포(Continuous Deployment)
자동화
리더십(leadership)
소규모(또는 대규모 일부) 프로젝트를 리드(lead) 그리고 배송(delivery)한다
진행(process)
위험과 지연 가능성에 대해 미리 소통한다.
전달된(communicated) 문제에 대한 해결책을 제안한다.
작업의 우선순위를 정할 수 있으며, 중요하지 않은 세부 사항에 얽매이거나 막히지 않는다.
배송 마인드(Shipping mindset).
주도성(initiative)
고객을 위한 가치를 더할 수 있는 아이디어를 창출한다.
고객의 비즈니스와 요구 사항을 이해하고 고려한다.
자신의 직접적인 책임 외에, 회사의 다른 영역에도 도움을 준다.
목적을 묻고 "왜 이 일을 하는가?"에 대한 답을 효과적으로 찾는다.
제안된 접근 방식에 이의를 제기하고 대안을 제시한다.
가르치기(teaching)
L3 기여자에게 고품질의 결과물을 효과적으로 제공하는 방법을 멘토링한다.
L3 기여자는 배운 내용과 방법을 쉽게 기억할 수 있어야 한다. (협업, 좋은 조언이나 팁, 기술 강연, 슬랙 또는 StackOverflow에 대한 답변 등).
융통성(flexibility)
예상치 못한 어려운 상황에서 기꺼이 도움을 준다. (예: 데모 전날 중요한 버그 수정, 고객 요청에 따른 일회성 대기 모드(on-call), 많은 준비 없이 도움이 필요한 프로젝트에 합류 등)
사업(business)
디스커버리 워크숍, 교육 워크숍, 기술 쇼케이스 등에 참여하여 기술 팀의 새로운 프로젝트를 수주하는 데 참여한다.
애자일 프로젝트의 범위 설정에 대한 개념과 고정 범위 프로젝트를 피하는 방법(how to avoid fixed scope projects)을 이해한다.

L5 - 선임 엔지니어

중대형 프로젝트에 핵심적인 기여(e.g. 테크리드)를 하는 엔지니어. 팀과 지식을 공유할 준비가 되어 있을 뿐만 아니라 다른 분야에서도 전문적으로 일할 준비가 되어 있는 숙련된 개발자.
주도성(initiative)
프로젝트 전반의 업무 방식을 개선하는 데 주도적으로 참여한다.
엔지니어링 성숙도와 품질에 대한 책임을 진다.
요구 사항의 문제(명확성 부족, 불일치, 기술적 한계)를 사전에 파악하고 이러한 문제를 조기에 전달한다.
ci/cd
CI/CD 프로세스 개선과 자동화를 도입하고 세계 표준에 맞게 최신으로 유지한다.
리더십(leadership)
중간 규모의 프로젝트에서는 프로젝트 리더, 대규모 프로젝트에서는 기술 리더의 역할을 담당한다.
설계, 개발, E2E 테스트 및 배포를 포함한 프로젝트 또는 기능의 전체 수명 주기를 독립적으로 책임진다.
팀 결과에 대한 책임을 진다.
실수나 혼선을 능숙하게 처리한다.
일부 분야(성장(growth), 프리세일즈, 채용, 오픈소스)의 기술 소유자이며, 그렇지 않다면 적어도 일부 분야(예: 우수한 채용 담당자 또는 뛰어난 프리세일즈 컨설턴트)에서 뛰어난 전문가이다.
다른 사람에게 작업을 위임한 후 받은 결과물을 평가하는 방법을 알고 있다.
높은 품질에 대한 책임감을 느끼며 다른 기여자에게도 이를 기대한다.
개발(dev)
독립적으로 고품질 솔루션을 만든다.
프로젝트의 기술 부채를 관리한다.
코드 구조와 아키텍처 개선으로 테스트 가능성(testability)과 유지보수 용이성(maintainability)을 제공한다.
개념 증명, 테스트 및 외부 연구를 통해 경험적 증거를 찾는다.
잘 구워지고(well-baked) 버그가 없는 것(bug-free)으로 인식되는 복합 제품을 고객에게 제공한다.
가르치기(teaching)
소프트웨어 장인 정신의 다양한 영역의 L3, L4 및 L5 공여자들의 멘토가 된다.
경험이 적은 동료를 멘토링하는 것 외에도 내부 지식 기반을 만든다.
디자인 문서, 기술 토크 및 토론 그룹을 효과적으로 사용하여 기술적 의사 결정을 전달한다.
팀원 간에 지식을 공유하여 자신이나 다른 사람이 단일 실패 지점이 되지 않게 한다.
지속적으로 학습하고, 항상 새로운 지식의 원천을 찾고자 하며, 힘들거나 불가능하더라도, 일상적인 활동에서(in the day-to-day activities), 지식을 계속 늘려나간다.
의사소통(communication)
외국 고객에게 전문적인 인상을 남기고 효과적으로 소통한다.

L6 - 스태프 엔지니어

숙련된 엔지니어를 위한 맞춤형 역할
리더십(leadership)
하나 또는 작은 몇 개의 회사와 팀의 성장을 위한 전략적 이니셔티브 주도한다.
프로젝트의 성공과 기술적 품질을 책임진다.
팀 전체가 지치지 않고(without burning out) 효과적으로 일할 수 있게 한다.
개발(dev)
중요한 기술 전문 분야에서 존경받는 권위자이다.
소프트웨어 장인 정신의 다양한 영역에서 다른 기술 팀원에게 영감을 주고 멘토링한다.
영향력이 큰 교육에 시간을 할애하기 위해 필요하다면 계약(commitments)을 재협상한다.
가르치는 방법을 가르친다.
영향력(impact)
기술팀 목표를 수립하고 크게 기여한다.
사업(business)
고객, 제품 관리자, 부서 간 파트너, 외부 파트너를 포함한 내/외부 이해관계자와의 관계를 구축하여 목표 달성에 도움이 되는 바이 인을 달성한다.
가르치기(teaching)
자신의 이니셔티브를 주도할 뿐만 아니라 어려운 상황에 처한 다른 프로젝트 팀과 협의하고 도움을 준다.
다양한 상황에서 도움을 준다.
개발을 시작하고 품질 표준을 설정
예상치 못한 부재 시 주요 기여자를 대체하기

L7 - 수석 엔지니어

이 직책은 팀이 성장하는 동안 우리도 배우면서 계속 정의하고 있다
리더십(leadership)
팀과 분야의 경계를 넘나드는 대규모의 전략적이고 복잡한 프로젝트를 이끈다.
광범위한 기술 변화를 예측하고 회사(Appsilon)가 가장 유망한 트렌드의 얼리 어답터, 선구자가 될 수 있도록 한다.
사업(business)
엔지니어링 전략과 서비스 제공 방식에 대해 이사회에 영향을 미친다.
업계에서 뚜렷한 업적으로 인정받고 있다.
외부 대변인으로서 회사(Appsilon)을 대표한다.
잠재 고객, 소중한 팀원 및 파트너와의 관계를 육성하여 새로운 프로젝트, 채용 또는 파트너십으로 발전시킨다.
가르치기(teaching)
기술팀 전체에서 영감을 주는 코치이자 멘토 역할을 한다.

Delivery Manager

M3 - 정규(Regular) 프로젝트 관리자

강력한 커뮤니케이션 기술
팀원, 이해관계자 및 고객과 효과적으로 소통하여 프로젝트 목표와 요구 사항을 명확하게 이해한다.
프로젝트 계획 및 조직
프로젝트 계획을 수립하고, 현실적인 타임라인을 설정하고, 프로젝트 라이프사이클 전반에 걸쳐 진행 상황을 추적하는 능력.
위험 관리
잠재적 위험을 식별하고 프로젝트에 미치는 영향을 최소화하기 위한 완화 전략을 개발한다.
고객, 팀원, 외부 공급업체 등 다양한 프로젝트 이해관계자와의 관계를 관리하고 소통하는 능력.
팀 리더십
팀원들에게 영감을 주고 동기를 부여하며, 협업을 촉진하고, 긍정적인 업무 환경을 조성하여 생산성을 극대화하고 프로젝트 목표를 달성한다.
품질 보증
프로젝트 결과물이 필요한 품질 표준을 충족하고 확립된 프로세스를 준수하는지 확인한다.
변경 관리
프로젝트 범위, 요구사항 또는 일정의 변경에 적응하고 팀 및 이해관계자와 효과적으로 소통하고 관리한다.
문제 해결
복잡한 문제를 분석하고, 실행 가능한 솔루션을 파악하고, 정보에 입각한 의사 결정을 내려 프로젝트 도전과제를 극복한다.
기술적 이해
소프트웨어 개발 개념, 기술 및 방법론을 숙지하여 개발 팀과의 효과적인 커뮤니케이션 및 의사 결정을 촉진한다.
지속적인 학습(Continuous Learning)
업계 동향, 모범 사례 및 새로운 기술에 대한 최신 정보를 파악하여 프로젝트 관리 기술을 향상하고 전문성 성장에 기여한다.

M4 - 경험이 풍부하지만, 신입 배송(Delivery) 관리자

영향력 범위: 숙련된 딜리버리 매니저가 될 잠재력을 가진 프로젝트/엔지니어링 매니저
(프로젝트 관리 경력이 있다면) 프로젝트 리더의 역할을 수행할 수 있다.
최신 기술(Python/React/Django)로 애자일 IT 프로젝트를 관리하고 개발 팀과 직접 협력한 경험이 있다.
회사(Appsilon)에서 소규모 프로젝트의 배송을 관리할 수 있다(최대 3명의 정규직).
회사 방식(Appsilon Way)을 배운다.
고객 측의 제품 소유자 및 스폰서와 관계를 구축할 수 있다.
영업 단계에서 기여한다.
비즈니스 요구 사항을 추출하고 이해하며 고객의 문제를 실현 가능하고 달성 가능한 솔루션으로 재구성할 수 있다.
프로젝트의 품질에 대해 생각한다.
기술 부채를 유지하고 품질을 개선하기 위해 기술 지식이나 기술 리더의 조언을 활용한다.
육성(nurturing, 고객 팀과 새로운 관계 구축, 새로운 비즈니스 기회 창출) - 실습을 통해 배우고 숙련된 DM의 멘토링을 받는다.
고객 만족(superpleasing, 고객에게 110% 제공, 고객을 흥분시키거나 멋진 서비스 경험을 느낄 수 있는 작은 추가 사항 찾기) - 실습을 통해 배우고 숙련된 DM의 멘토링 받기
기존 고객 대상 마케팅 - 실습을 통해 배우고 경험 많은 DM의 멘토링 받기
시장에 귀 기울이기 - 시장 조사, 변화와 트렌드 파악, 앱실론에 변화 제안하기
회사(Appsilon) 프로세스, 체크리스트, AOR(?)을 따릅니다.
회사(Appsilon)의 접근 방식을 도전하고 개선점을 모색한다.
최대 10명의 개인 기여자를 직접 관리한다(일반적으로 L3 및 L4 레벨).
경력 지원과 멘토링을 제공하고 개인의 영향력 수준과 핵심 기술을 성장시킬 수 있는 기회를 찾는다.
IC가 회사(Appsilon)에서의 업무에 만족할 수 있도록 한다.
프로젝트 팀의 IC에게 스트레치 챌린지(stretch challenges)를 제공한다.
예를 들면, "자신의 작업을 보여줄 수 있도록"(기존 결과물 공유)처럼 정의한다.

M5 - 숙련된 배송(Delivery) 관리자

영향력 범위: 프로젝트 배포를 관리하고 개별 기여자(Individual Contributor)를 관리한다.
회사(Appsilon)에서 모든 프로젝트 규모의 배송을 관리할 수 있으며 이를 연속성(continuity, 장기 프로젝트)으로 전환할 수 있다.
고객 측의 다양한 직급에 있는 이해관계자들과 관계를 구축할 수 있다.
프로젝트가 고객과 예산 소유자의 목표 달성에 영향을 미쳤는지 확인한다.
고객 만족 - 고객에게 훌륭한 서비스 경험을 보장한다.
다른 배송 관리자에게 '서비스 경험'의 의미를 “양질의 업무가 곧 양질의 서비스를 의미하지는 않는다.”의 의미로써 멘토링한다.
육성(nutriting) - 고객 측 이해관계자들과 좋은 관계를 유지한다.
고객 측에서 일어나는 다양한 역학 관계(dynamics of different forces)와 큰 그림인식한다.
고객과 신규 프로젝트에 더 많은 영향을 미칠 수 있는 기회를 찾거나 기존 프로젝트에 더 많은 전문가를 투입한다.
기존 고객을 대상으로 마케팅 - 효과적인 이니셔티브를 제안하고 때로는 틀을 벗어날 수 있는 창의력과 용기가 있다.
직급에 관계없이 최대 10명의 IC를 직접 관리한다.
성장하는 또는 성과가 저조한 인재를 식별하고 적시에 조치를 취한다.
더 높은 급여 기대치를 통해 기여자에게 동기를 부여하는 방법을 알고 있다.
회사(Appsilon)가 인재에 투자하는 방식과 급여 시장에 대한 전략을 이해한다.
내부 이니셔티브에 참여하여 시스템이 작동하는 데 기여한다.
Talent Forge 소유자(? 헤드헌터 업체인듯)
기술 강연 코디네이터
벤치 관리(bench management)

M6 - 선임 배송(Delivery) 관리자

영향 범위: 프로젝트 배송(delivery)을 관리하고, 다른 배송 관리자를 멘토링하며, IC 및 DM을 관리한다.
고객 측의 부사장급(VP)/상무급(?, senior) 리더십과 관계를 구축할 수 있다.
L5 책임 외에도 프로젝트를 조직하는 방식, 양질의 작업을 제공하는 방법, 고객의 서비스 경험을 개선하는 방법에 대한 개선 사항을 제안한다.
프로젝트 리더와 기술 책임자부터 L3 기여자에 이르기까지 프로젝트에 참여하는 모든 기여자를 참여시키고 교육함으로써 프로젝트의 지속 또는 연장을 위한 승수(multiplier) 역할을 한다.
단순히 코드를 제공하는 것보다 영향력이 무엇이며 왜 더 중요한지 교육한다.
프로젝트 팀에게 어떤 행동이 더 나은 서비스 경험으로 이어질 수 있는지 영감을 준다.
다른 배포 관리자를 직접 관리한다.
DM으로서 효과적으로 일하는 방법과 다른 IC의 직접 관리자가 되는 방법을 멘토링한다.
IC 그룹도 관리한다.
팀으로서 지식을 쌓을 수 있도록 한다.
개괄적인 지식 기반을 최신 상태로 유지하고, 배운 교훈을 기록하여 쉽게 접근할 수 있도록 한다.
DM 워크샵/지식 교류를 통해 지식을 공유한다.

M7 - 배송 부서 책임자(Director of Delivery Unit)

영향 범위: 배송 부서에 대한 독립적인 책임
최대 50명 IC까지의 독립적인 배송 단위(delivery unit)를 책임진다.
자체적인 KPI와 목표가 있으며 이를 달성하거나 적시에 문제를 에스컬레이션한다.
고객 만족 - 단위의 배송 관리자(Unit deliverer)가 훌륭한 결과물로써, 고객 만족을 극대화한다.
문제가 발생했을 때 대응하고 해결책을 제안한다.
고객 피드백을 수집하기 위해 정기적으로 C-Sat 인터뷰 / NPS 설문 조사를 수행한다.
단위의 청구 가능성(billability)을 극대화한다.
신규 비즈니스의 경우 - 영업팀이 판매한 제품을 기반으로 한다.
진행 중인 비즈니스의 경우 - 부서 내 배송 관리자가 상향 판매(upsell)할 수 있는 제품을 기반으로 한다.
빈 벤치를 0으로 줄인다.
팀원 모두가 벤치에 있더라도 무엇을 해야 하는지 알 수 있다.
프로젝트 계획 - 모든 팀원에게 효과적인 계획이 있는지 확인한다.
모든 배송 AOR의 우수성을 감독합니다.

습득 교훈

IC, DM 둘 다 저렙 구간, 어릴 때 해야할 것이 훨씬 많다!
반면 고렙이 될 수록 항목은 적어지나 임팩트는 훨씬 클 것이다.
또 정량적 평가가 더 어려울 것이다. 그만큼 그 사람의 암묵지와 직관을 기대하게 될 것
IC path에 “이건 DM 역량 아니야?” 라고 생각되는게 꽤 있다.
이건 나의 요즘 생각(IC를 목표로 Manager 역량에 대한 욕심)이 틀리지 않았다는 반증이기도 하고
생각보다 더 잘해야하네 라고도 느꼈다.
Delivery라는 용어를 따로 쓴 게 맘에 든다. 나 역시 deployment와 delivery를 구분하여 일하고 있다.
continuous learning이란 표현도 맘에 든다.
DM 쪽에서 새로 알게 된 개념, 키워드가 꽤 많다.
superpleasing, bench mgmt, AOR, billability
물론 이 체크리스트가 비록 한 회사의 사례라 한계도 있다. 와 닿지 않거나 어떤건 “너무 열정 강욘데?” 싶기도 하고 어떤건 이런 부분도 관리한다니라는 위로, 안심 비슷한것도 느꼈다. 어떤 항목은 “이걸 어떻게/과연 당당하게 체크할 수 있을까?” 싶기도, 또 다른 항목은 크게 욕심나지 않아! 해버리기도 했다.
앞서 이야기 한, L3 영향력 항목을 보고 든 생각은, 과연 우리 조직은 얼마나 L3의 영향력을 내는가 또는 그런 사람은 몇 인가? 라는 생각이 들었다. 실제로 그만큼의 실력이 없는 사람도 있을 것이다. 하지만 이런 의심이 드는건 상호 신뢰나 인재 ‘관리’에 대한 조직 차원의 문제일 수도 있다. 조직에서 레벨(직급)과 연봉에 직접 반영되는 이런 프레임워크를 적용하고 관리하는 것으로 그런 문제도 해소시킬 수 있을 것 같다.
우선 나부터! 체크 못한 약점을 채우고 체크할 수 있는 항목은 강화시키자.