백엔드 주니어 개발자의 이직 이야기(feat.경력직 이직)

백엔드 주니어 개발자의 이직 이야기입니다.

1. 이직 타이밍👀

보통 이직을 하게 되는 타이밍은 언제일까? 사업적으로 자금이 부족한 경우? 회사의 방향성과 개인의 방향성이 맞지 않는 경우? 주변의 사람들 때문에? 등등 아주 많은 경우가 있을것 같다.

대표적으로는 회사의 방향성과 개인의 방향성이 맞지 않기 때문에, 더 나은 환경에서 자신을 발전시키고자 하는 개인의 욕망에서 출발하지 않을까? 지금의 위치는 주니어 백엔드 개발자이고, 연차가 그리 높지 않기 때문에 다양한 경험(도메인)을 쌓는 것도 중요하다고 판단된다. 최소 1~3년 정도 한 회사에서 할 수 있는 많은 것들을 해보는 편이 좋다. 특히나 함께 리뷰를 할 수 있는 환경이라면 서로에게 자극을 주면서 여러 a가지 고민을 해볼 수 있다.

1년 반드시 채워야 할까 ?

의외로 주변에서 보면 1년은 채워야 한다 라고 생각하는 사람들이 많다. 나 또한 그 중에 한 사람이었으나, 사실 나와 방향성이 맞지 않다고 판단되면 조금 빠르게 이직준비를 하는 것도 나쁘지 않다고 생각한다. 의외로 사람들이 1년을 채워야 퇴직금도 받고, 다른 회사에서 몇개월만의 관둔(?) 이력이 흠이 된다고 생각하겠지만, 실상은 내가 뚜렷한 방향성을 갖고 있다면 기간이 중요한 게 아니고, 무엇을 하느냐가 중요하지 않을까?

애초에 해당 포지션에 공고를 냈을때는 명확한 Job description을 통해서 그 해당 포지션과 회사의 상황을 충분히 설명하지 못한 회사의 책임이 아닐까? 그런 것들을 더 세밀하게 알아내지 못한 지원자의 문제가 아닐까? 사람을 채용하고 이직하는 비용이 어마 무시하다는 걸 생각해본다면, 결코 그냥 지나칠수 없는 사안이긴 하다.

결국 다니기 싫은 직장을 몇개월 참고 꼭꼭 채워서 1년을 다니는 것 보다는, 나와 Fit이 맞는 곳으로 이직을 준비하는게 훨씬 더 서로에게 좋은 것 같다. 명심하자, 나의 방향성과 회사의 방향성을 비슷하게 일치시켜 나가야 한다. 완전 똑같이 일치하는 회사는 어디에서도 존재할 수 없다. 개인의 노력도 필요하고, 회사의 배려도 필요한 부분이다.

준비할 엄두가 나지 않는다.

보통의 직장인이라면, 회사 업무에 치여서, 개인의 생활에 치여서 기력이 소진되는 흔히 번아웃 증상이 흔하게 나타난다. 머릿속, 가슴속으로는 더 좋은 직장을 가기 위해서 무엇을 준비하는 지 대충은 알고 있지만, 힘든 출퇴근길을 거쳐 집으로 돌아오게 되면 그저 씻고 누워서 편히 쉬고 싶은 마음이 훨씬 클 것이다. 그렇기 때문에 외부의 엄청난 동기부여가 있지 않고서는 지금 다니는 회사도 좋다고 스스로 자기 암시를 하거나 좋은 면을 보려고 자신을 속이게 되면서 객관적인 시야가 사라지게 된다. 그리고 집단에 생활에 적응을 하게 된다. 필자는 그런 것들에 대해서 거리를 두고, 자기 객관화를 끊임없이 해야 한다고 생각한다.

개구리를 끓는 물속에 넣으면, 뜨거워서 뛰쳐나오는 반면, 그냥 물에 넣고 서서히 온도를 올리면 개구리는 죽게 된다.

보이지 않는 외부의 변화에 늘 신경을 곤두세우고, 자기 스스로 다독이면서 준비를 해나가야 한다. 그게 너무 큰 일처럼 느껴진다면아주 조그맣게 분할 정복(divide and conquer)방법으로 잘게 쪼개면 된다. 하루에 아주 작은 목표 하나씩 하면 된다.

2. 목표설정

이직의 타이밍을 스스로 알게되고, 필요하다고 느껴지는 순간. 우리가 할 건 적절한 목표를 설정하고 노력을 하고 결과는 하늘의 뜻에 맞기면 된다. 목표설정에서 중요한것은 뭘까?

