최근에 몇차례 개발자 상담 요청을 받았다. 나 스스로 멘토 자격은 없다고 생각해서, 대부분 거절했었다. 앞으로도 하지 않을 예정이다. 사실 조언해줄 자격도 없고, 좋은 얘기를 해주기도 쉽지 않다.
(이 글을 보고 연락하는 개발자 또는 교육업체는 더이상 없기를 바란다.)
하지만, 따로 연락해서 개인적으로 상담을 요청하는 경우에는 사회 선배로서 거절하는게 쉽지 않았다. 그들도 얼마나 답답했으면 허접한 나한테 질문을 했을까... 그동안 대화했던 상담 중 두가지만 공유하겠다. (혹시 모르니 질문자의 개인 정보는 비공개로 한다.)
"참고로, 오해가 없기를 바라며 이 글은 이직을 독려하는 글은 아니다;;"
주변을 보면 3년차 전후에 이직하는 개발자를 많이 보게 된다. 3년차 개발자는 이직하기 딱 좋은 시기이다. 필자 역시 3년차 때 이직을 했었다. 필자의 3년차는 어땠을까?
주니어 3년 동안 SI 프로젝트 중심으로 경력을 쌓았었다. 금융, 미디어, 포털 등 여럿업체에 자체 개발한 솔루션을 커스터마이징해서 납품하는 프로젝트였다. 당시 근무 여건이 매우 안좋았고 힘든일이 많았는데, 결국 필자는 3년차 때 이직했다. 당시 회사를 선택했던 기준은 아래와 같다.
"기술스택", "기업문화", "좋은 개발자가 많은 곳"
개발 3년차, 대리1년차 로 입사했는데, 연봉은 신입사원 연봉과 별로 차이가 없었으니,
연봉이 선택의 기준은 아니었던 것 같다...
어쨋든, 당시 필자의 메인 기술이 MS닷넷 이었는데, 당시 포털 회사 중 유일하게 닷넷을 핵심 기술로 사용했던 회사였다. 또한, 당시 대기업 중에서 기업문화가 가장 좋은 회사 중 하나였다. 다양한 개발 모임이 있었고, 개발 외에도 수많은 행사가 있었다. 하루하루 정말 재미있고 즐거운 회사였다.
물론, 그 회사에는 "좋은 개발자"도 정말 많았다.
10년이 지난 지금 기업문화가 가장 좋고, 좋은 개발자가 많은 회사는 어디일까? 어느 회사라고 말하진 못하지만, 우리 머릿속에 생각나는 몇몇 회사가 있을 것이다.
비록 당시 회사는 회사 경영이 악화되면서 2013년 연말을 기점으로 "기술스택", "기업문화" 는 전부 사라졌다. "좋은 개발자" 는 여전히 있었지만, 필자에게 "좋은 개발자"에 대한 기준이 바뀌긴 했다.
사실 정답은 없다. 회사를 선택하는 기준은 각자 다를 것이다. 현재 필자는 위 조건의 회사를 다니고 있지는 않다. 여전히 "기술스택", "기업문화", "좋은 개발자" 는 좋은 회사의 조건이라고 생각하며, 그런 회사를 여전히 꿈꾸지만 현실은 쉽지 않더라...
간략 요약 (상세한 개인정보는 생략)
- 한창 열심히 하는 주니어 개발자 (20대 후반으로 추측..)
- SI, SM 업무를 1년 정도 경험한 신입
- 개발과는 전혀 동 떨어진 업무를 하고있고, 신입사원이라서 업무의 비중이 높지 않음
- 현재 자바&스프링 학습에 재미를 느끼고 있지만, 이직에 도움이 될까에 대한 의문을 갖고 있음
- 자바&스프링 보다는 코딩 테스트, 컴퓨터 공학 등 학습을 하는 것이 우선순위가 높다고 생각 중
- 출퇴근을 하면서, 자바&스프링, 코딩 테스트, CS 학습 모두를 하기가 쉽지 않아서, 어느것에 역량을 집중해야 할지? 어떤 공부를 하는게 옳은지에 대한 고민
- 어느 업계, 어떤 회사로 취업하면 좋은 커리어를 쌓을 수 있을지 고민
질문의 요지
- 이직을 위해서 어떤 공부를 우선순위로 하는 것이 옳은지?
- 어느업계, 어떤 회사로 취업하면 좋은 커리어를 쌓을 수 있을지?
나의 답변
1) 이직을 위해서 어떤 공부를 우선순위로 하는게 옳은지?
답변해주기 너무 어렵다. 코딩테스트는 필수이며, 자바&스프링 같은 개발 업무 역량도 필수로 준비 해야 한다. 어느하나 중요하지 않은 것이 없다. 모두 잘하기 쉽지 않겠지만... 어떤 걸 우선으로 하라고 말해주기가 너무 어렵다. 현재 자바&스프링에 재미를 느끼고 있다면 고민하지 말고 자바&스프링을 열심히 하면 될 것 같다. 중략...... 개발자는 평생 공부를 해야한다. 재미를 찾았다면, 재미있게 공부를 했으면 좋겠다.
2) 어떤 회사로 취업하면 좋은 커리어를 쌓을 수 있는지?
내가 생각하는 좋은 회사는, 좋은 개발자(선후배, 동기 등)가 많은 곳이다. 개발은 혼자하는 것이 아니다. 코드리뷰를 잘하고, 테스트 코드를 잘 작성하고, 개발에 대해서 많은 얘기를 나눌 수 있는 곳으로 가야 한다. 물론, 스타트업 또는 작은 회사에도 좋은 개발자가 많다. 하지만, 확률적으로는 네카라쿠배 당토(네이버,카카오,라인,쿠팡,배민, 당근마켓,토스 등) 에 좋은 개발자가 확률적으로 많을 것이다. 그런 회사를 가면 된다. 하지만, 현실적으로 대기업으로의 이직은 쉬운 일이 아니다. 정답이 없다. 수차례 면접을 봐야하며, 수차례 면접에서 떨어지더라도 좌절하지 말고 차분히 준비해야할 것이다. 만약, 스타트업 또는 작은 회사에 좋은 개발자가 있다는 확신이 있다면 작은 회사라도 도전하면서 한단계씩 올라가는 것도 좋다.
개발자의 커리어에는 정답이 없지만, 좋은 개발자와 함께 해야 한다는 사실은 명심하길 바란다. 물론, 그러기 위해서는 스스로, 본인도 좋은 개발자가 되기 위해서 노력해야 한다.
나의 머리속에 현재 좋은 개발자의 기준은 아래와 같다.
"테스트 코드를 잘 작성하고", "코드리뷰를 잘하고", "개발에 대해서 많은 얘기를 나눌 수 있는" 개발자가 좋은 개발자라고 생각한다. 그리고, 필자는 그런 개발자들과 함께 일하고 싶다.
상담 후기
사실 이분한테는 좀 미안했다. 코딩테스트 방법, 면접 준비를 어떻게 해야하는지 등 현실적이면서 기술적 조언을 듣기 원했던것 같은데, 나의 답변이 너무 추상적이었다.
정리
- 커리어에 고민이 많은 30초반의 3년차 개발자
- SI, SM 업무 3년차
- 현재 회사에서 개발자로서 성장이 불가능하다는 판단
- 일주일 후 퇴사 통보 예정
- 웹 서비스 개발 회사로 재취업을 위해서 다시 공부를 할 예정
- 쓰거나 또는 달콤한 모든 조언을 듣고자 함
질문의 요지
- 질문의 요지를 파악하기 쉽지 않지만, 좋은 개발자가 되고 싶어하며, 퇴사 직전에 심란한 마음으로 인해서 정리 안된 질문을 일단 던진 상황..
나의 답변
질문이 아주 명확하지는 않아서, 답변해주기 쉽지는 않지만... 퇴사 통보를 말리고 싶었다.
1) 퇴사 결정은 신중하게
코로나 이전에도 청년 취업은 쉽지 않았지만, 코로나 시국으로 더 힘든 시대가 왔다. 불행 중 다행이지만, IT 업계는 몇년째 호황을 이루었고, 개발자의 취업은 다른 업종에 비해서 그나마 괜찮다고 생각한다. 그래서, 나는 퇴사 결정에는 응원한다. 하지만, 기본적으로는 아래와 같은 이유로 인해서 회사를 다니면서 이직을 준비하는 것을 추천한다.
- 금전적인 문제 : 갑작스럽게 퇴직을 하게 되면, 생각하지 못한 경제적인 어려움이 찾아올 수 있다.
- 재취업이 안될 때 불안감 증대 : 원하는 직장을 구하지 못하면 초조해질 수 있고, 마음에 들지 않는 회사를 급하게 선택할 수 있다. 악순환이 반복된다.
- 회사의 입장 : 회사에서는 재직자를 선호한다. 공백기간이 긴 개발자를 선호하지 않는다.
하지만, 아래와 같은 사유가 있다면 바로 퇴사하는 것도 응원한다.
- 회사의 업무로 인해서 극심한 스트레스를 받는 경우 (스트레스는 만병의 근원이다)
- 금전적인 여유가 되는 경우. 최소 6개월 이상 무직으로 살아도 경제적으로 여유가 되는 경우
여러가지 상황을 종합해보면, 이미 퇴사를 결정한 것 같지만...
현실적인 문제를 조금 더 신중하게 고민해보길 바란다.
퇴사 이후에는 어떤 마음가짐이 좋을까?
1. 혼자 공부하면 안된다.
- 주변에 개발자를 찾고, 반드시 함께 공부하길 바란다. 혼자 공부하면 방향을 잃을 가능성이 있다.
- 코로나 시국으로 쉽지 않겠지만, 온라인 모임이라도 찾아보길 바란다.
2. github 관리를 하자.
- 매일매일 공부한 내용을 업로드 하자. 당분간 일일커밋을 습관화하기 바란다.
- github에 아무생각없이 업로드하지 말고, 선배 또는 주변 개발자에게 끊임없이 피드백을 받길 바란다.
- 조금씩 하루하루 성장하길 바란다.
3. 면접은 수십번 보겠다는 자세로 임하자.
- 면접에서 두세번 떨어진 일로 너무 실망하지 말자.
- 사람은 완벽할 수 없다. 면접관 중에서도 멍청한 사람들 많다.
- 면접을 많이 보게 되면, 면접 유형을 파악할 수 있다. 다음 면접을 차분히 잘 준비하면 된다.
4. 어떤 개발자가 되고 싶은지 생각해보자.
- 백엔드 개발자 : 네트워크, GC, Thread, 대용량 트래픽, 캐시, 병렬 프로그래밍 등 의 기술을 습득해야 한다. 자바 뿐만 아니라, 코틀린, GO 등의 언어 습득을 해야할 수 있지만, 일단 취업까지는 자바만 열심해히 해보자. 한가지 언어에 완벽하게 사용할 수 있다면, 나머지 언어는 나중에 금방 배울 것이다.
- 프론트엔드 개발자 : HTML, 자바스크립트, CSS 등 기본적인 웹 기술에 대해서 이해해야 한다. vue.js, react 등의 기술 습득에 익숙해져야 한다. 백엔드 개발에 비해서 상대적으로 기술의 변화가 빠르다. 즉, 주니어 개발자가 시니어 개발자보다 잘하는 경우도 많다. 단, UX 에 대한 선천적인 감각이 있으면 더 좋다.
- 풀스택 개발자 : 위에서 설명한 백엔드, 프론트엔드 기술 뿐만 아니라 인프라 관련 업무도 해야 한다. 회사에서 시키는거 이것저것 다 하는 경우가 많다.
5. 테스트 코드 작성을 습관처럼 하자.
상담 후기
질문이 모호해서, 답변하기 쉽지 않았다. 나 스스로 위와 같은 마음가짐을 잘 지키고 있는지 반문하게 된다. 나 스스로도 깃헙 관리 잘 안하고 있는데.. 조언할 자격이 되는가?
사실, 필자가 좋은 조언을 해주기에는 많이 부족해서 이 글이 도움은 되지 않겠지만, 주니어 개발자들은 너무 혼자 끙끙대면서 고민하지 말고, 주변 선배 개발자에게 커리어 상담을 많이 하기를 바란다.
아무생각없이 허송 세월로 보내면, 필자처럼 커리어가 꼬인 후 나이먹고 고생할수도 있다.
좋은 멘토가 되기 전에..
일단 나 스스로 좋은 개발자가 되어야겠다는 반성으로 글을 마무리하겠다.