어느 날 고민 많은 주니어 개발자가 찾아왔다 - 성장과 취업, 이직 이야기
나의 개발자 커리어
어릴 때 게임 폐인이었다. 수능점수 폭망..
게임을 잘 하지는 못할거같고, 프로그래머를 해야겠다는 생각을 함.
최고의 컴퓨터, 그래픽 카드를 게임을 만드려고했지만, 최고의 컴퓨터, 그래픽 카드 이게 있으면 게임을 못참는다 ㅎㅎ
이 떄의 status로 서울에서 취업 준비함. 고졸로
- 피자 배달로 돈 벌어서
- IT 학원
- 고졸
떨어질 때 마다 청계천 걸어다니면서 쉽지않구나.. 라고 생각
첫 취업은 부도난 인력 파견 회사였다.. 월급도 잘 못받았다.
이후 IT 학원의 강사를 맡았다. 걸어가는데 커리큘럼이 막 생각남. 나는 어려운 것을 쉽게 설명하는 것이 강점이구나..
과거에 했던 것이 언젠가 도움이 된다.
그리고 SI회사에 취직하였는데 10-11시에 퇴근함, 이렇게 사는게 맞을까.. 라는 생각을 했는데 회사가 부도남.
가장 힘든 시기였다.
그 당시 네카라쿠배같은 회사가 에베레스트 산처럼 느껴졌다. 계속 공부해서 한 단계씩 올라가면 갈 수 있지 않을까 라는 생각
남는 시간을 쪼개서 개발을 공부했다.
그리고 다음 커뮤니케이션(카카오)에 합격함 완전 신났다.
SK 플래닛에서도 일 하였고, 우아한형제들에서 근무하게 되었는데
대용량 트래픽을 대응할 수 있게 아키텍처를 구성하면서 MSA로 마이그레이션을 하게되었고 능력을 인정받아 CTO로 승진함.
나는 밑바닥부터 커온 사람이다.
성장, 취업, 이직 주니어 개발자에게 조언
이직
- 가고 싶은 회사를 1, 2, 3티어로 정리해라.
- 1티어 : 언젠가는 꼭 가고싶은 회사.
- 2티어 : 1티어보다는 약하지만 가면 좋겠다.
- 3티어 : 일단 취업, 이직을 해야하니까.
회사와 기술을 맞춰야한다.
- 1티어 회사들 채용사이트 - 사용 기술 조사
- 비슷한 기술을 사용하는 2, 3티어 회사들 찾기
또, 채용 확률을 높이기 위해서는
- 실무에서는 당장 사용하는 기술을 잘 다루는 경력자를 선호
- 기술을 맞춰두면, 3티어 회사에 입사해도 경력을 쌓아서 1티어로 갈 수 있다.
기술의 방향성이 맞는 회사를 찾아야함.
신입 vs 경력
- 신입으로 취업 vs 경력으로 취업
- 1티어 회사는 신입으로 취업이 10배는 더 어렵다
- 일단 3티어 회사로 취업
- 그게 안되면 개발 회사로 우선 취업
- 3티어 -> 2티어 -> 1티어로 더 취업하기 쉽다.
성장 연봉
성장: 개발, 운영, 개선 사이클을 경험할 수 있는 회사 프로덕트도 성장하고 엔지니어도 성장하는 회사.
다른회사의 제품을 만드는 회사(SI, SM 등)
사이클을 다 경험하기 어려움
초과 연봉 불가
본인 제품을 만드는 회사
더 많은 트래픽을 받는 회사가 더 좋다, 장애 대응 경험 가능.
초과 연봉 가능
채용
- 채용은 확률이다
- 개발자 TO는 무제한이다.(실력있는)
채용은 확률이다.
- 면접관은 사람이다. 면접관 마다 선호하는 것이 다 다르다.
- 성향 : 기술 경험 vs 성장 가능성
- 기술과 성향이 맞다면 합격 확률이 높다.
그냥 영한님 엄청 웃김.
티어가 높은 회사가 평균 기대치가 높다
- 개발자의 실려고가 깊이가 점점 더 중료
- 사용자 +
- 트래픽 +
- 돈 +
- 개발자 기여
- 수익 +, 장애 +
개발자 TO는 무제한이다.
과거에는 회사의 TO를 놔두고 개발자들이 경쟁하여서 뽑았는데
요즘에는 개발자(실력있는)를 회사가 모셔가는 시대로 바뀌었다.
개발자 채용 전쟁(실력있는!!)
시장에 실력있는 개발자가 부족하다.
서류에서 계속 탈락
- 아직 실력과 경험이 해당 티어를 가기에는 부족
- 기대치를 낮추고 회사 티어를 낮추어야한다
- 학습과 경험을 더 쌓아야 한다
- 실력은 있지만 이력서 작성 방법 부족
- 나쁜 케이스: 프로젝트만 나열
- 이력서 잘 쓰는 방법도 찾아서 공부해야함
필살기!! 기술 면접관을 낚는 마법의 단어
프로그래머 = 문제해결사
프로그래머의 뇌
- 문제는 풀어야 한다
- 해결 방법이 궁금하다.
문제와 해결이다.
{?}프로젝트를 진행했는데, 주말마다 시스템이 다운되는 문제가 발생했다. (면접관 : 어? 이거 쫌 궁금하네 ㅎㅎ)
알고보니, OOM이 나고 여러개를 확인해서 보니까 주말에 정적 메모리가 쌓이더라. ~~
문제를 기술적으로 어떻게 해결했는지 자세히 적는다.
과정을 자세히적어야 한다!!
깊이
- 기술적으로 깊이 있는 개발자 선호
- 깊이라는 것은 하나만 파는게 아니라 깊이 파기 위해 그 주변까지 파고 들어가는 것
- 스스로 깊이있게 파고 학습한 개발자들은 보통 문제를 잘 해결한다.
이력서
- 이력서 잘 쓰는 방법도 공부해야함
- 겸손도 중요하지만, 본인 마케팅도 중요함
- 당신이 뭘 잘하는지 구체적으로 잘 적어야 상대가 알 수 있다.
- 면접관 관점에서 생각
- 문제 -> 해결 포인트
- 어떤 문제가 있었다 -> 기술적으로 어떻게 해결했다. 중요함
- 이런 것을 통해 나의 기술적 깊이를 보여주어야 한다!
- 이게 바로 면접에서 물어보는 낚시가 된다. 내가 준비한 필살기를 물어볼 확률이 높다.
- 내가 원하는 대로 면접을 이끌어 갈 수 있다. 면접의 주도권을 가져갈 수 있다.
서류 통과 면접 탈락
- 실제로 내공이 부족
- 내가 안다는게 진짜 아는걸까???
- {?}개발자의 스프링 강의를 다 들었는데, 정말 스프링을 잘 아는걸까
- 학습 -> 체득 -> 정리
학습
- 궁극적으로 가고 싶은 회사의 기술 스택 참고
- 채용공고에 다 나와있다.
- 목표로 하는 회사에서 사용하는 기술 학습
학습의 3단계
- 학습: 강의, 책
- 체득 : 실무 적용, 토이 프로젝트
- 정리 : 노트, 블로그, 세미나 만들기
학습과 이직
- 학습을 통해서 나의 레벨을 높이고 도전
지속적인 학습과 성장
- 지속해서 학습하고 지속해서 성장하려면?
- 이런 과정을 삶 속에서 지속하려면?
- 마라톤
목표 vs 시스템
목표
- 이번달까지 영어 점수를 100점 받는다.
- 이번달까지 모 개발자의 스프링 인강을 다 듣는다.
- 성공하면 달성, 실패하면 미 달성
- 열정이 생긴다 -> 목표를 잡는다 -> 실패한다 -> 좌절한다 -> 포기한다 -> 반복.
- 열정은 불쏘시게 같은 것
목표의 성공, 실패가 아닌 과정자체에 충실
시스템
하루 3끼 밥을 먹는 것
- 시스템 루틴
- 퇴근 후 30분 운동
- 7:30 ~ 10:30 학습, 강의 준비
- 그냥 이 시간에 앉아서 하는 것
- 열정이나, 열심히 하는게 아니다. 그냥 시스템에 나를 맡기는 것
시스템을 돌린다
- 이렇게 반복한다.
- 시스템도 본인에게 맞도록 개선이 필요
- 시스템을 통해 지속 성장
피드백 사이클
- 피드백은 빠를수록 좋다
- 야구 선수의 공던지기 연습
- 던진 공이 스크라이트인지 몇 달 뒤에 알 수있다면 성장할 수 있을까?
- 테스트 케이스: 빠르게 성공 실패를 알 수 있다.
시스템과 피드백 사이클
- 시스템을 통한 성장 -> 이직 시도 -> 피드백 -> 사이클
시스템과 성장
- 실무에서 업무시간 이후에 학습하는 개발자가 그렇게 많지 않다.
- 시스템으로 매일 3시간씩 학습 = 1년 1000시간 학습
- 이렇게 학습하는 개발자는 잘 될 수 밖에 없다
두 종류의 개발자
- 진짜 실력있는 시니어로 성장하는 개발자, 그렇지 못한 개발자 차이점
- 개발자 A: 본인이 매우 잘한다 생각 -> 팀에서 보통인 개발자
- 개발자 B: 본인이 아직 부족하다 생각 -> 팀에서 최고의 개발자
보통 개발자
- 주니어 3년 정도 되면 대충 업무 굴러가는 것이 보임
- 담당 업무는 공부하지 않고 처리할 수 있음
- 더이상 공부할 것이 없다 생각함.
- 업무를 잘 한, 본인이 잘 한다고 생각
- 성장이 멈춤
- 혁신이 어려움.
- 우물안 개구리
실력있는 시니어로 성장하는 개발자
- 공부하면 할 수 록 더 배울 것이 나옴
- 본인이 배워야 할 것이 많다 생각함
- 실력은 있지만 겸손함
- 기속적인 성장, 엄청난 내공
- 기술적인 혁신, 더 큰 도전을 즐김
- 실력있는 시니어 개발자로 성장.
기술적 겸손함.
대나무 이야기
- 대나무에. 마디가 있는 것은 더 크게 성장하기 위함이다
- 사람은 컨디션 사이클이 있다. 계속 기계처럼 할 수 없다
- 마음을 다지고 삶의 방향과 시스템을 점검하는 시간이 필요
- 3개월에 한 번정도 산에 가거나, 좋은 카페 가는 것.
마지막으로
시스템을 통해서 더 좋은 개발자로 지속해서 성장하는 것 자체가 중요
좋은 회사, 높은 연봉은 자연스럽게 따라온다.
성장을 통해 주변 동료들에게 좋은 기술 리더십과 좋은 영향력을 발휘,
성장을 통해 주변 동료들에게 인정받고 함께 일하고 싶은 개발자로 남는 것.