세미나 정리를 다 했는데 회사 문서에만 올려놓고 제 개인블로그에는 올려놓지 않았네요ㅎㅎ 누군가에게 도움이 되길 바라며 늦었지만 올려봅니다 :)

이직/퇴사는 누구나 거쳐가는 길로 언젠가 겪어야 할 일입니다. 7월 15일 세미나에서 들었던 내용을 정리해봤습니다.

해당 세미나를 세세하게 적기보다는 핵심 위주로 적었습니다.

팀원분들께 조금이나마 도움이 되었으면 좋겠습니다. 감사합니다. 🙇

발표자 이경일님은?

  • 네이버 쇼핑에서 글로벌주문정산 개발을 하시고 계심. 들어온 지 얼마 안됨
  • 노가다를 즐기는 개발자. 단순한 작업을 좋아하심
  • 비공식 커리어로 다양하게 일을 함. 대학교때 코딩 알바라든지, 프리랜서라든지…
  • 학교 공부보다는 취업 준비를 했고 실무 경험과 경력을 위주로 쌓음

왜 학교 공부보다 취업 준비를 했을까?

  • 대학교 1학년때부터 동아리 선배따라 코딩 알바를 했는데 학교 수업과 실무는 완전 다르다는 걸 느꼈다
  • 학교에서는 너무 올드한 방식으로 교육하고 있었다
  • 그러다보니 학교에 정을 못 붙였다

동아리 선배를 따라가다보니 좋은 기회를 얻었다. 본받을 사람을 가까운 곳에서 찾자

어떤 개발이 나와 잘 맞을까?

  • 첫 회사에 들어갔을 때 회사가 너무 작다보니 모든 일을 혼자서 다함
    • 하드웨어 구성부터 서버 발주, OS 설치, Apache, Mysql, 네트워크 연결하고 설정하고 접근환경 만들고 등등…
  • 이때가 최고의 경험. 이때 자연스럽게 OS, 네트워크 지식이 쌓였다
  • 그러나 안타까운 생각이 들 때가 있다
    • 요즘에는 개발자들이 다양한 경험을 하기 힘들다
    • 서버 개발자면 서버만 개발하고 프론트와 인프라는 안하는 게 아쉽다.
  • 내가 자주 내는 면접 질문 : “당신은 서버 한 대만 주면 혼자서 서비스를 처음부터 끝까지 구현할 수 있나요?”
    • 이 질문에 나는 얼마나 답할 수 있나? 생각해보자.
    • 서버 아키텍쳐를 생각한대로 그릴 수 있을 정도가 되자
  • 도메인도 매우 중요하다
    • 그러나 대부분의 신입 개발자는 어떤 도메인이 잘 맞는지 알 수 없다
    • 경험이 쌓이면 알 수 있다.
    • 모든 도메인을 다 해볼 순 없으니 일단 경력을 쌓고 조금씩 다른 도메인을 접해보자.

서비스를 혼자서 처음부터 끝까지 만들어보자

어떤 회사에서 시작하는 게 좋을까?

  • ‘어떤 회사에서 시작할 지?’는 생각보다 더 중요하다.
  • 보통 세 가지로 분류한다
  • SI 회사
    • 좋은 품질로 개발할 시간이 부족하다. 제일 안 좋음
  • 서비스 회사
    • 가급적 여기서 시작하자.
    • 본인의 서비스를 운영하고 있는 회사로
      • 당근마켓, 오늘의 집 등등…
  • IT가 아닌 대기업 회사
    • 높은 확률로 개발을 외주로 맡길 가능성이 높다.
    • 자신이 개발할 확률이 거의 없다

내가 오너십을 갖고 서비스를 개발하는 게 가장 좋다

이직에 도움이 되는 역량을 습득하는 방법?

  • 기본기가 중요하다. 경력자는 CS 지식이 꼭 있어야 한다.
  • 특정 언어나 특정 프레임워크를 고집하지마라
  • 유튜브에 좋은 발표 자료등이 많다. 한 번 봐라 (백기선님, 김영한님, 이동욱님)
    • 비대면 발표는 발표자가 생각보다 힘들다. 반응이 없어서… 알아줬으면 좋겠다ㅎㅎ
  • 발표는 크게 2가지 성격으로 나눌 수 있다
    • 내가 공부한 것을 발표하는 사람
    • 내가 업무적으로 경험한 것을 발표하는 사람
      • 이게 생각보다 도움이 된다.
  • 기승전 토이프로젝트가 답이다.
  • 토이프로젝트를 하더라도 서비스 운영 감각을 익히는 게 중요하다.
  • 나도 아이폰 개발 재밌겠다고 생각해서 개발했다가 앱스토어 1위도 했었다. (다 찾아주마)
    • 맨 처음부터 했기에 서버 구성이 매우 간단했다. 그러다 트래픽이 늘고 서버를 사고 여러 경험을 했다.
    • 여행갔다가 서비스가 죽어서 그때 노트북으로 빨리 켜서 복구하기도 했다
    • 서비스를 제로부터 직접 만들고 운영까지 해보면서 값진 경험을 얻었다
  • 이런 경험을 해보면서 얻은 대용량 트래픽 대응은 내가 포털로 진출할 수 있게 된 밑거름이 됐다.
    • 근데 대용량 트래픽은 서비스가 성공하지 못하면 경험 못하지 않나?
      • Stress Test Tool을 이용하면 된다
        • ngrinder 등…
      • URL만 있어도 바로 가능하다
      • 시스템 모니터링은 pinpoint로 해결
  • 책만 보고 하는 것보다 직접 코드를 작성하면서 경험을 해보는 게 좋다.
  • 오픈 소스를 개발을 하면 인텔리제이 JetBrain 라이센스를 공짜로 준다. 오픈 소스 개발에 도전해봐라
  • 역량을 습득하기 위해서는 뭐든 좋으니 행동을 했으면 좋겠다.

