Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

새로운 회사, 새로운 역할, 새로운 분야

작년 말에 트위터에는 올렸지만, 작년 12월 중순에 퇴사했다. 지금까지는 입사를 정해놓고 퇴사를 했지만, 이번에는 어른들의 사정으로 퇴사를 먼저 했다. 2016년 여름에 입사했으니 1년 4개월 정도를 다니고 퇴사한 셈이다. 당장 수익이 없으면 큰 문제가 있는 것도 아니었고 연말에는 채용도 더디게 진행되는 관계로 맘 편히 좀 쉬면서 다음에 어떻게 할지를 생각해 보기로 했다.

전 회사에서 원격 근무도 하면서 개발문화나 협업 등 내가 이상적으로 생각하는 개발팀에 가까워지면서 만족하고 있었기에(완성했다기보다는 기반을 다졌다는 게 정확하겠다.) 당시에는 딱히 다음 진로나 이직을 고민하고 있지 않았다. 퇴사했으니 겸사겸사 여유를 가지고 고민하는 게 나을 것 같았고 어느새 10년 차(11년 차인가?) 정도 되다 보니 앞으로의 진로에 대해서 고민이 많이 생겼다. 앞으로 한참 동안 더 개발을 해야 하는데 이것저것 공부하기는 해도 그동안 하던 대로만 해온 느낌이 있어서 앞으로 개발자로서 더 오래 먹고 살려면 이때쯤 엔지니어링적으로 커리어를 더 잘 갖춰야겠다는 생각이었다.

해외 기업

이전 글에도 썼지만, 해외 기업에 지속해서 관심이 있었다. 전에 글에도 영어 공부 안 했다고 반성한다고 했는데 이번에도 역시 평소에 공부 안 하다가 다시 한번 좌절을 맛봤다. 이번에는 진짜 영어공부도 하면서 장기 목표를 가지고 준비해야겠다. 내가 해외 기업에 관심 갖는 건 해외에 나가 살고 싶은 게 아니라 그들의 개발문화와 분위기가 궁금해서이다. 그렇다 보니 목표하는 회사들도 꽤 수준이 높은 회사이기도 하고 해외로 갈 생각은 없다 보니 국내에서 원격으로 근무할 수 있는 회사를 주로 보게 되었다.

We work Remotely를 주로 보면서 관심 있는 회사들에 일단 이력서를 넣었다. 사실 합격할 수 있을 거라고 큰 기대는 안 하고 있었고 취업은 해야 하니 도전해보면서 내가 어느 정도까지 해볼 수 있는지 한번 점검해본다는 의미가 더 컸다. 외국계 회사는 채용프로세스가 길어서 이직은 어차피 천천히 결정할 예정이므로 외국계 먼저 진행해 보면서 이직 고민을 하면 되겠다는 게 생각이었다.

5-6개 회사에 이력서를 냈는데 대부분은 서류에 떨어지고 "이 회사에 개발팀이 있었어?" 싶었던 S사는 온라인 코딩 테스트에서 떨어지고 C사는 화상 면접까진 했는데 역시나 영어가 문제가 되면서 떨어졌다. 해보고 나니 크게 일단 영어로 원활하게 대화할 수 없다는 문제와 코딩테스트를 볼 때 내가 가진 기술이 너무 JavaScript 위주라는 부분이 문제로 느껴졌다. 나처럼 다양한 배경을 특별히 원하거나 Node.js 개발자가 필요한 게 아니라면 영어를 통과하더라도 기술에서 떨어질 수도 있겠다는 생각이 들었다. 그리고 무엇보다 영문 이력서를 매력적으로 잘 쓰지 못하는 것 같다. 이 부분은 유료 서비스를 쓰던 연습이 좀 필요할 것 같다. 냉정히 생각해 보면 국문 이력서도 이력서를 잘 쓴다기보다 이 블로그나 GitHub 등으로 사전 정보를 제공하는 셈이라 원래도 이력서를 잘 쓰는 편은 아닌 것 같다. 암튼 그렇게 해외 기업은 바로 탈락을 했다.

