40P by spilist2 2022-12-30 | favorite | 댓글 3개

프론트엔드 개발의 역사가 짧아, 많은 조직에서 좋은 시니어 프론트엔드 엔지니어를 원하지만 찾기는 어려워 여러 중소규모 스타트업 CTO들이 비슷한 고민을 하게 된다.

  • 프론트엔드에 요구하는 기술 수준이 그다지 높지 않아 엔지니어의 역량 발전 동기가 적음
  • 프론트엔드 엔지니어 출신으로 좋은 커리어를 쌓은 롤모델이 주변에 별로 없어서 커리어 설계가 어려움
  • 조직 내 시니어 프론트엔드 엔지니어의 부재로 미들급에게 리더십이 더 많이 요구됨

이 글은 이런 고민을 하는 프론트엔드 엔지니어와, 그들을 어떻게 이끌지 고민하는 팀 리드 및 CTO를 위해 썼다. 프론트엔드 엔지니어가 어떤 방향으로 전문성을 특화시켜 어떻게 시니어로서 커리어를 쌓아나갈지에 대한 가이드로서 도움이 되길 기대한다.

1. 탁월한 엔지니어 되기

‘탁월한 시니어 프론트엔드 엔지니어가 되고 싶다’는 문장은 3가지 측면에서 해석할 수 있다.

  • 탁월한 (시니어 프론트엔드) 엔지니어가 되고 싶다.
  • 탁월한 (시니어) 프론트엔드 엔지니어가 되고 싶다.
  • 탁월한 시니어 (프론트엔드) 엔지니어가 되고 싶다.

What Makes a Great Software Engineer?라는 논문에 따르면 탁월한 엔지니어는 좋은 코드를 짜고, 작업의 현재 가치를 극대화하고, 데이터에 기반하여 의사결정하고, 동료의 효과적 의사결정을 돕고, 꾸준히 학습하는 사람이다. 이 다섯 가지 역량을 발전시키고자 노력하면 좋은 엔지니어가 될 것이다.

덧붙여, 점차 강화되는 인공지능 때문에 커뮤니케이션과 글쓰기 능력이 훨씬 더 중요해졌다. 인공지능에게 개발 업무를 대체당하는 대신 인공지능을 비서로 삼아 효과적으로 일하려면 Prompt Engineering 관점에서 영어 글쓰기나 인터뷰 기법을 공부하는 게 좋다.

2. 탁월한 프론트엔드 엔지니어 되기

위의 기본기에 더해 주니어 프론트엔드 엔지니어가 어떤 방향으로 전문성을 쌓으면 좋을지 세 가지 트랙을 생각해봤다. 각 트랙은 상호보완적이므로 한쪽의 전문성이 충분히 있는 사람은 다른 트랙의 전문성을 쌓기 훨씬 쉬워지며, 당연히 각 트랙에서 시니어로서 가능한 커리어도 일부 겹친다.
(‘운영 트랙’은 데브옵스적 측면과 프로세스/조직 운영적인 측면 둘 다를 포함했으나, 이 두 가지 역량을 꼭 같이 가져가야만 좋은 커리어를 쌓는 건 아니다. ‘프로세스 특화’ 트랙을 별도로 둬야 할지 고민도 됐지만 4번째 트랙을 유의미하게 만들기에는 아직 나의 역량이 부족하여 일단 하나로 합쳤다.)

웹 특화 트랙 (Software Engineer)

  • 주요 특징
    • 인터넷, 웹브라우저, HTML/CSS/JS에 대한 깊이 이해하고 활용함
    • 웹 생태계를 구성하는 도구별 장단점을 알고, 여러 환경에서 트러블슈팅해본 경험이 있음
    • 웹에 등장하는 새로운 기술에 민감하고, 직접 활용 시도를 함
  • 장단점
    • 어느 정도 수준까지는 혼자서도 역량을 올리기 쉬움
    • 제품의 복잡도/성숙도가 충분히 높지 않은 조직에서는 전문성을 발휘하여 인정받을 만한 기회가 적음
  • 역량 향상 방법
    • 로드맵의 키워드를 따라 책과 인터넷 컨텐츠로 공부하며 사이드 프로젝트에 써보기
    • 뉴스레터 구독, 오픈소스 참여, 신기술 테스트, 사용하는 도구의 동작 원리와 한계를 이해하고, 때론 직접 도구를 발명하기
    • 다양한 환경에서 트러블슈팅하고 성능을 끌어올려보기
  • 이후 시니어로서 가능한 커리어
    • 웹 역량을 높이는 강의 교육자
    • (웹 생태계를 구성하는 도구를 만드는 조직의) 소프트웨어 엔지니어
    • (복잡도 높은 제품을 다루는 조직의) 소프트웨어 엔지니어
    • 프론트엔드 테크 리드