공부보다 행동을 하자. 혼자 개발해서 서비스 운영감각을 익히자

면접 이야기

  • 50번정도 네이버나 카카오에서 면접관 경험 (거의 다 경력직)
  • 사실 면접이란 운과 인연이 조금 필요하다. 내가 아무리 실력이 좋아도 안될 때가 있다.
  • 내가 아는 것을 그림까지 그려가며 설명할 수 있어야 한다.
  • 개인 프로젝트 한 건 소스코드 레벨로 다 보니 Github을 관리하자
  • 블로그도 하되 본인의 생각이 녹아있는 블로그를 작성하자.
  • 오픈소스 컨트리뷰트 경험도 있으면 좋다
  • 코딩테스트는 기업에 맞춰서 준비하자. 내 생각엔 무조건 많이 풀어보는 사람이 유리하다.
    • 현업에서 날고 긴 사람도 코딩테스트 경험없이 보면 못 푼다.
    • 아무런 준비없이 보면 당연히 힘들다
    • 제일 잘 보는 사람들은 대학생
    • 해커랭크와 코딜리티 추천
  • 기본적인 CS 지식은 꼭 준비해서 가자. HashTable, Map, Sorting 등 가끔 시킨다. 화이트보드에 큐를 작성하는 걸 경력자에게도 물어본다. 뻔하지만 뻔하다는 건 그만큼 기본적이라는 것
  • 장애를 만났을 때 문제해결 능력이 중요하다. 얼마나 창의적으로 해결하는 지, 운영 경험 등…
  • 마지막에 질문할 거 있냐고 했을 때 본인이 더 어필할 수 있는 부분이 남아있다면 이야기해서 어필하자.
  • 면접도 연습이고 면접도 경험이다. 기회가 있으면 1년에 1번은 연습삼아 봐라
    • 나도 올해 2월에 다른 곳 합격하고 안갔다.

면접을 봐야 내가 무엇이 부족한 지 알 수 있다.

퇴사 이야기

  • 퇴사도 중요하다. 우리나라 IT 시장이 작다. 싸우고 나오지 말자.
  • 보통 팀장이 기록을 한다. 나중에 레퍼체크를 꼭 한다.
  • 평소에 동료들과 좋은 관계를 유지하자. 너무 공과 사를 구분하지 말자. 적당한 친분은 도움이 된다.
  • 나 같은 경우는 퇴사하는 날까지 야근했다. 그랬더니 좋게 봐주신 것 같다?
  • 나에게 도움이 될만한 좋은 사람들은 이미 내 주변에 있을지도 모른다. 사람 보는 눈을 키우자.

싸우지 말고 박수칠 때 더 나은 연봉받고 떠나라.

핵심 정리

  • 가까운 사람 중에 본받을 만한 개발자 한 명쯤은 만들자
  • 개발자가 알아야할 기본적인 CS지식을 갖추자
  • 코딩 테스트는 지원하는 회사에서 사용하는 플랫폼으로 준비하자
  • 면접에서는 자신감있고 당당하게 아는 것을 다 말할 수 있어야 한다
  • 복사 & 붙여넣기가 아닌 본인의 생각을 꾸준하게 정리한 기술 블로그 운영
  • 본인이 직접 운영하는 서비스(토이프로젝트)가 있고 그 서비스를 운영하면서 느낀 점
  • 면접도 연습이다