취업을 위한 고민들

연말이 지나면서 여러 회사와 개발팀을 만나고 다녔다. 전에는 회사 다니면서 이직을 하니까 지인들만 아는 상태로 조용히 진행했는데 이번에는 트위터에 퇴사를 알리고 시작했기 때문에 감사하게도 날 좋게 봐준 여러 회사가 한번 만나자고 해서 많이 만나고 다녔다. 이직한 지 1년 반도 안 되었는데 그때 관심 있는 회사를 많이 만나보고 결정했던 거라 이번에 이직하면서 가장 큰 문제는 가고 싶은 회사가 없다는 거였다. 내가 합격하냐 아니냐의 문제가 아니라 가고 싶다 하는 회사가 없었다. 그러다 보니 내가 전에 몰랐던 회사를 찾아야 했고 그러다 보니 연락 오면 일단 다 만났다. 입사 지원을 한 건 아니고 만나서 내 상황이라 내가 할 수 있는 일들을 설명하고 그 회사가 원하는 역할이나 나와 맞을 수 있는 부분을 얘기 나누었다. 내가 입사 지원을 하냐 마냐를 떠나서 재미있는 시간이었고 내가 가서 할 수 있는 역할이 없을 것 같아도 얘기들은 건 재미있었다. 내가 개발자이다 보니 만나서 얘기하는 사람도 개발자인 게 어떻게 개발하는지 어떤 이슈가 있는지 무슨 고민을 하는지를 얘기할 수 있어서 더 재미있었다.

여러 회사를 만나나 보니 어느 정도 내가 원하는 것이 정리되는 것 같았다. 가장 큰 관심사는 "재미있냐"이지만 여러 회사와 개발팀이랑 얘기하면서 생각을 정리할 수 있게 되었다.

  • 기술적으로 도전적인 일을 하고 싶었다. 앞에서도 얘기했듯이 이 정도 연차에서 기술적인 경험을 잘 쌓아서 더 오래 개발할 수 있게 해야겠다는 건 확고했다. 난 관리자가 될 생각은 거의 없지만 최근에 시니어 개발자의 역할에 대해서는 많이 생각해 보게 되었다. 하지만 그건 그거로 내가 관심 있는 건 엔지니어링이라서 아직은 이쪽에서 더 많이 해야 했다. 도전적인 일이라면 여러 가지가 있는데 완전히 새로운 분야일 수도 있고 내가 하던 일에서 더 깊이 있거나 스케일 큰일이 될 것이다. 새로운 분야라면 내가 앞으로 기대되는 분야에 도전해 보는 것인데 말 그대로 새로운 분야라서 내가 재미있을지를 판단하기 어려웠다. 기존에 하던 일이라면 주로 웹인데 API 서버나 웹서비스를 많이 만들어봤지만 트래픽을 대규모로 맞아본 적은 없었다. 백엔드에서는 트래픽이 커지면 간단한 부분도 다 도전적이 되므로 재밌겠다는 생각이 들었다.
  • 기술 중심 회사였으면 좋겠다. 물론 개발자를 뽑는 IT 회사는 다 기술회사라고 할 수도 있지만 내 기준에서 기술 자체가 회사의 핵심인지 회사의 핵심을 가능케 하려고 기술을 사용하는지 다르다고 본다. 그런 면에서 국내에는 기술 중심의 회사가 많지 않다고 생각한다. 이번에는 기술 중심 회사로 가고 싶었다.
  • 개발팀의 문화도 신경 쓰는 부분이었다. 이건 한마디로 정의하기도 어렵지만, 개발팀이 더 좋은 개발팀이 되기 위해서 노력하는 개발팀의 문화는 나한테는 중요했기에 이 부분도 맞춰보려고 얘기를 많이 나누었다. 완성된 곳은 없으므로 사실 의도만 괜찮으면 상관없었다. 그래서 주로 얘기를 나누던 것은 현재 어떻게 노력하고 있는지 뭘 하고 싶은지 지금까지는 왜 안되었는지를 많이 얘기한 것 같다. 그리고 들어가서 내가 이런 부분에 기여할 수 있는 부분이 어느 정도인지도 중요했다.
  • 기술 선택의 자유도. 트랜디한 기술이 꼭 다 좋은 건 아니지만 난 트랜디한 기술을 좋아하고 더 좋은 방법이 있으면 갈아치우는 걸 좋아해서(혼자만 그런 건 아니고 당연히 팀원들과 합의한 후에...) 이런 부분에서 자유도가 얼마나 있는지가 중요했다. 여기서 자유도라는 건 내가(혹은 다른 사람이) 제안을 하고 그 내용이 합리적이라면 팀이 움직일 수 있는 정도의 자유도이다. 그런 면에서 일차적으로는 대기업이 뒷순위로 많이 밀렸다. 대기업은 부분별로 담당 부서가 있어서 내 맘대로 하지 못하는 영역이 너무 많았다. 이건 대기업으로서는 당연한 부분이지만 나는 좀 답답하게 느끼는 편이었고 내가 가진 장점을 다 발휘 못 한다는 느낌이 있다. 그런 면에서 AWS나 GCP같은 퍼블릭 클라우드를 쓰지 않는 건 나한테는 큰 마이너스 요소가 되었다.
  • 원격 근무. 원격 근무의 지지자가 되었기에 원격 근무를 다음 회사에서도 꼭 다시 하고 싶었지만 국내에서 원격 근무를 기본 조건으로 넣으면 사실 갈 회사가 엄청 줄어들어서 대부분 생각을 물어보는 정도였다.
  • 집에서 가까웠으면 좋겠다. 항상 회사를 꽤 멀리만 가다가 강남권 회사로 다니기 시작한 뒤로는 개인시간이 많아져서 꽤 편했다. 그전에는 출퇴큰에 그렇게 시간을 많이 빼앗긴다는 생각을 하지 못했지만... 그래서 이번에서 일단 가까운 곳을 먼저 찾기 시작했다. 필수조건은 아니지만 가능하면 멀지 않은 곳으로 가고 싶었다.

