📍 매년 연말, 나는 나 자신에게 후회 없는 한 해를 보냈는가를 물어본다. 그 습관을 앞으로 커리어 회고에 활용하고자 한다.
2022년 3월에 약 6개월간의 부트캠프를 수료한 후, 7주 동안의 구직활동 끝에 Node.js 백엔드 개발자로 취업을 하게 되었다. 그리고 최근에 3개월간의 수습 기간이 드디어 끝났다.
이전에 경영학 전공생으로서 100개 이상의 입사지원서를 쓰고 온갖 필기시험과 면접을 보면서 경험한 실패와 좌절감이 아직 내면에 강하게 남아 있었다. 그렇기에 개발자로 새로운 커리어 전환을 한 후에도 나 자신에게 취업 성공에 대한 확신을 갖지 못했고, 그만큼 정규직 최종 합격 이메일을 받은 순간의 오묘한 감정을 잊을 수 없다.
첫 직장에 대한 선택으로 내가 이 회사에 입사할지 정말 많이 고민했었다. 대기업 또는 누구나 가고 싶어 하는 워너비 회사가 아니더라도 개발자에게 괜찮은 직장은 충분히 있다는 것을 배웠고, 그런 회사인지 판단하는 데에 시간이 걸렸다.
개발자로 구직 활동할 때는 이전과 첫 직장을 선택하는 기준이 달랐다. 연봉 수준이나 대우, 회사 네임 밸류도 물론 중요하지만, 신입 개발자로서 내가 성장할 수 있는 회사인지가 매우 중요하다는 것을 주니어와 시니어를 모두 포함한 주변 현직 개발자분들께 누누이 세뇌(?)당했다.
📍 여러 조언들을 취합해 정리한 회사 선택 기준 10가지
- 내가 보고 배울 7~8년 차 이상의 선배가 있는가
- 연 매출이 어느 정도인가: 개발팀 규모와 중간급 관리자가 있는 곳인지 예측할 수 있는 척도
- 개발팀은 총 몇 명인가: 너무 소수라면 일만 하고 공부할 수 있는 여유가 없을 가능성 존재
- 개발팀의 기술 스택
- TDD 수행 여부
- 코드 리뷰 문화가 잘 정착되어 있는가
- 회사에서 학습과 관련된 지원이 있는가: 도서, 강의 및 기타 학습 관련, 장비나 소프트웨어 지원
- 대표나 경영진이 개발 출신인가(짧게라도 회사에 다녀보니 형언할 수 없는 그 이유를 알겠더라..)
- 연차 사용이 자유로운가: 입사 직후 상황에 따라 구직활동을 추가로 해야 할 가능성 염두
- 연봉 수준이나 대우, 복지(그래도 무시할 수는 없는 기준!)
회사 선택 기준에는 이외에도 다양한 요소들이 있겠지만 현직자분들의 조언을 위처럼 정리해서 숙지하고 다닌 덕분에 면접 때마다 분위기나 상황에 따라 적절히 질문하고 알아볼 수 있었다. 지금 회사는 위 10가지 중에서 7.5정도 충족이 되는 것 같다. 하나가 0.5인 이유는 현재 내가 속한 개발팀에서는 TDD 도입기에 있기 때문이다. 10가지 모두 만족하면 좋겠지만 그런 회사를 찾기도 쉽지 않고, 발견하더라도 내가 합격해서 입사하게 될지도 불확실하기 때문에 이 점에 있어서는 나쁘지 않은 선택이라고 생각한다.
처음 커리어 전환을 결심했을 때는 스스로 이 바닥에서 컴퓨터 전공 학사 학위가 없는 고졸 지원자로 간주했고, 어떤 대우라도 나를 뽑아주는 회사라면 곧장 달려갈 기세였다. 인문계 취업 시장에서 내가 너무 높은 곳들만을 목표로 바라보고 있었던 게 취업 실패 원인이라고 생각했던 점도 '나의 위치를 객관적으로 직시하고 불러주는 대로 가자.'라는 마인드를 갖는데 크게 영향을 주었다.
하지만 그렇다고 정말 나를 불러주는 회사에 당장 입사하는 것은 후회할 수도 있는 선택인 것 같다. 위의 조건을 기준으로 가장 처음 입사 제안받은 회사를 고려해본다면, 당시 나를 불러주는 상황에 혹해서 갈뻔한 나 스스로가 참 도전 정신이 투철하고 대담한 것이었다. 쉽지 않은 취업 시장으로 인해 개발자 진로를 선택한 사람도 부트캠프에서 많이 봐왔기 때문에 분명 다수 존재한다. 나 또한 커리어 전환의 이유가 온전히 이것 때문만은 아니지만, 영향이 전혀 없다고도 할 수 없다. 지금 젊은 세대는 나중에 70살까지도 일하면서 살게 될지 모른다고 하는데 그만큼 처음 시작이 중요하다고 생각한다.
첫 직장으로 입사한 회사는 내가 무지한 분야인 GIS 회사다. 우리 회사는 공간정보팀에서 드론으로 항공 사진을 촬영하고 정보를 수집해 AI 팀에서 학습모델과 추론을 수행한 다음, 이를 바탕으로 사용자와 인터렉션하는 소프트웨어를 개발한다. 이 한 문장으로 회사가 진행하는 사업 프로젝트와 개발팀의 역할을 모두 담을 수 없지만 진행하는 사업 프로젝트들의 플로우가 대체로 이런 양상을 띠는 것 같았다.
드론으로 촬영한 사진을 구경하면서 한 장당 용량이 매우 크다는 것에 소소하게 놀랬고, 특히 사진에 찍힌 밭이 어떤 작물인지 추론하는 AI 팀의 아웃풋에 신기해하면서 구경했던 기억이 있다. 3개월 동안 사수로부터 여러 차례 회사에서 진행했던, 그리고 진행 중인 프로젝트에 관해 설명을 들었다. 단번에 이해하기는 쉽지 않았지만, 시간이 지나면서 프로젝트 문서나 회의 참여, 기존 코드 분석을 통해 점차 파악할 수 있었다. 그리고 다행히 사수분께서 질문은 얼마든지 하라고 자꾸 말씀 주셔서 혼자 끙끙 앓아가며 알아가는 고충은 덜어낼 수 있었다.
이외에도 수습 3개월동안 겪은 온보딩 프로세스로 부트캠프나 홀로 취준 생활로 얻을 수 없는 경험과 지식을 얻었다.
게시판 API 서버 개발 및 배포 / 드론사진 관리 및 정사영상 제작 서버 개발 / 사내 기술세미나 참여
요약하자면 Board API 서버 개발로 NestJS 구축 복습과 Docker 학습을 할 수 있었고, Docker의 이점과 위력을 체감하면서 깊게 파보고 싶은 기술 스택이 되었다. 드론 사진 관리 및 정사 영상 제작 서버 개발로 내가 그동안 NestJS 프레임워크에 대해 알지 못한 부분을 더 심도 있게 알게 되었고, 회사 사업에 대한 이해에도 큰 도움이 되었다. 마지막은 사내 기술 세미나이다. 상반기부터 개발팀 자체 기술 세미나를 진행하기 시작했다. 주 1회 약 3~4명이 기술 또는 개발팀에 공유하면 좋은 내용을 발표하는 사내 학습 문화다. 다른 분들께서 준비한 내용으로 혼자서는 이해하기가 힘들었던 기술 개념에 대해 감을 잡기도 했고, 나 또한 몇 가지 토픽을 준비하는 과정에서 스스로에게 학습 촉진제가 되기도 했다.
입사 당일부터 3일간 팀장님께서 나의 사수분을 대신해 직접 소규모 과제를 내주셨다. 간단한 게시판 API 서버를 만들고 Docker로 배포하는 프로세스였다. 부트캠프에서 Docker를 하루에서 이틀 정도 배운 적이 있었는데 당시 Docker에 대해 이해하기가 너무 어려웠기에 막연한 두려움을 갖고 있었다.
Docker에 대해 조금이라도 이해하고 시작하고자 팀장님께 내 머릿속 구멍들을 채워줄 수 있는 질문들을 했다. 그래도 여러 지원자 중에 뽑은 신입인데 너무 무식한 질문은 하지 말아야지 하는 생각에 어떻게 질문할지에 대한 고민을 많이 했다.(결국 무지함은 탈로 나게 되어 있었다.)
팀장님과의 대화 끝에 Docker에 대한 이해를 조금씩 하기 시작했고, 이전에 이해하지 못했던 순간들이 스쳐 지나가면서 배포한 것도 아닌데 이미 신나고 설레고 있었다. 이해한 바를 토대로 MySQL 컨테이너로 DB 연결해 사용했고, Dockerfile과 docker-compose 스크립트를 생성했다. 이 과정에서 수많은 에러핸들링과 시도 끝에 사내 서버에 성공적으로 배포해 Swagger 문서에 접속했다. 이후 Docker 사용에 대한 자신감도 얻었고, 개인 프로젝트로 항상 Docker를 애용하겠다는 당찬 포부(?)를 갖게 된 계기가 되기도 했다.
사수분과 리팩토링까지 어느정도 진행했기에 조만간 실제 프로젝트에서도 쓰일 내부 서버 API이다. 드론으로 촬영한 사진을 받아 관리하는 서버와 ODM(Open Drone Map) 라이브러리를 사용해 드론 사진으로 정사영상을 제작하는 서버를 개발했다.
📍 새롭게 접한 내용들
- NestJS 딥 다이브
- Swagger Doc
- Dockerode, Docker REST API
- class-transformer 및 여러 Mock test 라이브러리
이 과정은 NestJS에 대해 더 학습하게 된 계기가 되었다. 이전에 부트캠프에서 다뤄본 NestJS 영역은 단순 CRUD만 충실하게 처리할 수 있도록 정말 일부분에 불과했었다. 이 기회를 통해 Injection scope, Logger, Config 패키지, Task scheduling, 각종 모듈 데코레이터, 스크리밍 데이터 관리, Testing(Jest), 폴더 구조에 대한 새로운 고찰(Spring 프레임워크와 같이) 등을 추가로 알게 되면서 앞으로 당분간은 NestJS를 마스터하기까지 시간과 노력을 투자해야 할 필요성을 느꼈다.
그리고 부트캠프 파이널 프로젝트에서 Swagger 문서를 직접 생성해보지 않아 생긴 미련을 확실히 해소할 수 있었다. 프론트엔드와는 다르게 가시적으로 볼 수 있는 결과물이 없다 보니 Swagger 문서로 API 요청을 보낼 때마다 뿌듯했다.
개발자가 직접 Docker 컨테이너를 CLI로 실행하지 않고 서버 앱에서 컨테이너를 생성하는 API를 개발했다. 요구하는 Docker 이미지(여기서는 ODM 이미지를 사용했다.)를 받아와 컨테이너를 실행하는 기능을 위해 dockerode 라이브러리를 알게 되었고, 이 과정에서 Docker 작동 구조와 원리를 이해하며 REST API로 사용하는 학습을 했다.
마지막은 class-transformer 라이브러리를 시작으로 Testing을 위한 각종 라이브러리 영어 문서를 번역해 사내 노션에 공유한 작업이다. 개발 중에 class-transformer 라이브러리를 사용한 곳이 있었는데 class-transformer에서 제공하는 여러 옵션에 대해 문서를 해석해서 정리해놓았다. 사수분께서 정리 본을 보고 잘했다고 하셨는데, 마침 내가 이 개발팀에 기여할 수 있는 것이 뭐가 있을까로 고민하고 소심해지던 시기라 기분전환이 되었다. 수습 동안 내가 팀에 도움이 될 수 있는 부분은 이건가 싶어서 그 뒤로 TDD 도입을 위해 사용할 가능성이 있어 보이는 라이브러리 문서를 정리하는데 투자했다. 확실히 원본 문서를 읽고 정리하는 과정이 나에게도 도움이 많이 되었다. 해당 라이브러리에 대한 파악과 이해를 자연스레 하게 만들었고, 기술 문서를 접하는 것에 대한 게으름과 두려움을 극복하게 했다.
앞서 말했듯, 개발팀 자체적으로 기술 세미나 학습 문화를 갖고 있다. 신입이라고 처음부터 관전만 할 기회는 주어지지 않았다. 도중에 정보처리기사 필기시험 준비기간을 제외하고는 약 2~3주 간격으로 나 역시 세미나 진행에 동참했고, 아래 토픽들을 준비해 팀원들에게 발표했다.
- GraphQL
- DDD(Domain Driven Development)
- Techincal Writing(우아한 테크세미나 방송 요약)
- Javascript 렌더링 속도 개선 방법 10가지(원문 아티클 해석본 공유 및 설명)
특히 사수분께서 세미나 발표로 회사 프로젝트에 사용 중인 Jenkins와 Redis 등의 리뷰와 TDD 도입을 함께 할 수 있었다. TDD와 코드 리뷰 문화를 온전히 정착하기까지는 팀원 전체의 노력이 뒷받침되어야 하므로 평소에 나도 좋은 아이디어 제시를 많이 하려고 노력 중이다.
직장 커뮤니티나 직장 다니고 있는 친구들 얘기로 회사에서 나와 맞지 않는 사람과 일하게 될까 걱정을 많이 했었다. 하지만 나에게 인복이 있었던 건지 좋은 사람들과 함께하게 된 것에 감사해하고 있다. 가장 큰 장점은 친밀도가 정말 높다는 것이다. 서로 개인사도 공유하고 점심시간에는 스스럼없이 농담을 주고받는 상황이 많은 만큼 직원들끼리 정말 화목한 분위기를 유지한다. 이 분위기가 내가 회사에 금방 적응할 수 있었던 가장 큰 요인이지 않을까 생각한다.
업무 관점에서도 느낀 점들이 있다. 조직 구성원들이 서로에게 얼마나 큰 영향을 끼치고 팀의 시너지를 이끌어 낼 수 있는지 과거 HRD/조직문화에 관심을 가졌던 사람으로서 많은 공감을 하고 있다. 짧은 3개월 동안 이 회사에서 느낀 바를 3가지 키워드로 나타내면 책임감
, 직급 간의 의사소통
, 공유
를 뽑겠다.
우선, 다들 각자에게 맡은 역할과 업무에 책임감을 높은 점이 나에게 좋은 영향을 준다. 당연한 얘기지만 자율성이 주어지더라도 업무나 작업에 있어서 책임감을 갖고 일하는 모습에 나 역시 뒤처지지 않고 기여해야겠다는 결심을 하게 만든다. 특히 나의 사수분이 회사에서 맡은 것들, 관리하는 것들이 많다. 회사에 미운 정도 많이 생기셨을 것이라고 예상하는데 그래도 무책임하게 떠넘기거나 손 떼지 않고 끝까지 맡아서 하신다. 내가 빨리 성장해서 사수분의 부담을 덜어 드려야겠다는 생각이 요즘 지배적이다.
둘째는 직급 간의 소통이다. 과거 HRD 컨설팅 펌에서 일한 경험을 돌이켜봐도 어느 회사에 가든 항상 이게 큰 이슈이다. 몇 년이 지나도 직급 간 서로를 이해하는 데에 초점을 맞춘 강의가 변함없이(가끔은 강의 콘텐츠마저 변함없이) 진행되고 있는 것을 보면 어쩌면 평생 이어질 고민인 것 같기도 하다. 구체적으로 회사 사정을 나열할 수 없지만, 우리 회사에서도 직급 간의 소통으로 많은 직원들이 속앓이를 하고 있다. 직급 간의 소통에서 출발해 점차적으로 사내 이슈들을 하나씩 해결해 나가다 보면 장기적으로 튼튼한 조직이 되겠지만, 원인 분석과 직시를 위한 의지나 해결책 및 툴의 부재, 대기업처럼 관련 컨설팅이나 교육 없이 극복해야 하는 고충이 해결을 더 어렵게 만드는 것 같다.
마지막으로 공유의 가치이다. 함께 입사한 동기와 공유의 문제로 갈등 같지 않은 갈등을 빚었다. 부트캠프에서 개발자들은 협업이 중요하다(사실 개발자 말고도 많은 분야의 직무에 협업은 중요하지만)는 얘기를 많이 들었는데, 이게 왜 그런지 체감을 할 수 있었다. 이 또한 구체적인 상황 설명을 할 수 없지만, 앞으로도 일을 함께할 동기와 맞춰보려고 공유방식에 대한 대화를 통해 노력했고 어느 정도는 효과가 있었던 것 같다. 단순히 협업과 공유를 내가 잘하는 것도 중요하기에 나의 업무 방식도 되돌아보게 되었고, 그렇지 않은 팀원과 어떻게 일을 잘 할 수 있는지 또는 어떻게 잘 유도할 수 있는지의 관점을 생각해보는 것도 필요하다고 생각되었다.
3개월의 기간이 짧으면 짧았지만 길면 길었다. 이 기간을 내가 후회 없이 보냈는가에 대한 질문에 답해보라면 그렇다고 답할 수는 없다.
왜?
- 시간을 효율적으로 활용하지 못했다.
- 노션에 불규칙적으로 기록한 것 외에 개발 블로그를 본격적으로 시작하지 못했다.
- 알아야 할 것들이 많다는 생각에 위압감을 느껴 기본적인 학습을 지나치기도 했다.
회사 내부의 복합적인 이유로 실제 프로젝트에 투입되기 전까지 대기하는 날들이 좀 많았다. 할 일이 전혀 없었던 것은 아니지만, 사내 개발에 필요한 내용을 온종일 리서치하고 정리하는 일이 며칠씩 반복되자 지루함을 많이 느꼈다. 지금 생각해보면 회사 일정을 내가 컨트롤 할 수 있는 것이 아닌데 그 시간을 스스로 조금이라도 더 효율적으로 썼으면 어떨까 한다.
회사에서 적지 않은 것들을 습득했다고 생각하지만, 실제로 서버 프로젝트를 생성해서 새로운 것들을 추가로 적용해 볼 수 있는 기회도 스스로 만들 수 있었을 것 같다. 작은 서버를 구축해 여러 가지를 시도해보고 도출한 인사이트를 팀에 공유하는 기회로 만들었다면 좋았겠다는 아쉬움이 남는다.
개발자에게 기술 블로그 운영이 중요하다는 사실은 다시 언급할 필요도 없을 정도로 많이 들었다. 부트캠프를 수강하면서 공부한 흔적을 노션으로 차곡차곡 쌓아놓았지만, 개발자로 커리어를 시작하면서 벨로그로 개발 블로그를 성실히 작성해야겠다는 목표가 있었다. 이 글이 수습 종료를 계기로 삼아 본격적으로 시작하기 위해 쓰는 첫 번째 글이기도 하다. 그동안 배운 것들도 있는데 미리 시작하지 못한 아쉬움이 있다.
마지막으로, 기본적인 내용에 대한 학습 상태를 다시 돌아볼 필요가 있다. 부트캠프에서 다뤘지만 분명 시간이 지나 기억이 가물가물해지거나 아직 채우지 못한 구멍들이 있다. 이 방대한 프로그래밍 세계에서 공부해야 할 것들이 많다는 생각에 위압감을 핑계로 대충 훑고 지나간 내용들이 여전히 존재한다. 기본적인 네트워크 지식부터 SQL 문 등 더 어려운 개념에 욕심부리기 전에 잡고 가야 할 내용들이 많다.
- 회사 프로젝트에 필요한 실무 지식 별도로 학습
- 개인 및 협업 프로젝트 진행
- 개발 서적 꾸준히 읽고 리뷰
- 최소 주 1회 개발 블로그 작성
- 라이브러리 번역 contribute(NestJS 등)
- 자격증 취득
수습 3개월이 거의 끝나가는 시점에 드디어 실무 프로젝트에 투입되었다. 백엔드 팀 회의를 통해 궁금한 점을 질문하고 나름의 의견을 어필해보기도 하면서 앞으로 맞이할 회사 생활이 막연하면서 설레기도 했다. 앞으로의 커리어를 잘 쌓아 나가려면 좋은 회사로 이직하는 방법도 있지만 내가 현재 속한 조직에서도 노력해야 할 부분이 많다. 또한, 이제 시작한 신입 개발자인 만큼 회사 프로젝트를 위해 필요한 학습을 하다보면 폭풍 성장해 있을거라고 믿는다.
아쉬운 점에서 언급한 대로 이 글을 통해 블로깅을 본격적으로 시작했고, 최소 주 1회 작성하는 것이 목표다. 3개월 수습을 경험해보니 회사 생활만으로도 소스는 충분할 것 같고, 따로 진행하는 프로젝트들도 예정되어있거나 진행 중이기 때문에 쓸거리는 차고 넘쳐날 예정이다. 더불어, 개발자에게 꾸준한 독서는 빼놓을 수 없는 덕목이라고 생각하기에 학습과 블로그에 모두 활용할 계획이다.
비전공자의 한계를 극복하기 위해 자격증 취득도 필수다. 7월에 정보처리기사 필기시험에 합격한 상태이다. 조만간 SQLD, 그리고 내년 초에는 정보처리기사 실기시험을 응시할 예정이다. 현재는 구체적인 계획 없이 버킷리스트 수준으로 갖고 있지만, AWS와 CKA 자격증도 고려 대상이다.