-
9개월 만에 이직한 신입 개발자가 있다?!회고, 생각 2022. 1. 22. 01:04반응형
20년 12월에 인턴을 시작으로 21년 3월에 전환이 되고, 12월 15일 퇴사했다.
그리고 12월 20일 새로운 회사로 출근해 색다른 환경에 적응해나가고 있다.
이직을 결심하게 된 이유가 한 포스트에 담지 못할 정도로 굉장히 많고 프라이빗 하지만 이직을 고민하는, 망설이는 다른 사람들에게 도움이 되기를 바라며 최대한 정제해서 글을 써 내려갔다.
이직의 시작
사실 상시 직군 지원 시작은 인턴이 끝났을 때부터 시작했다. 정규직 전환이 보장되어있는 것은 아니어서 떨어질 가능성을 염두했기 때문에 인턴이 끝나고 바로 포트폴리오를 업데이트하기 시작했다. 무언가 한 일이 있을 때마다 포트폴리오를 업데이트했기 때문에 그리 오랜 시간이 들지는 않았다.
이 서류로 3곳의 안드로이드 상시 직군에 지원했고, 2곳에서 서류 합격을 받았다. 그리고 1주일 뒤 정규직 전환 오퍼 레터도 받았다.
회사 선택에 있어서 굉장히 많은 고민을 했다. 인턴 때 경험했던 큰 기업의 문화, 필자가 하고 싶은 일, 취준 생활의 연장을 할 것인가, 도메인, 보상 제도, 팀 문화 등등... 확실히 맘 놓고 흔쾌히 입사하지만은 않았다. 이러한 고민에도 입사를 결정하게 된 큰 이유는 아래와 같았다.
- 더 이상의 취준 생활을 견딜 수 없었다.
- 아무리 환경이 좋지 않더라도 실무 경험의 유무는 엄청나게 값진 인사이트를 가져다줄 것이다.
위 두 가지 생각 덕에 입사를 결정했지만, 서류가 붙은 두 곳의 전형은 계속 진행했다. 하지만 한 곳은 과제 전형에서 떨어졌고, 다른 한 곳은 면접 전형에서 떨어졌다. 과제 전형은 아직도 그 이유가 납득이 되지 않았지만, 녹음해둔 면접 전형을 다시 들어보니 왜 떨어졌는지 알겠더라..
(나라도 같이 일하고 싶지 않을 정도로 면접에서 절었다 😂)이러저러한 경험들로 자신감이 떨어져서 이 회사에서 무럭무럭 성장한 뒤 이직을 노려야겠다고 결심했다.
이직의 결심
하지만 입사하고 대기업을 계속해서 경험하면 할수록 회사와 나의 핏이 맞지 않다고 생각했다.
정말 정말 많은 계기들이 있었지만, 많은 이야기를 담을 수는 없으니.. 가장 많이 생각났던 글귀들이 있었다.
이동욱님의 취업할까? 미룰까? 포스트
양파님의 초보 개발자에게 포스트
그리고 개인적으로 존경하는.. 개발자 혁명군을 양성하시는 박재성 님의 소개글
"동의되지 않는 권위에 굴복하지 말자."
그리고 마지막으로 이런 마른 풀이 잔뜩 쌓여있는 내 마음에 불씨를 떨어뜨린.. 동기 개발자의 이직이 있었다. 이 사건을 계기로 눈이 뒤집혀서 본격적으로 이직을 준비하기 시작했다.
(제가 1등으로 이직하려 했었는데요 ^^휴;; 선수를 빼았겼네요)
왜 이직을 선택하게 되었나?
되돌아 생각해보면, 부서 배치를 원하는 곳이었던 모바일 개발실에 받았더라면 이직 생각을 안 했을지도 모르겠다는 생각이 들었다. 필자가 배치받은 부서는 일반적인 모바일 개발자들이 모여있는 팀이 아닌, TF팀이었다. 특정 서비스를 만들기 위해서 각 파트 담당자는 1명 정도였고, 안드로이드 개발자는 한 명뿐이었다.
여러 외부 결정들 때문에 기획의 매우 빠르게 변경되어 (^^....) 일정에 치이기도 하고 일이 많다 보니, 프로젝트와 코드 관리가 제대로 이루어질 수 없었던 환경이기도 했다. 개발 철학이 다른 것도 있었겠지만. 아무튼 레거시가 많았지만 충분히 이해했다. 그 당시에는 이것이 최선이었음을. 스타트업을 경험해봤던 나로서 절대 공감할 수밖에 없었다.
하고 싶었던 일
안드로이드 앱 서비스 개발을 하고 싶었다. 늘 해왔던, 공부했던. 바로 그 앱을 만드는 것.
이 팀이 앱 서비스를 만드는 팀이 아니냐고 물을 수 있다. 맞다! 앱 서비스 만드는 팀이다! 하지만 내가 그 일을 담당하지 않을 뿐!
클린 아키텍처를 도입하고, 테스트 커버리지를 80% 이상 맞추고, 코드 리뷰하고... 뭐 이런 건 바라지도 않았다. 일에 치이는 팀에서 인원도 부족한데 어떻게 그 좋은 모든 것들을 해낼 수 있는가? (적어도 객체지향이라도 지켰다면 좋았을 거라 생각한다..)
그래도 가장 관심 있던 것은 레거시 개선이었다. 개발자로서 레거시 개선만큼 돋보이는 무기가 어디 또 있을까?라는 생각에 수행하고 싶었다. 하지만 프로젝트의 의존성 그래프는 굉장한 스파게티였다. 양방향 의존성은 심심치 않게 눈에 띄었고, 대부분의 도메인 로직들이 라이브러리들과 강력한 의존관계로 맞물려있었다. 때문에 한 곳을 고쳐내려면 굉장히 많은 범위의 코드를 뜯어고쳐야 했다.
하지만 이미 QA로부터 검증된 코드이기 때문에 일개 주니어 개발자가 함부로 코드를 건드릴 수 없었다. 수정하게 되면 QA를 또 돌아야 하고, QA팀은 일이 매우 많아 과부하 상태이기도 했다. 게다가 만들어야 할 신규 기능 넘쳐나고, 버그 이슈 티켓도 수시로 달렸다. 이 상황 속에 레거시 개선이란 불가능에 가깝다는 판단을 했다.
실제로 한 일
필자는 WebRTC Native Library를 앱에서 사용할 수 있는 형태로 빌드하는 업무를 수행했다. 순수 WebRTC 뿐만 아니라 그것을 활용해서 Mediasoup SDK까지 빌드해야 했다. 각각의 버전 업에 대응할 수 있게끔 하는 업무이다.
그래서 필자가 실제로 한 업무는 안드로이드 개발과는 거리가 매우 멀었다. R&D에 안드로이드가 묻어있는 정도?
C, C++는 대학생 때 문법만 배운 정도였지만 (이마저도 다 잊어버렸다), make, CMake, makefile, ninja, gn 등등... 이런 걸 아무것도 모르는 상태인 제로 베이스 상황에서 C 라이브러리를 빌드했다. 어떻게든 검색으로 공부하면서 해내기는 했지만.. 흥미가 가지 않아 집중을 하기 정말 힘들었고, 일의 효율은 정말 밑바닥이었다.
노력한 일
그냥저냥 만들고 땡~ 이러고 싶지는 않았다. 그래서 이런 환경 속에서도 내가 취할 수 있는 것은 무엇일까에 대한 고민을 정말 많이 했다.
원하는 일이 아니었어도 이것을 함으로써 배우는 것이 반드시 있으리라. 그리고 개발자에게 도움이 되지 않는 개발 지식은 없다고 생각하기 때문에 버틸 수 있는 원동력이 되었다.
또, 시키는 일만 하는 사람을 그 어떤 회사가 좋아할까? 주어진 일을 하면서도 거기서 무언가 더 좋은 가치를 창출해낸다면, 개발자로서의 나에게 좋은 무기가 될 수 있을 것이라고 생각했다.
클론 프로젝트
팀의 도메인 지식 파악을 위해서 만들었던 클론 프로젝트에서는 이것저것 도입해보고 싶었던 아래의 것들을 시도해보았다.
- api 통신 시 인증 토큰 삽입 자동화
- 토큰 재발급 과정 자동화
- 소켓 코루틴화
- WebRTC 라이브러리의 모든 callback방식을 코루틴으로 변경
그저 클론만 하면서 똑같은 코드를 양산해냈다면... 나는 나 자신에게 실망했을 것이다. 이 프로젝트를 진행하면서 그나마 원하는 아키텍처로 구조를 만들고, 객체지향을 지켜가면서 로직을 작성했다.
SocketIO 내부 구현 로직의 일부를 보기도 하고, Retrofit 구현체의 일부를 뜯어보기도 했다. 이것들을 활용해서 하고 싶은 것들을 만들어보고, 실제로 구동해보면서 영상 스트리밍을 성공해보기도 했다. 만든 결과물이 매우 만족스럽기도 했고 뿌듯했다.
업무 리뷰를 받기 전까지는.인증 토큰 다루는 것은 긴 시리즈 포스팅을 남기기도 했다.
WebRTC 라이브러리 빌드
라이브러리를 빌드하는 것은 생각보다 오래 걸렸다. 심지어 cpu 아키텍처별로 4개를 빌드해야 했다. 한 번 빌드를 돌리면 약 4~5시간 정도가 소요된다. (맥북프로 기준) 그리고 중간중간 명령어 입력해주는 것이 너무 귀찮고, 또 언제 끝나는지 알기 위해서는 진행도를 직접 봐야 알 수 있었다.
라이브러리를 빌드하면 바로 사용 가능한 aar 모듈을 만들 수 있다. 하지만 프로젝트에서는 이 라이브러리 java 파일을 커스텀해야 하기 때문에 aar 모듈을 사용해서는 안된다. 그렇기 때문에 이 빌드된 파일들에서 원하는 파일들을 추출해 직접 안드로이드 모듈로 패키지를 구성해야 했다.
아무튼 이 두 가지 귀찮은 일들을 매 WebRTC 버전 별로 (~m79, m81...) 수동으로 빌드하는 것은 비효율 끝판왕이라 생각했다.
그래서 필자는 아래 일련의 과정들을 자동화하기 위해 써본 적 없는 쉘 스크립트를 공부해가면서 짰다.
- 특정 WebRTC 버전의 브랜치 명을 알아내서 해당 버전으로 체크아웃
- 해당 버전으로 WebRTC 라이브러리 디렉터리 갱신
- 4개의 CPU 아키텍처로 C 컴파일 및 빌드
- 디렉터리에 산재되어있는 각 아키텍처별로 빌드된 so 파일과 Java 파일들을 리패키징해서 하나의 파일로 압축
- 위 파일을 다운로드할 수 있는 링크와 함께 사내 메신저 웹훅을 이용해 메신저 알림 연동
큼직하게 위 과정들을 모두 자동화해냈다. 원하는 WebRTC 버전과 함께 스크립트를 실행시키기만 하고 다른 일들을 하다 보면 메신저로 알림이 온다. 손쉽게 해당 빌드를 다운로드할 수 있는 것은 덤이다.
잘하고 있던 거 아니에요?
개인적으로 이렇게 노력하면서 일을 했다면 필자에게 매우 좋았던 것이 아니냐고 할 수 있다.
우선 필자는 이런 일들이 미래에 분명 도움 될 것이라 생각했지만, 지금 순서가 아니라고 생각했다. 지금은 좀 더 안드로이드에 대해 알고 싶었다. 앱 서비스를 개발하고 싶은 마음이 훨씬 크키도 했다.
그리고 가장 컸던 것은, 개선이 될 것이라 생각하면서 짠 로직들은 실제 프로젝트에 반영되지 않았고, 짜둔 스크립트는 굳이 하지 않아도 될 일이었다는 피드백을 받았다. 매우 유감스러운 상황이었지만, 나는 나의 무기를 날카롭게 할 수 있었던 과정이었다고 생각하기로 했다.
이직을 하기 위해서 한 일들
회사 리스트업
대기업에 디어 버린 필자는 네카라를 제외한 대기업은 눈에서 자동으로 필터링이 되기 시작했다. 심지어 잡플래닛 평점이 3점 초반 이하인 곳은 아예 걸러버렸다.
흥미 있는 도메인, 시리즈 B 이상의 스타트업, 개발 문화 좋은 곳으로 입소문 난 곳, 잡플래닛 평점 등을 기준으로 원하는 회사 리스트업을 진행했다. 그러다 보니 굉장히 많은 기업들이 눈에 들어왔고, 오랜만에 또 기업 흐름 공부도 하며 재미가 붙었다. 한 12개 정도의 회사를 리스트업 했다. 하지만 요새 전형에 코테 + 과제를 요구하는 기업들이 많아서 성급하게 한꺼번에 지원할 수는 없었다.
퇴근 후 시간 활용
거의 항상 칼퇴근을 할 수 있었던 것은 굉장한 행운이었다. 그만큼 준비할 시간을 확보할 수 있었으니까. 하지만 퇴근 후 3시간 정도는 정말이지 너무나 짧다... 직장인들은 참 대단한 사람들이다. 어떻게 그 짧디 짧은 시간들을 활용해서 하고 싶은 일들을 하는 것일까... 참 존경스럽다.
포트폴리오 다듬기
이전에도 무언가 할 때마다 틈틈이 포트폴리오를 다듬어 둬서 엄청나게 많은 변화를 주지는 않았다.
전 직장에서 하던 것들을 좀 다듬고, 자기소개란을 좀 더 다듬었다. 자기소개는 참.. 항상 어렵다. 대표 프로젝트만 남기고 나머지는 다 쳐내고. Nextstep 리뷰어 참여한 것들도 추가했다.
포트폴리오는 역시 언제든지 바로 보여줄 수 있게끔 유지하는 것이 중요하다고 생각했다.
아마 처음부터 다시 쓰려했다면 포폴 작성 기간만 한 달은 봤어야 하지 않을까 하는 끔찍한 생각이 든다.
수면 시간 줄이기
수명 시간 아님퇴근하고 서류 쓰고, 코테 보고, 과제 수행하려면 시간 확보가 최우선이었다. 그러니 자는 시간을 줄일 수밖에 없었다.원래 잠이 많아 하루 최소 7시간은 자야 하지만, 5~6시간으로 시간을 줄이고 다량의 카페인 섭취로 어떻게든 졸음을 참았다. 그리고 다른 중요한 일도 겹쳐서 정말 시간 관리가 굉장히 어려웠다.
카페에서 코테 보다가 마감 시간이 다 되어 근처 놀이터 가서 코테를 마무리했던 적도 있다 😂😂😂
면접 질문 공부
솔직히 면접 질문 대비를 많이 하진 못했다. 과제하는 것조차도 시간에 허덕였기 때문이다. 이직을 직접 경험해보니 이직하는 사람들은 정말 대단하다는 생각밖에 들지 않았다. 일을 하면서 어떻게 이직을 겸하는 것일까... 참 의지 없이는 불가능한 일인 것만 같다.
평소에 개발 철학이나 공부를 해둬야 한다는 생각을 했다. 개발은 벼락치기해서 이루어지는 것이 아니기 때문에 면접 준비 또한 갑자기 할 수 있는 것이 아니라는 생각이 정말 들었다.
하지만 적어도 그 회사에서 사용하는 기술들이나 관련 지식들에 대해서는 공부를 했다. 사용해본 적 없는 Rx에 대해서 공부하는 등 회사에 맞는 공부를 진행했다. 코루틴을 사용해보면서 리액티브 패러다임에 대해서 무지하지는 않았기에 공부하는데 엄청나게 큰 어려움은 없었다.
마무리
여러 군데의 전형을 거친 결과, 필자는 채널 코퍼레이션이라는 회사로 이직하게 되었다.
굉장히 빠른 성장을 하고 있는 회사이고, 소통에 대해서는 오히려 오버 커뮤니케이션을 지향하는 곳이다. 개발자가 반 이상인 곳이고, 그만큼 개발자에 대한 대우가 매우 좋다. 보상은 말할 것도 없다.
필자가 원하는 안드로이드 앱 서비스를 개발할 수 있는 것에서 가장 큰 만족을 얻고 있다. 아직 몇 주 되지 않았지만 팀원들을 충분히 설득할 수 있다면 원하는 기술이나 문화를 도입할 수 있는 환경이란 확신이 든다. 내가 내 힘으로 팀을 변화시킬 수 있다는 것이 큰 매력이다. 전 직원의 나이대가 매우 젊어서 시니어 개발자가 매우 적다는 단점이 있지만, 내가 시니어라는 마인드로 도전할 것이기에 그리 큰 단점으로 다가오지는 않는다.
반 강제적으로 선택한 전 회사에 비해, 이번 회사는 온전히 나의 선택으로 가게 되었다는 생각에 좀 더 좋은 마인드로 일할 것이란 확신이 든다. 운이 좋아서 이번 회사에 이직할 수 있었던 것도 있다고 생각한다. 그렇기에 더 내 자신의 가치를 올리는 일에 힘쓸 것 같다. 회사에서 시키는 일만 하는 그런 부품이 아닌, 회사와 조화를 이루며 함께 성장할 수 있는 그런 개발자가 되어야겠다는 생각이 자주 든다.
일하고 있는 환경을 더 좋게 바꾸려, 고치려 노력하더라도 그렇게 되지 않는다면 고민할 필요 없이 이직을 준비하는 것이 맞다고 생각한다.
절이 싫으면 중이 떠나는 법. 필자는 원하는 성장을 위해서 떠났다.
이런 문제로 이직을 고민하는 사람들에게 이 글이 응원이 되기를 바란다. 주저하지 않고 바로 이직 준비를 했으면 한다!
끝까지 읽어주셔서 감사합니다.
이 글이 도움이 되셨나요?
말리빈에게 커피를 한 잔 쥐어 주세요! ☕ 커피를 인풋으로 더 좋은 글을 아웃풋으로 쓰려 노력하겠습니다 😊
반응형'회고, 생각' 카테고리의 다른 글
28살, 2022년 회고 (1) 2022.12.31 22년 1Q (1 ~ 3월) 회고 (1) 2022.03.29 27살, 2021년 회고 (6) 2021.12.31 4~7월 회고 (0) 2021.07.31 성장에 대한 낙서 (0) 2021.05.02