본문 바로가기
정리

2022 회고록 - 스타트업 회사로 이직한 개발자의 회고록

by sliora 2023. 1. 15.

2021년 11월 이직을 생각하다.

사실 이직 생각은 이전부터 많이 가지고 있었다. 하지만 코로나, 결혼 등이 맞물려 안정감을 택하는 바람에
이직 시기가 조금 늦어지게 되었다. 그러던 중 유튜브 개발바닥 채널에서 영한님의 인터뷰를 접하고 본격적으로 이직을 생각하게 되었다.

 

안보신분들은 강추하는 영상이다.

기존에는 소위 잡부라고 불리며 언어와 프레임워크를 가리지 않고 필요할 때에 맞게끔 쓰는 얕지만 다양한 스킬셋을 가지고 있었다.
그래도 조금 재밌게 일했던 이유는 JAVA와 C# 두 개의 언어로 .Net, Xamarin, 스프링, 전자정부프레임워크 등등..
다양한 프레임워크를 사용하여 winform, 안드로이드앱, 웹 등등 다양한 플랫폼을 개발하다 보니 그래도 나름 재밌게 했었다.
하지만 연차가 쌓여 갈수록 점점 했던 일이 반복이 되었고, 복사 붙여넣기만 하는 내 모습이 보이기 시작했다.

 

이게 정말 개발자 인가? 라고 생각하던 와중에 서비스 회사들에 대한 이야기를 개발바닥에서 간접 체험을 하게 되었고
그 생각으로 인해 다른 회사에서는 무엇을 어떻게 개발을 하고 거기를 다니는 개발자들은 어떻게 개발을 하고 또 어떻게 공부를 하며 어떤 생각을 하는지가 궁금해졌다.
삼인행 필유아사언(三人行 必有我師焉) 세 사람이 함께 가면 반드시 내 스승이 있다는 말을 굉장히 좋아한다.

지금 개발자들과는 오랜 기간 일을 해봤으니 더 많은 개발자들과 만나고 싶은 생각에 본격적으로 이직 준비를 시작했다.

 

2021년 12월 이직 준비 시작

회사 일도 마무리해야 할 게 많았기 때문에 병행을 하면서 본격적으로 이직을 준비했다.

개발자로써 이직 경험이 없기 때문에 무엇부터 해야 할지가 막막했지만 일반적으로 쉽게 생각할 수 있는 포트폴리오를 먼저 생각했고 여태까지 했었던 프로젝트들을 하나씩 정리하기 시작했다.

포트폴리오 경험이 많지 않았던 나는 포트폴리오를 작성하면서 정말 많이 도움이 된 개발바닥 - 배달의민족 합격한 신입 개발자 이력서 공개합니다라는 컨텐츠였다.


기존에는 단순히 어떤 일을 하였는지 나열하기 바빴는데 나열이 중요한 게 아니라 그 안에서 어떤 의미 있는 일을 했는가를 적는 게 중요하다고 말씀을 해주셔서 수행한 프로젝트에서 의미를 찾으려고 했지만 대부분의 일이 비슷했고 구현에 초점이 맞추어져 있었기 때문에 찾기가 쉽지는 않았다. 그래도 어떻게든 그 안에서 의미를 찾으려고 노력을 했고 다른 여러 노션 포트폴리오도 많이 참고를 해서 준비를 했다.

 

기술 스택

포트폴리오를 준비하면서 네카라쿠배 및 다른 기업들의 구인 공고들을 보기 시작했는데 SI/솔루션만 하던 사람의 입장에서는 정말 처음 듣는 기술 스택들이 많았다.
이때 그동안 내가 해오던 것은 비지니스 로직에 불과했고 백엔드 개발자라고 불릴 만한 요소는 많이 없었던 것을 깨닫고 머리를 크게 한대 맞은 기분이 들었다.