현재 자신의 위치를 아는 것이다. 자신의 위치를 알게된다면 지금의 상황에서 너무 높지도 낮지도 않은 적당한 목표를 설정할 수 있다. 해당 직무가 될것이고, 해당 직무에서 중요하게 생각하는 것들에 대해서 알게 될 것이고, 그걸 좀 크게 서비스하는 기업을 정할 수 있게 된다.

Job description 살펴보기

스크린샷 2020-10-11 오후 5 42 50

다음은 네이버웹툰 서버 개발자 포지션에 대한 지원자격이다. 사실 완전 구체적이지는 않지만, 내가 무엇을 해야하는지 이곳에서 중요하게 생각하는 것은 무엇인지 알 수 있다. 기본적으로 java, spring을 쓰지만 우대사항에서 중요하게 눈에 띄는 건 non-blocking, 비동기 프로그래밍 경험, nettiy, spring-batch, kafka와 같은 메세지큐 시스템이 눈에띈다. 웹툰 서버는 동시에 많은 유저들의 접속을 처리해야하기 때문에, 비동기, 논블로킹, 이벤트 프로그래밍 기술이 더욱 중요해지고 있다라고 스스로 판단할 수 있어야 한다. 그래야 자기가 지금까지는 단순히 Spring MVC를 해왔지만 Spring WebFlux, Spring Batch와 같은 모듈을 공부해야 겠다라는 판단이 들어야 한다. 그렇기 때문에 내가 앞으로 어느 방향으로 가닥을 잡고 나아갈지는 Job description을 꼼꼼하게 읽고 예상해 보는 것도 목표를 설정하는 하나의 방법이 될것이다.

한 군데만 보지말고, 가고자 하는 회사를 최소 3개 이상 리스트업을 해두고, 전형을 같이 진행하자! 혹여나 이미 지원했는데 떨어졌다고 해서, 다시 지원하지 않는 그런 우를 범하지 말기를, 정말 자기가 가고 싶은 분야이거나 훌륭한 개발자들이 포진되어있다고 생각이 든다면 매년 떨어져도 다시 도전하되, 전년도와는 다른 모습, 마음가짐, 실력을 쌓아서 계속 도전하길 바란다.

3. 지원하기

이직해야 하는 동기부여도 생겼고, 가고자 하는 기업에 대한 목표로 설정하게 된다면, 이제는 차곡차곡 준비하는 것이다. 대게 채용프로세스 자체는 크게 다르지는 않다. 서류 - 알고리즘 - 전화 - 1차 - 2차(최종) 이 사이클을 크게 벗어나지 않는다. 물론 최근 추세는 과제를 내주고, 어디까지 구현하기, 라이브 코딩에서 어떻게 생각하면서 문제를 해결해 나가는지. 이런 평상시의 사고하는 법을 보는 기업들이 많이 늘긴했다.

채용 절차가 엄청 많다고 지레 겁을 먹고, 오히려 큰곳에 도전할 타이밍만 보다가 정작 도전도 못하는 케이스들을 주변에서 많이 봐왔다. 하지만 중요한건 한번에 하나씩 채용 프로세스가 진행된다는 것이다. 한 번에 동시에 여러가지를 채용 절차를 진행하는 것이 아니다. 그렇기 때문에 매 단계에서 평상시에 했던 것들을 기반으로 요약하고, 정리하는 것이 필요하다.

중요한 것은, 채용을 위한 준비가 아니다.

명심해야 할 것은, 당장 벼락치기를 한다고 해서 합격의 당락이 결정되지도 않고, 그렇게 운좋게 합격을 해도 정작 본인이 입사 후 힘들어할 것이다. 그렇기 때문에 채용에 대한 프로세스를 받아들이는 마음가짐을 점검해야 한다. 그 동안 자신이 해왔던 코딩, 프로젝트, 그거에 대한 생각들을 평상시에 많이 했다면, 실제 프로젝트에 녹여내지 않았어도 고민을 그만큼 했기 때문에 그 고민했던 시간들을 높게 쳐준다. 그에 반해 평상시에 아무런 생각없이 구현을 했다면, 그건 채용현장에서 그대로 드러날 것이다.

채용을 위한 준비가 아니라, 평상시에 얼만큼 고민하고 생각하고, 어떤 것들을 느끼면서 어떻게 행동했는지를 아는 것이다. 그런것들에 대한 자기 확신이 있다면, 누구를 만나고 본인의 열정이 충분히 반영될 것이고, 면접관들도 그런 것들을 충분히 느낄 것이다.

지원하기