제품 특화 트랙 (Product Engineer)

  • 주요 특징
    • 적은 양의 코딩으로도 여러 도구를 조합하여 초기 제품 성과를 만들어낼 수 있음
    • 시장과 고객에 대한 이해가 높고, 이해를 더 높이기 위한 여러 방법을 실무에 적용할 줄 앎
    • 마케팅 및 영업 담당자에게 제품을 이해시키기 위한 커뮤니케이션을 자주 함
  • 장단점
    • 제품을 시장에서 검증받고자 하는 초기 스타트업에게 열렬히 환영받음
    • 안전한 공간에만 머물러있는다면 본인이 키운 제품 조직에서 밀려나버릴 수도 있음
  • 역량 향상 방법
    • 본인 도메인에서 훌륭한 제품을 분석적으로 사용하고, 고객을 관찰하며 프로덕 센스 키우기
    • 익숙한 도구의 조합에 집착하지 말고 공구상자를 지속적으로 개편하기
    • 본인이 주도한 초기 제품이 성과를 거둬 구조와 코드를 갈아엎어야 할 시기를 함께 버티며 바퀴를 교체하기
  • 이후 시니어로서 가능한 커리어
    • (PMF를 찾는 모든 조직의) 소프트웨어 엔지니어
    • 그로스 엔지니어, 그로스 컨설턴트
    • 프론트엔드 테크 리드, 테크니컬 프로그램 매니저
    • PM, PO, CPO

운영 특화 트랙 (Full-Stack Engineer)

  • 주요 특징
    • 프로젝트 구조, 통합, 테스트, 배포에 대한 관심이 많음
    • 간단한 API는 직접 만들줄 알고 필요한 인프라도 직접 구성할 줄 앎
    • 조직 규모가 커지면서 생기는 빈틈과 비효율을 캐치하여 몸으로 때우고, 프로세스를 개선함
  • 장단점
    • 넓은 범위의 업무를 커버하면서 많은 사람들과 협업하며 인정받을 기회가 있음
    • 의식적으로 노력하지 않으면 기술 역량이 뒤쳐지고 반복 업무만 하다가 번아웃이 올 수 있음
  • 역량 향상 방법
    • 어드민 백엔드 API 구현과 프론트엔드 인프라 구성 등으로 외연을 넓히기
    • 폭발적으로 성장하는 조직에서 대규모 트래픽과 장애를 맞아가며 대응하기
    • 큰 회사의 운영 프로세스와 가이드라인을 파헤치거나 멘토링/강연을 듣고 본인 조직에 맞게 적용하기
  • 이후 시니어로서 가능한 커리어
    • (제품이 다양한 대규모 조직의) 소프트웨어 엔지니어
    • 프론트엔드 테크 리드, 테크니컬 프로그램 매니저
    • 엔지니어링 매니저, 애자일 코치, VP of Engineering
    • CTO

3. 탁월한 시니어 엔지니어 되기

위와 같이 전문성을 쌓은 사람이 탁월한 시니어 엔지니어가 되려면 어떻게 해야 할까? 나는 어떻게 시니어 역할을 맡게 됐는지, 또 내가 만나왔던 훌륭한 시니어 엔지니어들은 어떤 사람이었는지를 토대로 탁월한 시니어 엔지니어가 되기 위한 세 가지 포인트를 짚어본다.

  • 기본에 충실하고자 노력한다: 탁월한 엔지니어의 5가지 역량은 당연히 시니어 엔지니어에게도 똑같이 적용된다.
  • 명시적 리더가 아니어도 리더처럼 행동한다: 리더십은 명시적 리더가 아닐 때도 충분히 발휘할 수 있고, 때론 동료의 모범적 행동 하나가 명시적 리더의 수많은 말보다 더 큰 영향을 끼칠 수 있다. 주어진 역할과 상관없이 제품과 팀과 조직 전체에 긍정적 영향을 미치기 위해 힘쓰면 어느새 시니어로 인정받을 것이다.
  • 어떤 상황에서든 큰 임팩트를 낸다: 디버그와 같은 작은 행위에서도 시니어는 주니어보다 훨씬 큰 영향력을 발휘한다. 주어진 일을 잘 끝마치는 걸로 만족하지 않고, 전후 맥락을 살피며 여러 사람과 의사소통하여 큰 임팩트를 만들어내는 사람이라면 제품에서든, 팀에서든, 회사에서든 어느 한 파트를 안심하고 맡길 수 있는 시니어로 성장할 것이다.

이제 만3년되는 주니어 개발자인데 확실히
회사 업무 난이고나 환경에 따라서 뭔가 사용해보기는 쉽지않은거 같아요.. 그런부분을 사이드 프로젝트로 쌓아나가는데 성실하기가 쉽지않네요...ㅋㅋ

너무 좋은 글 이네요. 어쩌다 웹프론트엔드에 발을 담그고 그것이 10년이 훌쩍 넘었네요, 저의 커리어 고민도 고민이지만, 주니어에게 커리어 가이드를 하기가 참 어려웠습니다. 커리어 로드맵으로 가이드하기에 잘 활용할 수 있을것 같습니다.

주니어와 시니어 분들 양쪽을 생각하며 썼는데 도움이 될 것 같다니 기쁘네요. 댓글 감사합니다!