Restful API 설계 및 개발 경험, JUnit 등을 이용한 유닛/통합 테스트코드 작성, JPA, Hibernate 등 ORM, CI/CD, docker, JIRA, Confluence 등등... 서비스 업체들의 모집 공고들을 보면서 든 처음 생각은 저게 다 뭐지? 였다.
분명 나도 개발자로 일을 했었는데, 다른 시대에 살 고 있는 건가 하는 생각.. 그동안에 나도 API를 만들긴 했는데.. Restful API는 뭐지? 유닛/통합 테스트를 하긴 했었는데.. Junit 을 활용한은 뭐지? 등등..


처음에는 개발 스킬인 줄 알았는데 검색을 해보고 개발 도구들이구나를 알게 되었고 저런 걸 하나도 모르는 상태에서 내가 이직을 할 수 있을까라는 생각이 불안감이 엄습했다.

 

2022년 1월 일단 올려보자

일단 이력서라도 올려봐야 현실적인 내 위치를 알 수 있을 것 같았다.
우물 안 개구리였던 것인지, 아니면 단순히 용어가 다른 것인지 확인하고 싶었다.
생각보다 놀랍게도 정말 많은 업체들이 열람을 하였고, 메일 또는 사람인을 통해 정말 많은 면접 제의를 주셨다.

 

제안을 준 업체에 대해 자세히 살펴보니 대부분 현재 회사와 크게 다르지 않았고 대부분 헤드헌터에서 온 요청이 많았었지만 그중 몇몇 곳에서는 유명한 회사들도 있었고 꽤 괜찮은 이직 제안도 들어와서 자신감을 조금은 얻을 수 있었다.

하지만 불안감을 없애기에는 많이 부족했고 그래서 공부를 본격적으로 시작했다.

 

동시에 인프런 공부 시작

기존에도 http://www.devlec.com/ 이라는 사이트에서 10개월간 강의를 들었던 적이 있었는데 이때는 거의 C#, .net 위주로 강의를 들었으나 jsp에서 벗어나 스프링을 제대로 배우고 싶었던 차 유튜브 개발바닥 채널에서 본 영한님의 로드맵 추천이 생각이 났고
당시에는 거금이라고 생각했던(지금은 강의 퀄리티에 비하면 정말 저렴하다고 생각) 금액을 지불하고 인프런에 영한님 로드맵을 시작했다.

 


이때 객체지향이 무엇인지, 스프링의 핵심가치가 무엇인지, 추구하는 목적이 무엇인지, 스프링이 제공하는 구체적인 기술에는 어떤 것이 있으며 왜 필요한지 등 객체지향과 스프링에 대해 정말 제대로 공부할 수 있었던 것 같다.
특히 영한님은 원리를 이해시키기 위해 초기에는 어떻게 사용을 했고 그랬을 때 불편한 점을 어떻게 개선하여 발전시키는지를 코드로 보여주는 강의 스타일이 정말 감명 깊었다.

퇴근 후에는 잠들기 전까지 4시간 이상은 보려고 노력을 했고, 주말은 최소 8시간을 강의와 실습을 병행했다.

이 자리를 빌어 이런 강의를 볼 수 있게 제작해 주신 영한님과 이러한 플랫폼을 개발해 주신 인프런에게 무한한 감사를 드리고 싶다.

 

 

2022년 2월 본격적인 면접 시작

1월 후반부터 면접을 시작했지만 본격적으로 면접을 보게 된 것은 2월부터였다.
이미 연차도 많이 있었고 회사에 이직을 하겠다고 얘기를 해놨었기 때문에 반차 등을 활용하여 면접을 보는 데는 크게 무리가 없었다.
다만 5년 만에 이직이라 면접에 대한 불안감이 많았기에 면접 제안이 들어온 회사를 기준으로 처음에는 이곳저곳 보게 되었다.
현대오토에버, 메가존, 야나두, 버즈니, GS ITM 등등.. 많은 곳에 면접을 경험했고 합격한 곳도 있고 떨어진 곳도 있었다 (최종 이직한 곳은 목록에 없는 곳이다.)