이렇게 정리되어도 어려운 부분은 많았다.

  • 업무를 구체적으로 얘기하다 보면 내 관심 분야가 너무 많다는 느낌을 확실히 받았다. 그 부분이 나를 잘 써먹을 수 있는 부분이라고는 생각하지만 보통 뭘 하고 싶냐고 묻는데 여기에 내 대답은 보통 백엔드 혹은 특정 부분 개발하면서 인프라도 어느 정도 개입하고 싶고 팀 문화도 개선하고 싶고 자동화도 하고 싶고 사업 쪽도 가까이서 보고 싶고... 뭐 이런 식인데 보통 회사가 이렇게 사람을 구하진 않다 보니 얘기가 잘 진행이 안 되었다. 보통은 내가 잘할 수 있는 부분이라고 생각하는 걸 다 얘기하고 회사에서 생각하는 내 역할은 무엇인지를 다시 물어보는 편이었다. 그리고 아주 작은 규모 아니면 다른 영역까지 협업할 수 있는 조직은 많지 않기도 했다.
  • Node.js가 사용하는 조직은 그렇게 많지 않았다. 아무래도 내가 JavaScript를 제일 많이 사용했다 보니 JavaScript를 써먹을 수 있는 곳이 가장 좋기는 한데 내가 다른데 관심 가진 사이 React의 세상이 되면서 프론트엔드는 내가 전문영역으로 넣기에는 너무 커져 버렸다. React 혹은 그와 비슷한 프레임워크로 개발하는 요즘 프론트엔드는 아예 그쪽으로 갈아타면 할 수는 있겠지만 다른 쪽도 하면서 같이 하기에는 커졌다. 그런 프론트엔드 역할을 제외하면 Node.js밖에 없는데 Node.js를 사용하는 조직은 꽤 적었다. 그래서 Node.js로 이직이 쉽지 않구나 하는 생각도 들었다.
  • 연차가 꽤 높다는 느낌이 많이 들었다. 이번에 회사를 많이 만나면서 시니어 개발자가 많이 부족하다는 절감했는데 작은 조직을 많이 만나다 보니 내 연차가 약간 부담이 되었다. 일단 날 보자고 해서 만나거니 상대 회사는 부담이라고 생각 안 할 수도 있지만 스타트업은 개발팀의 평균 나이가 적은 경우가 많아서 많이 차이 나게 되면 나로서는 부담이 되었다. 그렇다고 내가 팀장이나 관리자로 가려는 것도 아니라서... 팀장이나 관리자가 꼭 나이가 많아야 한다거나 나이 어린 사람 밑에서 일할 수 없다는 건 아닌데 다른 팀원과 달리 나만 나이 차이가 꽤 나는 건 커뮤니케이션이나 이런 부분에서 약간은 우려되는 부분이 있다고 생각한다.("내가 꼰대인가"하는 생각을 하루에도 몇 번씩 하게 될지도...)