지원하는 분야의 JD(job description)과 자신의 이력서를 정리하고, 원하는 기업들을 Listup 하게되었다면, 상시풀 혹은 경력공채를 통해서 지원하면 된다. 원티드, 회사의 채용사이트, 링크드인을 통해서 정보를 얻을 수 있다. 물론 가장 좋은건 내가 가고자 하는 기업에 아는 사람이 있다면 추천을 받아서 면접을 볼수도 있겠지만, 필자는 그런 황금인맥은 없는 사람이기 때문에! 그냥 지원한다.

4. 기술 면접

당연하겠지만, 알고리즘, 전화면접, 1차면접, 2차면접 순으로 이루어지고 알고리즘을 제외하고는 모든 과정은 기술면접으로 이루어져있다. 특히나 3~5년차의 Java, Spring 백엔드 개발자를 하고 있다면, 비슷한류의 질문들로 구성되어 있을 것이다. Spring interview question, Java interview question으로 구글에서 검색하면 많은 글들이 정리되어있다. 중요한 것은 시험보는 것처럼 질문과 답을 외우는게 아니라, 왜 이런 질문들을 하는지? 왜 이런 것들을 당연히 알아야 하는 것인가? 그런 본질적인 물음이 중요할 것 같다.

예를 들면, 자바에서 컬렉션에서 Map이라는 인터페이스를 구현하는 다양한 구현체들이 존재하는데, HashMap, HashTable, ConcurrentHashMap 은 각각 어떤 상황에서 쓰이고 각기 다른점은 무엇일까? 🤔 당연히 내가 개발하는 애플리케이션에서 상황이 다르기 때문에 그에 맞는 적절한 구현체를 써야하는 것이 당연하다. 그래서 Java doc API를 평상시 꼼꼼하게 읽고 넘어가는 습관을 들이는게 매우 중요한것 같다. 갑자기 외우면 절대 외워지지도 않고, 현업에서 고민하면서 쓰는 것들이 자신의 것이 된다는 사실을 유념하길 바란다.

기술면접도 전형별로 다르다.

전화면접에서는 정해진 시간(30분) 안에 지원자의 기본적인 자질을 알아보는 Filtering 용도이다. 당연히 기본적인 것들에 대해서 물어봤을 때, 그것들을 얼마나 잘 이해하고 대답하느냐에 따라서 달라질 것이다. 100% 정답을 이야기 하는 것이 아니라, 하나를 알아도 제대로 알고 이해하고 누군가에게 잘 설명할 수 있는지를 보는 것같다.

1차 면접에서는 전화면접에서 받았던 질문에서 대답하지 못했던 것들을 물어볼 가능성이 있기 때문에, 전화면접을 끊고 나서 바로 어떤 질문들을 받았는지 정리해서 반드시 준비해야 한다. 1차 부터는 자신의 프로젝트에 대해서 충분히 설명할 줄 알아야한다. 가령 어떤 프로젝트에서 어떤 역할을 했는지, 어떤 문제점들이 있었고 그 부분을 어떻게 해결해 나갔는지. 중요한 것은 혼자 잘났다가 아니라 반드시 팀단위 프로젝트에서 자신이 특별히 기여한 부분과 자신이 모르는 부분을 알 기 위해서 어디까지 살펴보고 노력을 했는지, 그리고 모델링, 서버의 아키텍쳐에 관해서 물어본다. 당연히 준비해야 하는 부분도 있고, 평상시에 이런것들을 많이 논의하고 고민했던 프로젝트였다면 칠판앞에서 그림을 그릴때 자연스럽게 자신감이 뿜뿜할 것이다.

2차면접도 인성면접이 아니다. 기술 면접이다. 정말 우리가 뽑으려고 하는 직무에서 파트장, 실장, 팀장님 급들이 들어온다. 절대 여기서 부터 거짓말은 무조건 아니다. 억지로 웃는 것보다는, 자신의 장점을 잘 이해하고, 어필하는 것이 중요하다. 기술적인 질문도 1차면접보다는 훨씬 많은 것을 생각하는 질문들을 받을 수 있다. 질문의 깊이가 다르다랄까? 대부분 잘봤다는 사람을 많이 못봤다. 그냥 2차면접은 압박면접이 아닌, 압박면접이다. 편안하면서 질문자체의 무게감이 남다르다. 그 분들의 경험과 경력을 고스란히 말로 팩폭을 당하는 느낌 ? 이랄까. 끝나고 순대국에 소주한잔 하길 바란다. 하루가 아름답기도 하고 허탈하기도 할 것이다.

5.결과 기다리기