나름 어느 정도의 기준을 가지고 회사를 구하고 싶었는데, 서비스 업체이거나 200명 이상의 기업이었다.

그러던 중 정말 생각지도 못한 기업에서 연락이 왔는데, 300명 이상, 상장사, 앞으로가 기대되는 신기술을 하는 그런 곳이었다.


보통 먼저 전화가 오는 업체들은 대부분 안 좋다는 편견이 있었는데 회사 홈페이지, 뉴스 등에서 관련 자료를 접하고 괜찮다고 생각이 들어서 면접을 보게 되었다.

면접은 1차 실무진, 2차 CTO 면접을 보게 되었고 처음에는 CTO 면접인지 모르고 본부장님이라고 들어서 그냥 임원 면접인가 보다.. 하고 큰 긴장감 없이 갔다가 약 1시간가량 실무진 면접보다도 더 깊은 기술적인 질문에 많이 당황을 했었지만 그래도 나름 잘 마무리를 했었던 것 같다.

 

입사 전 준비

2차 면접까지 본 후 합격 발표까지 마냥 놀 수는 없기 때문에 계속하고 있었던 인프런 공부를 이어나갔다.
이때 공부를 하면서 느낀 점은.. 나 정말 많이 부족하구나 우물 안 개구리였다는  생각이었다.

부족한 것을 인정하고 나니깐 오히려 불안함 보다는 평일과 주말에 온전히 공부에만 신경을 쓸 수 있었던 것 같다.

신입때도 이렇게 공부를 안했던 것 같은데.. 정말 주구장창 인프런과 인텔리제이만 본 것 같다.
그래서 짧은 기간이었지만 영한님이 정말 잘 가르쳐주신 덕분에 스프링 입문 ~ 스프링 MVC 2편까지 강의를 마칠 수 있었다.

 

강의에 대한 부분은 다시 한번 자세하게 회고록을 작성해 볼 생각이다.

 

합격

2차 면접까지 본 후 거의 일주일간 연락이 없어서 떨어졌나? 라는 생각이 들었었다.
그래서 마냥 기다리고 있을 수만은 없어서 먼저 연락을 했더니 합격을 했으나 자리가 없어서 연락을 못했다는 얘기를 들었다.
처음에는 무슨 소리인가 싶었는데 알고 보니 내가 입사하기 전/후로 대규모 채용을 하게 되면서 사무실 자리가 없다는 얘기였다.
이후 인사팀에서 다시 연락이 와서 연봉 처우에 대해 얘기를 했고 이전 회사 대비 약 20% 인상으로 최종 협의하였다.
그 후 다시 일주일 뒤 첫 출근을 할 수 있었다.

 

입사 후 약 9개월간의 회고

먼저 상장 회사에서 필요했던 ITGC 관련 프로젝트를 처음 맡게 되었다.
처음 입사하면 B2B 프로젝트를 할 줄 알았으나 사내 플랫폼을 맡게 되어서 한편으로는 아쉽지만 그래도 익숙했던 것들이라 크게 어려움 없이 진행을 할 수 있었다.


사내에 필요한 권한 관리 프로그램을 약 3개월간 springboot + thymeleaf + mybatis로 만들었다.

프로젝트를 진행하면서 퇴근 후, 그리고 주말에 최대한 시간을 활용하여 영한님의 스프링 로드맵에 남아있던 과정을 모두 마쳤고, 틈틈이 토비의 스프링은 처음부터 다시 봤고, 오브젝트(조영호 저)도 읽으면서 스프링 부트와 JPA 실무 완전 정복 로드맵을 시작했다.


JPA는 나 혼자 한다고 되는 게 아니기 때문에 사내 스터디를 조직하여 JPA를 약 3개월간 팀 스터디로 학습 하였다.