BlockchainOS

회사는 많이 만났지만 실제로 이력서를 내고 공식적으로 지원한 곳은 그렇게 많지 않았는데 여러 가지를 고민하다가 BlockchainOS로 결정했다. BlockchainOS는 이번 이직 과정에서 꽤 나중에 만나서 진행하게 되었는데 다행히 붙어서 입사하게 되었는데 다른 회사들이 여러 번 만나고 오래 고민했던 것에 비교해서 너무 단기간에 정해서 걱정이 좀 되기도 했다. 앞에서 도전적인 일을 하고 싶다고 했는데 새로운 분야를 생각해 볼 때 딥러닝과 블록체인 정도가 생각났었다. 하지만 둘 다 내가 해본 영역이 아니고 아는 사람도 없어서 진행은 안 되고 있었는데 결과적으로는 블록체인으로 오게 되었다.

코인 투자에 관심이 별로 없고 거래소에 대해서는 부정적인 의견도 있지만, Blockchain이라는 기술 자체는 결국 살아남을 것이라고 보고 있었다. 여기서는 BOScoin이라는 코인을 만드는데 Blockchain 기술을 직접 개발하는 회사라서 꽤 도전적이고 생각할수록 재미있겠다는 생각이 들었다. Blockchain이 아직 초기인데 너무 주목을 받아서 사기인가 싶은 곳도 많은 게 사실이지만 여긴 그렇진 않은 것 같았고 아직 이 기술을 어떻게 활용할지 제대로 아는 곳은 거의 없고 이제 앞으로 해낸 회사는 잘 될 것이고 못해낸 곳은 거기까지라고 생각한다. 지금 이 타이밍에 블록체인이라는 기술을 깊게 봐두면 앞으로 이 기술이 잘 되었을 때 해볼 수 있는 것도 많겠다고 생각이 들었다.

나도 블록체인 개발을 봐야 하지만 내 역할은 (회사에선 DevOps라고 부르지만) SRE(Site Reliability Engineer)이다. 지난 회사에서 인프라스트럭처쪽을 많이 하면서 흥미가 생겨서 이번에 여러 회사와 얘기하면서도 내가 인프라를 계속하고 싶어한다는 걸 알게 되었다. 사이트 신뢰성 엔지니어링이라는 책을 보면서 진지하게 이쪽을 더 해볼까 하는 생각도 했는데 진짜로 하게 되었다. 국내에 어차피 블록체인 쪽을 해본 사람이 거의 없지만 내가 해오던 분야가 아니라서 잘할 수 있을지 확신은 없는데 SRE하면서 블록체인 개발도 같이할 수 있고 내 기술 스택도 완전히 달라지지 않는 거라서 딱 좋다고 생각하고 있다.

