• 이 글은 회사에서 일하고 있는 주니어 개발자를 대상으로 합니다.
  • 제가 원온원에서 종종 듣는 질문에 대한 제 답변을 글로 옮겨 봅니다.
  • (제 생각의 변화와 발전에 따라 글이 업데이트됩니다.)

“집에 가면 어떤 공부를 하면 좋을까요?”라는 질문을 풀어서 써보면 “더 좋은 개발자가 되려면 회사 밖에서 어떤 노력을 하면 좋을까요?”인 것 같습니다. 여기에서 “더 좋은 개발자”는 회사에서 더 높은 가치로 인정받는 프로 개발자로 한정 지어 봅시다. 세상에는 다양한 개발자가 있으니까요.

회사라는 공간에 대해

회사는 결과를 내는 곳입니다. 그리고 엔지니어인 우리는 최소한의 리소스로 기대되는 결과를 만들어 내야만 합니다. 최소한의 리소스라는 것은 대체로 새로운 시도에 제약을 가져옵니다. 따라서 우리는 대체로 익숙한 도구와 방식으로 프로그래밍을 하게 됩니다. 이에 따른 장단점이 있습니다.

장점은 기술의 숙련도의 향상, 다시 말해 체화입니다. 배움의 단계와 달리 회사에서 요구되는 복잡성과 완성도는 해당 기술을 내 것으로 만들어 줍니다. 회사에 계신 시니어 개발자 중 언어, 프레임워크, 도구 등을 정말 내 것처럼 사용하시는 분들을 보셨을 겁니다. 단점은 숙련이 충분히 된 이후에도 반복되는 경우입니다. 이때 우리는 보통 성장이 멈췄다고 생각합니다.

회사 밖의 학습에 대해

어떤 공부를 하고 계신가요? 보통 다음의 경우가 있었던 것 같습니다.

  • 저는 아무래도 비전공자다 보니 기본이 부족한 것 같아요. OS를 공부해 보고 있습니다.

  • 최근에 나온 어떤 라이브러리에 관심이 있어요. 한번 시도해 보고 있습니다.

  • 어떤 책을 새로 샀어요. 그 책을 따라가면서 개념을 익혀 보고 있습니다.

  • 친구들과 사이드 프로젝트를 해보고 있어요. 잘 되려나 모르겠네요.

저는 어떤 학습이든 꾸준하게 이어갈 수 있는 동기가 있다면 그것이 최선이라고 생각합니다. 지금 하고 있는 학습이 재미있고 꾸준하게 하고 있다면 더 고민할 여지는 없습니다. 지금 그것을 꾸준하게 하시면 됩니다. (학습은 기본적으로 재미가 없거든요) 하지만 아직 갈피를 못 잡고 있다면 제 추천은 다음과 같습니다.

회사의 업무를 확장할 수 있는 학습하기

퇴근 후 학습은 하루 2시간을 꾸준히 하기가 쉽지 않습니다. 그렇다면 발상을 전환해서 대부분의 시간을 보내는 회사에서의 성장을 부스팅 하기 위해서 여러분의 추가 시간을 활용해 보는 것은 어떨까요? 저는 우리가 바라는 “회사에서 더 높은 가치로 인정받는 프로 개발자”가 되는 지름길이라고 생각합니다.

회사의 업무를 이어서 하는 것을 말하는 것은 아닙니다. 이것은 보통 야근이라고 하죠. 위에서 말씀드린 회사의 특징을 활용해 보는 것입니다. 다음 단계로 진행됩니다.

  1. 회사의 문제점 찾기

  2. 효율적인 방법 찾기

  3. 학습을 통해 허들 낮추기

  4. 설득

  5. 회사에 대한 기여, 해당 기술에 대한 숙련도 향상

저희 회사에서는 이를 간단하게 “오늘 배워 내일 쓴다.”라고 표현합니다. 조금 더 자세하게 살펴봅시다.

1. 회사의 문제점 찾기

분명 더 잘할 수 있을 것 같은데, 회사의 관성에 의해서 혹은 나서는 사람이 없어서 개선되지 못하는 부분이 있을 겁니다. 물론 여러분의 업무 내에서도 찾을 수 있습니다. 예를 들면 에디터 사용방법 같은 것일 수도 있죠.

2. 효율적인 방법 찾기

현재 회사의 방식보다 효율적인 방법을 찾아봅시다. 간단한 라이브러리나 프레임워크의 도입이 될 수도 있고, 개발 프로세스나 전반적인 설계에 영향이 가는 범위일 수도 있습니다. 하지만 대부분의 것들에 더 나은 방법이 존재합니다. 그 방법을 탐구해 봅시다.

3. 학습을 통한 허들 낮추기

좋은 방법을 찾았다 하더라도, 아직 확신이 있지 않을 겁니다. 이때 학습이 필요합니다. 회사의 문제 개선하기라는 구체적인 학습 목표를 둡시다. 그리고 학습의 결과물을 설득을 위한 데모 혹은 발표자료로 해봅시다.

4. 설득

해결하고자 하는 문제와 방법을 회사(팀, 리더)에 설득합시다. 이때 잊지 말아야 할 것은 “아름다움”이 아니라 “비즈니스적인 가치”입니다. 대체로 장단기적인 리소스의 절약으로 설명이 될 겁니다. 학습한 것을 바탕으로 시도에 필요한 리소스를 상대적으로 명확하게 전달할 수 있습니다. 예를 들어, “제가 이렇게 프로토타이핑을 해봐서 기술적인 검증은 되어 있습니다. 내부 도입만 하면 되는 상태라서 2주면 됩니다.” 와 같은 식입니다.

5. 회사에 대한 기여, 해당 기술에 대한 숙련도 향상

동일한 문제(혹은 해결하지 못하던 문제)를 더 좋은 방법으로 해결하는 것은 회사의 자산으로 남게 됩니다. 시스템의 개선 뿐 아니라 동료들도 배움이 있습니다. 이런 과정을 통해 회사에서 인정받게 되면, 앞으로의 또 다른 시도가 원활해집니다. 동료들의 신뢰도 언게 되구요. 그리고 시도하는 과정에서 회사의 특징인 복잡도와 완성도를 맞추기 위해 기술에 대한 숙련도 이뤄집니다.

더 좋은 개발자가 되었네요. 야호!

마지막으로

야구선수를 생각해 봅시다. 야구경기가 끝난 이후에서 특타를 치면서 폼을 이렇게 바꾸면 경기중에 더 잘 칠 수 있지 않을까?라는 생각을 할 겁니다. 그리고 경기시에 실제로 그 폼의 변화를 시도해 보겠죠. 이와 같은 시도를 통해서 더 좋은 타자가 될 겁니다. 우리도 크게 다르지 않습니다. 잊지 말아야할 것은 우리의 학습의 목표입니다. 회사에서 더 높은 퍼포먼스를 내는 것이라면, 퍼포먼스를 높여가는 훈련을 해야 합니다.

회사 밖에서 확장하고 회사에서 단단해 집시다.