주니어 개발자 2년 차 성장기: 실패와 성공을 통한 배움의 여정
나는 숲보다 내 눈앞에 있는 나무를 아주~~ 뚫어지게 보는 편이다.
요즘은 개발자로서 스스로에 대한 부족함을 느끼고 이를 채우려 하루의 대부분 시간을 쓴다. 숲을 보지 못하는 성향으로 인해 나라는 사람이 지금 어떤 상태이고, 어느 방향으로 나아가고 있는지 되돌아봐야 한다고 생각하지 못했다. 글또 지원 중 내 삶을 돌아보고, 이를 글로 남겨야 하는 기회가 생겨 늦었지만, 지금에라도 내 삶을 점검해 본다.
내가 하고 싶었던 것
최근 카카오톡에서 초,중,고 학교생활기록부를 확인할 수 있다는 것을 알게 되었다. 초등학교 6학년 때 작성된 진로 희망은 컴퓨터 프로그래머이다.
컴퓨터 프로그래머라고 작성한 이유는 간단했다.
- 컴퓨터 게임을 많이 했다. 프로그래머랑 전혀 관계가 없지만, 컴퓨터로 하는 거니까 막연히 프로그래머를 할 수 있지 않을까? 라는 생각을 했다.
- IT 관련 직업은 실력이 좋으면 돈을 많이 벌 수 있다, 성공할 수 있다는 이야기를 들었다. 어린 나이부터 노력하면 성공할 수 있는 직업을 해야겠다는 마음이 있었다.
하지만 너무 막연했다.
무엇을 준비하고, 공부해야 하는지 알지 못했다. 그렇게 보통의 다른 친구들처럼 학업에만 충실(?)했다. 고등학교는 IT 특성화 고등학교를 가고 싶었다. 하루빨리 기술을 배우고 돈을 벌고 싶었기 때문이다. 하지만 특성화고 입학을 위한 내신이 부족하다고 판단하여 학교장 추천 기회를 포기했다. 비슷한 성적의 친구가 지원해 붙은 걸 보면서 지금까지도 이 선택을 후회하고 있다. 나는 도전을 하지 않을 때 후회가 큰 사람인 것 같다.
부족함을 느끼다
대학교는 컴퓨터 공학과로 지원했다. 다른 선택지는 고려하지 않았다.
본격적으로 전공 수업을 들으면서 내 능력에 대한 한계를 많이 느꼈다. 특히 써 본 적이 없는 리눅스 환경 B+ 트리를 구현하고 디버깅을 해야 할 때가 가장 힘들었다. 내 끈기에 대해 실망했고, 난 바보인가? 라는 생각을 많이 했다. 그 와중에도 과제를 뚝딱 잘하는 괴물 같은 동기들이 있었다.
좌절해도 포기하지는 않았다. 내성적인 성격에도 불구하고 어떻게든 과제를 제출하기 위해 모르는 동기에게 커피를 사주며 “이거 어떻게 해? 한 번만 봐줄 수 있을까?”라고, 물어보는 용기까지 내었다. 대학교 졸업하기 전에 이 동기를 한 번 이겨보겠다고 아득바득 공부했던 것이 기억에 남는다. 비록 대학 생활 내내 한 번도 못 이겼지만, 내 성적은 인생에서 가장 좋았다.
4학년 때 교내 프로그램을 통해 1달간 샌디에이고에 있는 퀄컴 연구소 IoT 프로젝트 교육에 참여했다. 타 대학교 학생들과 팀을 꾸려 심박수와 공기질 센서를 이용한 주제로 개발하고, 1등 팀은 상을 받을 기회가 있었다.
교내 성적이 좋다고 개발을 그만큼 잘하는 것은 아니었다. 나는 성실함과 암기력이 내 강점이라고 생각한다. 과제는 빼먹지 않고 잘 제출하고, 모르는 건 그냥 외워서 시험을 쳤다. 다익스트라, 벨만 포드 등 어려운 알고리즘이 잘 이해가 안 돼서 외워서 시험을 쳤었다.
이 프로젝트에는 그런 게 통하지 않았다. 모두 성실했고, 암기는 딱히 쓸모가 없었다. 개발 자체가 재미있어 잠을 줄이면서 만들어 보고 싶은 아이디어를 구현할 수 있는 능력이 중요했다. 여기서 또 한 번 부족함을 느끼고 우물 안 개구리였음을 많이 느꼈다.
커리어의 시작은
정보보안에도 관심이 있었다. 고객의 데이터를 지키는 것이 가치가 큰 일이라 생각했고, K-Shied Jr. 라는 정보보안 대외 활동에서 상을 받았다. 당시에는 이게 내 적성에 맞는다고 생각했는데 지금 생각해 보면 암기를 잘했던 것으로 생각한다. 정보보안 관련 장관상 수상 이력이 있으니 아무래도 개발자보다는 정보보안 직무로 커리어를 시작하는 것이 유리했다. 대기업 IT 계열사에 지원했고 붙어 안정적인 직장을 갖게 되었다.
하지만 내가 하고 싶은 일은 아니었다. 기술적인 전문성보다는 관리, 협의, 보고 등 매니징 전문성을 키울 수 있는 포지션이었다. 1년 조금 넘게 참다가 지금이라도 개발자 준비를 다시 해볼까? 라는 고민을 하게 되었다. 1년만으로 보안 직무를 포기하기는 이르다라는 생각으로 기울어 비슷한 포지션에 이직을 했고 결국 1년 뒤 퇴사를 결심했다. 조금 후회 되는 건 비슷한 포지션이 아닌 엔지니어링에 집중된 회사에 갔어야 했다.
안정적이고 좋은 회사들이었다. 퇴사 후 역대급 인센티브도 나왔다고 전해 들었다. 하지만 후회는 되지 않는다. 만약 참고 다녔으면 어땠을까? 라는 생각을 가끔 해본다. 금전적으로는 지금보다 훨씬 여유로웠겠지만, 업무에 대한 불만과 도전하지 않았다는 후회가 온몸에 독처럼 퍼져 있었을 것 같다.
그래도 규모 있는 회사에서 배울 수 있는 프로세스, 사교적인 능력, 문서화 등 배운 것이 많았다. 개발만 잘하는 개발자보다 팀원들과 잘 지내는 문서화도 잘하는 개발자가 더 매력 있지 않을까? 라고 위안해 본다.
터닝 포인트
퇴사 후 주말을 보내고 그다음 주에 바로 합격한 개발 양성자 교육 프로그램에 참여했다. 5개월 동안 기숙사에서 합숙하는 커리큘럼이 마음에 들었다. 혼자 준비하는 것은 유혹이 많아 의지가 흔들릴 일이 많다고 생각했다.
환경은 무엇보다 중요하다고 생각한다. 좋은 학벌, 직업을 갖고 있었던 동기들이 많았다. 다들 눈에 불을 켜고 개발 공부를 하니, 나도 자연스럽게 열심히 할 수밖에 없었다. 대학교 땐 학업과 아르바이트를 병행했기 때문에 온전히 공부에만 집중할 순 없었다. 이 교육 기간엔 모아둔 돈으로 온전히 개발 공부만 했으니, 내 인생에서 공부를 열심히 했을 때가 아닌가 싶다.
교육이 끝나고 반년을 더 구직활동을 했다. 그래도 전공자고 IT 업무 경험이 있으니 금방 할 수 있겠지라는 오만함이 있었다. 내 생각보다 훨씬 많이 불합격했다. 스트레스를 풀기 위해 운동을 하는 시간도 사치라고 생각해 자전거 배달로 돈을 벌며 체력을 유지했다.
포기할 순 없었다. 탈락할 때마다 부족했던 것을 채워나갔다. 그리고 운이 좋게 원하는 기술 스택을 사용하는 좋은 개발자분들이 계시는 곳에서 개발자 커리어를 시작하게 되었다.
개발자로서 1년은?
이제 막 개발자로서 1년을 보냈다. 처음에는 관리자 페이지 기능 하나를 구현하는 것조차 너무 어려웠다. 그리고 실제 운영 중인 서비스에 장애를 낼까? 겁이 많이 났다. 지금은 어느 정도 개발에 익숙해졌지만, 아직도 모르는 것이 많고 구현한 기능에서 버그가 나진 않을지 두려움이 있다.
1년 차는 요구 사항을 빠르고, 잘 구현하기 위해 자바 언어와 스프링 프레임워크를 집중적으로 공부했다. 버그가 없는지 확인하는 테스트 코드도 자연스럽게 공부하게 되었다. 테스트 작성은 아직 많이 부족하다는 것을 느끼기 때문에 평이 좋은 사설 TDD 교육을 수강할 예정이다.
최근에는 작은 기능보다 동료 개발자들과 함께하는 기능을 구현하거나 수정해야 하는 일이 많아졌다. 자연스럽게 내 코드가 개판인지?, 이해하기 쉬운지? 돌아보게 된다. 그러면서 변수명, 메소드명, 구조 등에 대해 고민이 많아졌다. 또한 스타트업 특성상 요구사항 변경이 많은 편인데 변경 영향도를 줄이기 위해 사내 “오브젝트 스터디”에 참여하고 있다.
마무리
입사 한지 3개월 차부터 외부와 연동하는 큰 프로젝트를 혼자 맡아 설계부터 기능 구현까지 끙끙대면서 진행했다. 이때는 내 부족함을 빨리 채워야겠다는 조급한 마음이 컸었다. 요즘은 어느 정도 도메인과 개발에 익숙해지고, 코드를 개선해 나가면서 개발에 재미를 느끼고 있다.
초등학생 때부터 지금까지 내 삶을 간략하게 적어보았다.
삶의 지도를 통해 나에 대해 알게 된 점이 있다.
- 후회하기 싫어한다. 후회할 시간에 내가 할 수 있는 걸 한다.
- 인생의 방향을 중요하게 생각한다. 내가 생각한 인생의 방향과 멀어지고 있다면, 방향을 수정할 수 있다.
내 이야기를 하는 것은 부끄럽지만 가끔 시간을 내서 삶을 되돌아보는 건 꼭 필요한 것 같다.