시니어 SW엔지니어의 이직 고군분투기 (2)

시니어 SW엔지니어의 이직 고군분투기 (2)

나는 코딩 인터뷰를 어떻게 대비했는가, Google Japan, Tranferwise, IBM iX Japan과의 면접 후기

1ff3242c5f6acd42dcccecdbef78961f?s=128

Sa-ryong Kang

February 14, 2019
Tweet

Transcript

  1. 시니어 SW 엔지니어의 이직 고군분투기 (2) 강사룡 (IBM iX Japan)

  2. Who is this guy? “Both side of the table” •

    As a job seeker: 넥슨 등 가고 싶은 곳을, 좋은 조건 으로 들어간 경험 다수 • As an employer: 스타트업을 운영하면서 50명 이상 의 엔지니어를 직접 뽑음 + 알파: HR 서비스를 창업한 경험도..
  3. 주의사항 n 성급한 일반화의 오류 주의 • 어디까지나 개인적인 경험과

    의견입니다 • 누군가에게 옳았던 전략이라도 나에게는 맞지 않을 수 있습니다 슬라이드 링크: https://bit.ly/2tti1w1
  4. 목차 1. 나는 왜 이직을 결심했는가? • 끔찍한 경험 그리고

    따뜻한 경험 2. 나는 어떻게 이직을 준비했는가? • 목표 설정 • 이력서 • 코딩 테스트 3. 면접 후기: 내가 만난 회사들 • Google Japan • Transferwise Singapore • IBM Japan
  5. Chapter I. Brief (& Biased) History of Coding Interview in

    Silicon Valley
  6. 2000 n The Guerrilla Guide to Interviewing - by Joel

    Spolsky • MS Excel PM, Trello 공동 창업자 , StackOverflow CEO • “코딩을 하는 사람을 뽑으면서 코드 테스트도 안 보고 뽑는 게 말이 돼?” • 간단한 문제를 C 언어로 화이트보드에 풀도록 하고, 여러 각도에서 코드의 헛점을 지적하며 어떻게 대처하는가를 봄 • Reverse String • atoi • itoa • Reverse queue
  7. 2006 n The Guerrilla Guide to Interviewing 3.0 • 1.0의

    코드 문제를 다 잘 푼다고 꼭 좋은 엔지니어는 아니더라.. à 보다 쉬운 문제를 기반으로 테스트 • Write a function that determines if a string starts with an upper-case letter A-Z • Write a function that determines the area of a circle given the radius • Add up all the values in an array
  8. Nowadays n 2006년의 과정은 Stage 2/6에 불과 • Inside the

    6 Stages of Stack Overflow's Technical Interview Process http://www.greenhouse.io/blog/inside-the-6-stages-of-stack-overflows- technical-interview-process • Stage 3 smart interview – algorithm & problem solving test • Stage 4 “get things done” interview – design test • Stage 5 PM interview • Stage 6 VPE interview
  9. Nowadays n Higher Bar • 이전과는 비교도 되지 않을 정도로

    어려워 짐. 학부에서 배웠으나 다 까먹었을 알고리즘 문제도 흔히 출제됨 • 이건 다 구글 탓? No! • 여전히 수요-공급 불균형이 있지만 SW 엔지니어의 연봉 급상승으로 공급 증가(인도, 동유럽 등) à 선택의 폭이 늘어남과 동시에 서류 전형으로 판단이 어려워 짐 • Deep learning, Full-stack engineering의 강조로 폭넓은 능력과 동시에 더욱 깊은 특정 domain 지식을 같이 요구하는 추세
  10. Eg. Lyft Android Engineer • 1차 initial phone screening –

    원래는 간단한 퀴즈만 냈었으나 요즘은 결코 쉽지 않음 • 2차 code test 1 (on Web) - 미리 대비하지 않았다면 풀기 어려운 수준의 문제들을, 90분 내로 풀어야 함 • 3차 code test 2 – homework! • 4차 onsite interview - cs/java, UI, infrastructure, design, experience
  11. Implication: So What? • 그럼 난 코딩 테스트 안 보면서

    봉급도 높은 곳으로 찾아봐야지? • SW 엔지니어의 봉급과 난이도의 동반 상승은 세계적 추세 • 우리나라도 최근 1~2년의 짧은 기간에 SV 스타일로 순식간에 바뀌고 있음
  12. 일본은? • 현재는 상대적으로 낮은 연봉 + 낮은 인터뷰 난이도

    • IT    • https://www.nikkei.com/article/DGXM ZO41027710X00C19A2QM8000/?n_ci d=NMAIL007 • 구인난에도 불구하고 일본도 곧 세계적 조류에 동참하게 될 것 à 반대 급부로 높은 임금 수준에 맞는 까다로운 입사 전형이 요구될 것
  13. Chapter II. 나는 어떻게 코딩 인터뷰를 준비했는가?

  14. My Journey n 이직 결정: 7/15 n 구직 활동 개시:

    8/14 n 최종 합격 통지: 10/11
  15. 테스트 준비 n 기본 테스트 준비 - 항상 n 이직

    결정: 7/15 n 7/16~ 알고리즘 연습 및 Github repo update n 구직 활동 개시: 8/14 n 최종 합격 통지: 10/11
  16. 1. 코드 테스트 n “평소 실력”만으로는 쉽지 않음 • 60~120분

    정도의 짧은 제한 시간 • 품질도 어느 정도 보장되어야 함 • 이거 다 거짓말인거 아시죠? • “예외처리 등 아주 구체적인 부분은 보지 않으니 괜찮습니다” • “코드에 다소 문제가 있어도 됩니다”
  17. 1. 코드 테스트 대비 전략 • Cracking Coding Interview •

    전직 Googler가 쓴 공전의 히트작 • 코드 테스트에 대비할 수 있는 다양한 문제를 제공 • 해답이 바로 나오지 않고, 3단계의 힌트 그 후 정답 제시 형태 • 알고리즘 문제, 개발 언어 문제, DB, 객체지향 설계, 아키텍처 문제 등 다양한 주제의 문제가 있기 때문 에 이직을 준비하지 않더라도 실력 향상에 큰 도움 이 됨. • 주의: 일어도 한국어도 번역 품질에 문제가 있다는 평이 있음
  18. 1. 코드 테스트 대비 전략 • Element of Programming Interview

    • 요즘 Silicon Valley에선 이게 대세 • Java 뿐 아니라 Python 버전도 있음
  19. 1. 코드 테스트, 이렇게 대비했습니다 n 1일 1문 • 하루에

    한 문제씩 풀고 푼 내용과 소요 시간을 기록 • 대략 9개월이면 다 풀 수 있음 (평일 기준) • 회사 업무에도 의외로 도움이 됨. “강 상은 뭘 짜도 순식간에 짜더라..“ • 나중엔 마음이 맞는 직장동료 2명과 함께 (비밀히) 스터디 • 매주 화요일 2시간 동안 Scala와 Ruby로 문제 풀이 후 각자 비교
  20. 2. 샘플 프로젝트 n 일종의 open-book test • 유형 1)

    Homework • 유형 2) Github • Hackathon이 정말 하루밤새에 된다고 믿나요? • 어느 유형도 사전 준비 없이 고득점을 얻기가 쉽지 않음. (예외는 있지만..)
  21. 2. 샘플 프로젝트, 이렇게 준비했습니다 n 자기만의 코드 셋 만들기

    • 효과적인 homework를 위해서, 그리고 심층 기술 면접 대비를 위해서 자 기 만의 code template을 미리 구비해 놓는 것이 좋음 • 팁: 회사에서 만든 코드를 6개월 정도 뒤에 다른 형태로 재구현해보면? • 자주 하는 실수: 필요는 없지만 최신 기술이라는 이유로 회사 프로젝트 에 억지로 적용하는 경우.. • 참 잘했어요: 회사의 이익에 가장 부합되는 기술을 적용하되 항상 기술 의 원리, 철학, 기반 소스를 집요하게 파기
  22. 3. 최종 준비 본격 테스트 전 4 ~ 6 주

    정도 중상 정도의 난이도를 20분 이내에 풀 수 있도록 집중 연습 à 여유를 갖고 코드 완성도를 높일 수 있음 일본 회사라면 가벼운 느낌으로.. 글로벌 회사라면, 정석을 다시 펼치는 느낌으로.. 적어도 merge sort, LRU, common ancestor등은 숙지
  23. Chapter III. 면접 후기 (feedback을 받은 회사만)

  24. 1. Google Japan n 매우 독특한 입사 전형 경험 •

    Disclaimer again: 어디까지나 개인적인 의견입니다. • 의문1: “난장이가 되서, 60초 후에 작동하는 믹서기에 빠졌다. 어떻게 탈 출할래?” • 요즘은 그렇게 짖궂은 질문까지는 안 한다지만.. 그것보다.. 애초에 그런 류의 질문을 하는 목적이 뭘까? • 의문2: 매우 독특한 면접 과정 • 힌트1: 내가 아는 G러들의 공통점 • 힌트2: 기자들말고, 직접 접해봤다는 사람들의 증언 • 패인: 언어의 효과에 대한 과대 평가
  25. 2. Transferwise Singapore n 전형적인 잘 나가는 유럽/미국회사의 입사전형 •

    1차 Screening.. 인사 담당자가 아니라 개발자가 면접관으로..-_-; • 2차 코드 테스트: Hacker Rank - 상당히 난이도가 높음 • 3차 코드 테스트 2: 1주일 동안 샘플 프로젝트. 근데 요건이.. • 4차 기술 면접: 90분 • 최종 면접: 역시 90분 • 이렇게까지 해야겠니? @.@
  26. 3. IBM Japan n 일본식과 미국식의 적절한 중간점 • 서류

    심사가 의외로 어려움 • 이후 입사 전형의 세부 내용은 전적으로 매니저의 재량에 달림 • Github 소스 중심 • 추천 가산점이 매우 높음 • 컨설팅 중심의 조직 • 개발 능력뿐 아니라 과거 경험, 문제 해결력을 매우 중시
  27.       모바일 엔지니어 대모집 중!

    Sa-ryong KANG justfaceit@gmail.com 슬라이드 링크: https://bit.ly/2tti1w1