사실 영한님께서 강의에서 너무 잘 알려주시기 때문에 스터디에서는 배운 내용을 하나씩 상고하면서 자기 경험에 그 내용들을 적용해봤다.

스터디를 하면서 언제 JPA로 전환을 할지에 대한 논의도 계속 이어져 갔는데, JPA 활용2 부터 Spring Data JPA 를 학습하면서 한개를 배우고나면 어.. 이거부터 적용할 수 있나? 이런 생각이 들다가도 또 더 좋은 방법이 계속 나와서 결국 QueryDSL을 완강하고 적용을 시작했다.

기존 권한 관리 프로그램을 JPA로 모두 변환을 하고, 프론트 또한 새로운 프론트엔드 개발자가 들어오면서 서버 사이드 렌더링(SSR)을 CSR 방식(react)으로 분리하고 단순한 get, post만 사용하던 Form 방식에서 RESTful API 서버로 컨버팅을 진행했다. (정말 이 과정에서 많은 것을 배웠는데 이 부분 또한 따로 포스팅을 할 예정이다.)

 

 

api documentation tool로는 swagger3를 사용하였는데 스웨거를 사용하면서 Dto에도 정말 많은 신경을 쓰게 되었다.

예전에는 Entity와 Dto, Vo의 차이도 몰랐었고 그냥 막무가내로 썼었는데 각각의 역할을 알게 되면서 잘 분리하는 것에도 신경을 썼다.

프론트 개발자에게 필요한 정보만 받고, 줘야 했기 때문에 이에 대한 컨벤션 부분도 많이 신경을 썼다.
변환을 하는 과정에서 단위 테스트(블라디미르 코리코프 저), 테스트 주도 개발하기(최범균 저) 등으로 북스터디를 진행했고 TDD로 개발은 못했지만 그래도 form 방식과 달리 많은 단위 테스트를 만들면서 코드에 퀄리티를 높이면서 개발을 진행했다.


이때 정말 여태까지와는 전혀 다른 개발을 할 수 있었고 정말 객체 지향스러운 개발을 경험했는데 영한님이 말씀해 주셨던 정말 잘 설계된 객체지향 프로젝트는 기능은 그대로 유지하면서 부품을 갈아끼우듯(다형성) 개발을 할 수 있다고 말을 하신게 변환을 하면서 많이 느꼈는데 나에게는 정말 이 짜릿한 경험은 잊을 수 없는 소중한 경험이 되었다.

 

객체 지향에서 중요한 다형성

 

예전에는 배포라 하면 터미널에 접속해서 직접 배포를 했거나 내가 배포에 아예 신경을 안쓰고 PM이 배포를 한다던가 했었는데

여기에서는 기획, 디자인 프론트엔드, 백엔드가 각각 잘 분리 되어 있고 빠르게 요구사항을 적용해야되다보니 개발 서버에 잦은 배포를 해야 했는데 회사에 이미 Jenkins 서버가 구축되어 있어서 파이프라인을 배우고 우리 프로젝트도 자동 빌드/배포가 되도록 구성했다.

 

현재는 리팩터링(마틴 파울러 저)을 스터디 하면서 기존의 코드들을 단위 테스트를 활용하여 리팩터링 하면서 코드 하나하나에 많은 신경을 쓰고 있고(사실 개발할 때 하면 수시로 리팩토링을 하는게 더 좋다는 것을 스터디를 하면서 알았지만..) 앞으로 개발을 해야 할 멤버쉽, 빌링 등에 대한 프로세스 스터디를 기획팀과 진행 할 예정이다.

 

SI 회사와 다른점

기존에는 어떻게든 돌아가게끔 빠르게 구현에만 집중을 했다면 지금은 어떻게 더 보기 좋은, 효율적인 코드를 작성할까, 유지보수하기 쉬운 설계 등 즉 악취가 안나는 코드를 고민하는 것 같다.
또한 팀원과 코드를 리뷰하며 더 나은 방법은 없을까? 혹은 다른 방법도 있지 않을까라는 생각으로 작성한 코드에 대해서도 많이 논의를 하게 되었다.

 