아직 1주일 근무해서 아는 게 하나도 없지만, 은근 궁금한 게 많아서 기대감이 커지고 있다. 매일 회의 때마다 모르는 내용이 하도 많아서 공부할 내용에 압도되긴 하지만 개발이 언제 안 그런 적이 있긴 했던가... 블록체인 자체도 흥미롭고 블록체인의 분산 서버에서 인프라 운영은 어떻게 접근해야 할지도 나에게 미지의 영역이라 당분간은 공부만 원 없이 하게 될 것 같다.

쉬는 동안 좋게 봐주시고 연락해주신 분들께 감사의 말씀 드립니다. 제가 다른 쪽으로 결정했을 때 따로 다 연락을 드리지 못하고 이렇게 블로그에서 말씀드려서 죄송합니다.


2018/03/12 03:12 2018/03/12 03:12

Mocha.js org의 멤버가 되다

올 초에 세운 목표 중에 오픈소스에 더 많이 참여하기가 있었다. 이전에도 어느 정도 하긴 했지만 사이드 프로젝트 외에 다른 오픈소스 프로젝트에 Pull Request도 많이 보내도 더욱 적극적으로 참여하기로 마음을 먹었다. 그렇게 세운 목표 중 하나가 오픈소스 프로젝트에 메인테이너로 들어가는 것이었다. 개발하다가 발견한 내용에 대해서 Pull Reqeust를 보내서 종종 참여하기는 하지만 특정 오픈소스에 개발에 참여한다고 할 정도로 깊게 들어가 보진 않았다. 정확히는 해봐야지 하다가 매번 못하고 있었다.

mocha.js의 멤버로 합류하게 되다

아침에 출근하면서 트위터를 열자 다음과 같은 멘션이 와있었다.


영어로 트윗을 나눌 사람이 많지 않아서 그냥 스팸인가 하고 보다가 내용확인이 되자 잠이 확 깨버렸다. 저 @boneskull는 현재 mocha.js를 리드하고 있는 개발자인데 놀래서 메일을 열어보니 정말 GitHub의 초대 메일이 와 있었다.

GitHub에서 온 초대 메일

내가 거부할 이유가 무엇이 있을까 당연히 바로 Join을 누르고 들어가고 Mochajs org의 일원이 되고 모든 저장소의 푸시 권한을 갖게 되었다.

Mocha org의 멤버 목록

아직 메인테이너라고 부르기에는 아직 한 일이 없지만, GitHub 시스템에서는 mocha.js의 메인테이너의 권한을 갖게 되었다.

GitHub에서 member로 표시된다

스크린숏이 많게 느껴지는 건 기분 좋아서 기록용으로 많이 찍어서이다. ^^ 아는 사람과 만든 게 아닌 다른 org의 멤버로 합류한 건 [2014년](AngularUI 프로젝트의 멤버가 되다...) 이후 처음인데 저 때는 내 개인 프로젝트가 org로 들어간 거였고 이번은 큰 프로젝트에 들어간 거라 느 느낌이 완전히 다르다. 목표는 원래 닿을 듯 말 듯 한 정도가 좋은데 올해 목표가 벌써 해결되어서 조정해야겠다.

mocha의 멤버가 되기까지

작년 말부터 오픈소스 프로젝트에 더 참여해 보려고 관심 있는 프로젝트는 watching을 걸어서 알림을 다 받아보고 있었다. 모든 이슈를 읽어보는 건 아니지만 이렇게 알림을 받으면 프로젝트에서 이슈나 PR이 어느 정도 처리되고 있는지 어느 정도 알 수 있다. 오픈소스 프로젝트에 들어가는 건 꽤 어려운 부분이 알만한 프로젝트는 이미 상당히 성숙했기 때문에 코드가 복잡해서 참여하기가 쉽지 않고 작은 프로젝트는 알기가 어렵다.

어차피 어려우니까 주로 내가 관심 있거나 사용하는 프로젝트를 위주로 모니터링하면서 이슈 처리하는 부분을 보고 있었다. 오픈소스 프로젝트 기여는 메인테이너들의 성향도 크게 영향을 받아서 메인테이너들이 기여 많이 받으려고 노력하는 프로젝트에 먼저 관심을 두게 되었다. 메인테이너들이 까칠하면 영어도 힘든데 논의하기도 쉽지 않고 PR을 제출해도 들어가기가 쉽지 않다.