매 전형마다 결과를 속단하지 않기를 바란다. 잘 본것 같아도 떨어질 수 있고, 잘 못본 것 같아도 합격할 수 있다. 그저 이미 지나간 시간이고 흘러간 일이기 때문에 그때의 시간때문에 힘들게 보내지 말고, 얼른 잊어버리고 다음 채용 전형을 준비하면 된다. 보통 이게 정말 힘든일이라고 생각한다. 일말의 희망, 기대를 걸게 되기 때문에 밤새 잠못 이룰수도 있고, 현재 업무를 진행중이면 절대 업무에 집중할 수 가 없다. 그런 모든 과정에서 느끼는 절망감, 불안감, 희망 등을 반드시 경험해보기를 바란다. 합격했다고 자신이 잘났다는 것은 아니고, 불합격했다고 절대 자신이 못난것도 아니다. 그냥 자신이 쌓아온 경험과 회사가 원하는 방향에 대해서 다를 뿐이다. 그렇기 때문에 커리어 관리라는 말이 있는 것이다. 필자도 목표는 대용량 트래픽을 처리하고 감당하는 플랫폼 팀에 합류하는 것이 목표이다. 하지만 신입이 당장 저런 직군으로 뽑힐수 있을까? 기본 자격조건이 5년이상 개발자이다.

모든 다 때가 있다.

그렇기 때문에 모든 상황을 조급하게 바라보지 말고, 하나의 과정이라고 생각하면 편하다. 그러면 지금 운 좋게 가게된 회사도 나의 최종 목표는 아닌게 된다. 회사가 최종목표라고 하는 사람들을 만난다. 나도 사회생활하면서 그렇게 말하곤 하지만, 내 속 깊은 곳에서 회사는 절대 목표가 되어서는 안된다. 그리고 회사가 그 사람을 대변하면 안되다고 생각한다. 그 사람 출신이 그 사람을 대변하면 안된다고 생각한다.

에리히 프롬은 현대 산업사회의 문제의 근본은 ‘’소유’’에 집착하는 삶의 방식이 존재한다고 믿는다. 그가 소유한 자동차,집,직업이 그 사람을 규정한다. 그래서 사람들이 더 많이 갖기 위해 노력한다. (중략).. 그러나 이런 소유적인 양식에 집착하는 한 인간은 결코 행복할 수 없다.

6. 맺음말

1년마다 이직 vs 한곳에 오래 머무는

필자를 포함해서 정말 1년마다 점핑을 하는 친구가 있고, 한곳에서 비교적 오랫동안 머무는 친구가 있다. 각자 장단점이 존재하니까 뭐가 맞고 틀린건 없다. 그럼에도 불구하고 내가 이런 글들을 쓰는 이유는 그 당시 그 연차에 내가 느꼈던 감정들을 기억하고 싶어서이다. 그리고 개인적으로는 같은 1년마다 이직을 하더라도 뭔가 뚜렷한 이유가 있다면 좋다고 생각한다. 1년 정도 지내다 보면 회사가 어떤 결정을 내리고, 어떤 프로세스로 일이 진행되는지를 알 수 있기 때문이다. 충분히 만족하고 성장하고 느낀다면 계속 남아있어서 더 열심히 하면 되고, 그렇지 않다면 굳이 1년을 채우지 않아도 다른 곳으로 바로 이직을 준비하는 것이 중요하다고 생각한다.

특히나 다른 회사로 이직 준비를 하면서 중요한것은 내가 평상시 생각하지 못했던 것들에 대해서 돌아볼 수 있게 되는 계기이다. 내가 한 프로젝트를 정리하고, 어떤 역할을 했는지 스스로 점검하다 보면, 내가 습관적으로 어떻게 일을 처리했는지, 무엇이 부족한지를 반드시 알게된다. 알게되면 더 나은 방향으로 자신을 발전시키기 때문에, 내가 이직 준비를 추천하는 이유이기도 하다.

반대로 회사입장에서도 고인물이 아니라 계속해서 사람이 바뀌고 생각이 젊은 사람들로 수혈되고, 바뀌는게 훨씬 좋다. 가장 최악은 마음이 떠났음에도 어쩔수 없이 회사에 머무는 사람들이다. 그건 회사입장에서도 골치아프고, 본인도 더이상 성장할 수 없는 것이다. 이 글을 끝까지 읽었다면 당신 가슴에 손을 한번 얹고 스스로에게 적절한 질문을 하길 바란다.

정말 이대로 괜찮은 것인가?

그렇지 않다면, 당장 행동으로 옮길때이다!!

연관 포스트