두 번째로 R&D를 할 수 있는 여건을 많이 마련해 준다. 특히 회사에서 강의와 책에 지원을 아끼지 않았고 팀원들 간에 스터디도 적극 권장하고 있다. 즉 자기계발에 지원을 아끼지 않는다.
이로 인해 입사 후 북 스터디와 인강 스터디로 JPA, 단위테스트, 리팩터링, 스프링 시큐리티를 진행했고 개인적으로 퇴근 후와 주말을 이용하여 오브젝트, 테스트 주도 개발하기, UML 실전에서는 이것만 쓴다, 함께 자라기 등을 공부할 수 있었다. 물론 단기간 내에 많은 책과 인강을 봤다고 좋은 것은 아니다. 그 깊이는 개개인마다 다르기 때문에 나 또한 봤던 책들은 다시 보면서 다독을 할 예정이다.

개인적으로 북스터디는 게임 개발 팀원들과 함께 진행을 하고 있는데 일부는 웹 관점에서 일부는 게임 개발 관점에서 서로 의견을 주고 받으면서 배우는 것 또한 정말 많은 도움이 되고 있다.

 

 

세 번째는 두 번째와 이어지는 내용인데 공부한 내용을 실무에 바로 적용을 해보는 경험이 정말 큰 도움이 되었다.
아무래도 학자형이 아닌 야생형 스타일이다 보니 이론만 공부하는 것보다는 실제로 사용을 하면서 배울 때 더 많이 깨닫게 되는데
아무래도 실무에 필요한 공부를 하다 보니 더 집중하여 공부할 수 있었던 것 같다.

 

앞으로 계획과 마무리

그동안 미뤄놨던 블로그 작성을 본격적으로 해 볼 생각이다. 

그러기 위해서는 블로그 디자인부터 손을 봐야 할 것 같은데 최대한 빠르게 수정을 할 예정이다.

 

이직을 준비하면서 향로님에게 많은 영향을 받았기에 시작한 1일 1커밋이다.

향로님이 말씀하신대로

커밋의 양과 학습의 양은 전혀 상관이 없다. 하지만 매일 의식적으로 개인적인 성장을 위해 하고 있는 일을 나타내는 지표로 사용하며 그리고 이제는 일상을 지켜주는 하나의 루틴이다. - 2022 개인 회고중

나도 전적으로 동의하고 어느덧 나도 하나의 루틴이 되어버렸다.

그래서 2023년에도 꾸준하게 1일 1커밋을 이어나갈 예정이다.

 

2022년에는 이직이라는 큰 변화가 있었고 그 변화 안에서도 더 큰 변화가 있었던 그런 한 해였다.

동료 팀원과 대화에서도 이런 대화를 나눈 적이 있었다.

"지난 몇년간 개발을 하면서 배운 것보다 지금 3개월이 훨씬 많은 것을 배우고 성장하는 것 같아요"

나 또한 이말에 정말 많이 공감을 했고 실제로도 정말 많이 배우고 있다.

그동안에 SI에서의 개발 경력들이 전혀 무쓸모 라는 말은 아니다. 

다만 짧은 시간 내에 여러 프로젝트를 하면서 요구사항에 기반한 비즈니스 로직 구현에 집중을 했었다면,

지금은 하나의 프로젝트를 하더라도 계속 리팩터링을 진행하면서 더 나은 코드에 집중을 하고 있다.

즉 기존에는 넓게 많이 했다면 지금은 깊게 하나에 집중을 하게 되는 것 같다.

 

두 관계에서 무엇이 더 낫다라기보다 두 관계를 잘 이용하면 더 좋은 개발자가 되지 않을까 생각해 본다.

'정리' 카테고리의 다른 글

AWS Summit Seoul 2일차 후기  (0) 2023.05.15