작년에 틈틈이 보던 프로젝트는 babel이었는데 Babel의 규모가 워낙 거대하기도 하고 AST랑 ECMAScript 표준에 깊게 연결되어 있어서 알아야 할 부분이 많이 있었다. 여전히 관심이 있었지만 PR 몇 개 올리고는 별다른 작업을 못 하고 있었다.

Readme 파일에 있던 기여 요청 문구

그러다가 올해 목표를 세우고 눈에 들어온 프로젝트가 mocha.js이다. 지금은 제거되었지만 Readme에 기여를 요청하는 내용이 크게 적혀있었다. 내용만 봐도 mocha의 사용자 수에 비해서 @boneskull 혼자 프로젝트를 유지보수 하느라고 고생 중임을 알 수 있었다.

mocha.js는 테스트 프레임워크로 수년 동안 사용하고 있기에 내부 소스는 몰라도 내용이나 사용방법 등은 잘 알고 있었기에 참여를 좀 해볼 수 있을 것 같아서 프로젝트에 올라오는 이슈나 PR을 눈여겨보고 있었다.

mocha 프로젝트 이슈의 라벨들

이슈도 대부분 라벨이 붙어 있어서 참여할 수 있는 이슈를 훨씬 더 찾기 쉬웠다. 그리고 경험상 이슈에 라벨이 잘 붙어 있으면 프로젝트 메인테이너들이 기여하는 사람들한테 훨씬 친절할 가능성이 크다. 저런 라벨링은 관리를 쉽게 하기 위함도 있지만 잘 모르는 사람도 기여할 수 있게 제공하는 부분이기 때문이다.

처음에는 프로젝트 구조를 파악하기 위해서 good-first-issue를 위주로 보다가 비교적 간단해 보이는 이슈를 찾아서 PR을 보냈다. 하라는 거 다 수정했는데 아직도 머지를 안 해주고 있다. 이젠 권한도 있는데 확 내가 해버릴까 보다.

전체 소스 구조는 아직 파악하지 못했지만, 대충의 폴더 및 파일구조와 원하는 부분만 테스트 돌리는 법은 파악했기에 이슈에 올라오는 처리할 수 있는 내용은 수정해서 PR을 올리기 시작했다. 지금 보니 1, 2월에 4개의 PR을 올리고 이 중 2개만 머지되었다.

PR을 처리하기 위해서 이슈도 계속 보고 있었기 때문에 그냥 질문이나 사용법을 몰라서 올라오는 이슈 같은 것도 답변을 달기 시작했다. 권한이 없으면 라벨링이나 이슈, PR 관리는 못 하지만 댓글 정도는 달아서 메인테이너들이 모든 이슈를 다 대응하지 않게 할 수는 있다.

mocha 프로젝트의 내 기여 정보

1, 2월에 참여한 부분을 적었는데 사실상 왜 org에 초대했는지 모를 정도로 한 활동은 미비하다. 위 그래프를 보아도 아직 커밋 4개에 기여 순위도 35위 밖에 되지 않는다. 그래도 PR이랑 이슈에서 종종 보이면서 어느 정도 익숙해졌기 때문인 것 같고 기여할 사람이 많지 않다는 의미이기도 하다. 요즘은 테스트 프레임워크로 Jest가 뜨고 있지만, mocha의 사용자층을 보면 이 정도 기여는 안타까운 일이다.

아무튼, 이제는 권한이 생기었으니 코드 기여가 아니더라도 이슈나 PR 관리 등 할 수 있는 일이 좀 더 많아졌다. @boneskull와 관리하는 방식도 어느 정도 맞추어야 해서 한참 자세히 봐야겠지만 좋은 기회가 생겨서 Mocha를 집중적으로 봐야겠다.

2018/03/07 03:46 2018/03/07 03:46