Q & A

  • 회사에서 업무 처리를 하는 시간이 너무 많다. 내 공부할 시간이 없다. 어떻게 하나?
    • 하루에 업무를 7시간한다고 하면 하루에 10%나 20% 정도는 너의 공부를 해라. 너가 성장하는 게 회사에 도움이 된다.
    • 하루에 1시간 정도는 본인 공부를 하도록 윗분에게 동의를 받아봐라
  • 개발자를 하고싶은데 뭐가 중요한 지?
    • 프로젝트 디자인이나 구조가 가장 중요하다.
    • 그리고 하루 아침에 스프링을 막 소스까지 다 까면서 공부하진 마라. 어차피 나중에 자연적으로 까볼 수 밖에 없다. 스트레스 받아가면서 하지 마라.
  • 체력관리는 어떻게 하나요?
    • 일주일에 2~3번 달리기
    • 영양제를 먹는다
  • 평소에 학습할 때 루틴같은 게 있는지?
    • 내가 하고싶은 도메인을 잡고 서비스를 만들어본다. 예를 들어, 코인했다가 물렸다면 코인에 대한 서비스를 새로운 언어가지고 간단하게 만들어본다.
    • 무조건 만들어보는 게 1순위
    • 나는 얇고 넓게 개발하고 필요할 때 파는 스타일
  • 언제 퇴사욕구가 가장 심한지?
    • 여기서 더 배울 게 없다고 판단되거나 다른 곳의 연봉이 더 높을 때
  • 레퍼체크를 100% 신뢰하나?
    • 내가 아는 사람. 1순위. 100% 신뢰
    • 다른 사람에게 물어본다. (2명 정도)
      • 장단점을 알려달라고 한다.
      • 어차피 한 다리 건너면 다 알게 된다.
      • 그러니 사회생활을 잘 해야한다
  • SI 3년차 개발자인데 서비스로 가고 싶다. 신입으로 지원해야하나?
    • 지금 회사에 다니면서 기술적인 발전을 못 느꼈다면 지금 하는 거에 대해 개선하는 걸 연습해봐라. TC를 작성해본다든지? Junit말로 Spock Framework을 써본다든지?
    • 솔직히 네카라쿠배에 들어온다고 해서 달라지는 게 딱히 없다. 원래 Junit으로 작성했던 코드를 Spock 프레임워크로 작성할 수 있도록 발표해서 전파해보자. 내가 뭘 하고 싶으면 누군가를 설득하고 공부할 수 있는 여건을 직접 만들어보자.
    • 그리고 회사를 퇴사하고 취준하지 말고 회사를 다니면서 해라. 무조건
  • 회사 코드를 클린코드로 함께 만들고 싶은데 가르침을 받을 사람이 없다. 혼자라도 할 수 있는 방법이 있을까?
    • 레거시 코드는 어쩔 수 없이 계속 실행해보고 계속 코드를 보는 방법밖에 없다.
  • 금융 SI인데 개발해서 무엇을 만들기보다는 디버깅해서 사용하는 솔루션을 수정하는 일이 많다. 유지보수같은 업무가 서비스기업으로 이직할 때 이런 경력이 도움이 될 지? 이런 업무를 하면서 어떻게 성장할 수 있을지?
    • 개인적인 생각으로는 남이 짜놓은 솔루션이나 디버깅 보면서 수정하는 건 엄청난 경험
    • 다른 서비스 회사가도 똑같다. 신규 프로젝트를 맡기보다 레거시 프로젝트에서 살을 붙여나가는 수준이다. 그래서 문제점을 수정해본 적이 있으면 오히려 더 좋다
    • 요즘 로그를 안보는 개발자들이 너무 많다.
    • 원래 리펙토링을 할 시간을 주는 회사는 거의 없다.
    • 리펙토링은 내가 해야되는 것이다
    • 남이 싼 똥을 치우는 사람이 더 경험치가 높다.
  • 3년차 백엔드 개발. 네카라쿠배중 한 곳에 이직을 하게 됐다. 그러나 내가 속한 팀이 비주류 서비스 팀에 가게 됐다. 대용량 트래픽을 경험할 수 없다. 그렇다보니 기대했던 부분들이 충족되지 않았다. 경일님은 이런 경우가 있었는지?
    • 서비스에 따라 연봉도 차이가 난다.
    • 네카라쿠배가 좋은 게 팀을 옮길 수 있는 제도가 있다는 것
    • 현재 충실하게 할 수 있는 건 리팩토링.
    • 1년 정도 하고 다른 팀으로 이동하는 걸 추천
  • 백엔드 개발로 1년동안 하심. 그러나 서비스를 출시하지 못해서 트래픽조차 경험하지 못한 상태. 어떻게 해야하는지?
    • 내가 이직을 할 거야. 다 준비를 끝내고 나서 나는 뭐 코틀린 책을 다 보고 나서 이직에 트라이하겠다.
    • 절대 그러지 마라. 내가 이직을 해야겠다고 마음 먹었을 때 바로 면접을 봐라. 그러면 내가 부족한 게 뭔지 알 수 있다.
  • AI에 취업해서 3개월 정도 일하고 있다. 일을 많이 한 건 아니지만 웹 개발 쪽으로 가고 싶다는 생각이 들어서 이직을 하고 싶다. 그만 두고 준비하는 게 좋을까?
    • AI 개발과 웹 개발은 당연히 다르다.
    • 퇴사는 빠르면 빠를 수록 서로에게 좋다. 나도 안 맞으면 바로 손절했다
  • 언제 가장 많이 성장했나?
    • CJ O Shopping, Kakao 커머스 이때 가장 많이 성장했다. 가장 많이 성장한 이유는 좋은 리더를 만났기 때문. 좋은 리더를 만나는 게 진짜 중요하다.
  • 개발자들이 많이 모여있는 SNS를 해봐라. Fackbook에 생각보다 좋은 글들이 많다.