실리콘 밸리에서 살아남기 #5
2023년 새해. 인터뷰 준비가 본격적으로 시작되었다.
나의 취업뽀개기 계획은 이러하였다.
# 취업 마스터플랜
## 타임라인
- 1개월 내
- 인터뷰 준비 시작.
- 알고리즘 공부. 토픽별로 정리하며 공부하기.
- 2개월 내
- 코딩 문제 본격적으로 풀기 시작.
- 시스템 디자인 공부 시작.
- 3개월 내
- 본격적으로 인터뷰 보기 시작.
- 5개월 내
- 어떠한 오퍼라도 무. 조. 건. 받는 마지노선.
## 리소스
- 코딩 인터뷰: Tech Interview Handbook
- 시스템 디자인: educative.io (유료)
- 인터뷰 연습으로 Pramp에서 Mock Interview 하기
- 대기업 인터뷰를 앞두고 있을 땐 그 기업에서 최근 출제한 문제들을 릿코드에서 찾아 공부하기 (유료)
- 그 이외의 인터뷰 앞두고 회사에 대해 찾아보기. Glassdoor이나 구글링 사용.
## 그 외
- 대기업에 지원할 땐 최대한 referral 통해 하기
- 각 회사의 Job description을 충분히 읽고 이해한 다음, 인터뷰 때 그와 관련해 관심이 많다고 얘기하기
한 때 두서없이 릿코드만 랜덤으로 풀며 인터뷰 준비를 했었다. 뭔가 유형을 알아 문제를 바로 풀어내는 것보다 처음 보는 문제를 풀어나가는 수학자의 기쁘고 설레는 마음으로 인터뷰 문제를 풀어나가고 싶다는 낭만에 빠져 개발자 인터뷰의 본질을 파악하지 못하고 여러 코딩 인터뷰에서 낙방했었다. 물론 competitive coding을 즐겨하는 고수라면 처음 보는 문제도 즐기면서 잘 풀어나갈지 모르지만, 나 같은 newbie에게는 무리였던 것 같다. 돌이켜 보면 필사적이지 않았던 것 같기도 하다.
예전과는 나의 상황도 많이 달라졌다. 학생 때는 낭만에 사로잡혀 코딩 인터뷰를 즐기려 했었고, 인턴을 했던 회사가 꽤나 마음에 들어서 안되면 거길 가면 되지 하는 마음이 있었다면, 지금은 "취직 아니면 백수"라는 현실이 나를 기다리고 있었다. 철이 없던 학생시절, 내돈내산도 아니면서 "학교는 다니고 있다"는 것 하나로 나를 약간의 플러스로 생각했었던 것 같고, 취직함과 동시에 매우 플러스가 된다라고 생각했다. 하지만 직장인으로 생활을 꽤 하다가 취준생을 시작하니 원래 받던 월급이 안 들어오고, 그러다 보니 원래 가지고 있던 계획과 비교해 보니 0이 아닌 굉장한 마이너스의 삶으로 다가왔다. 또 학생 때는 모두가 같이 취업을 준비하던 시기였는데, 이제는 주변 모두가 일을 하는 곳에서 나 혼자 취준을 하고 있었기에 일하지 않고 있는 나 자신이 굉장한 네거티브 아웃라이어로 보였다. 더군다나 나의 신혼생활의 시작을 암묵적으로 취직 이후로 미루고 있었고, 그래서 신혼여행도 결혼식 이후 바로 가지 않고 8개월 이후로 넉넉하게 잡아놨었는데, H가 신혼의 "꽃길"을 걸을 수 있으려면 내가 얼른 취직을 해야 되겠다는 생각이 계속해서 들었다.
그런 이유로 이번 인터뷰 준비는 큰 그림부터 디테일한 것들까지 계획적이고 체계적으로 임했다. Good failure는 애초에 없는, 무조건 취업 성공이라는 결과만 보며 어디에든 붙겠다는 의지로 다가갔다.
취업과정 중 들었던 많은 생각들과 배움들이 있었는데 개중 몇 가지는 나중에 H 가 이직준비 할 때 알려주고 싶은 것들이 있다. 그 부분들을 미래 개발 취준생들을 위해 여기서도 나누고 싶다.
개발 인터뷰를 준비하다 보면 작게는 $100에서 몇천 불까지 가는 유료 서비스들이 많이 보이는데, 예전에는 이런 서비스에 돈 쓰는 것을 매우 아까워했었다. 그래서 불편하더라도 무료 버전까지만 사용하거나 (주로 freemium이 많음), 공부해야 하는 분야를 알아내서 관련 토픽에 대한 디테일은 구글링 하며 최대한 공부를 하곤 했었다. 이렇게 공부하다 보니 (성격 때문인지 모르겠지만...) 자주 인터뷰에는 쓸데없는, 하지만 재밌어 보이는 디테일에 깊이 들어갔다 나오기를 반복했다. "좋은 공부 했다"라고 생각하며 넘겼지만, 시간이 지나고 나서 봤을 때 딱히 나에게 도움이 되지 않은 부분들이 많았던 것 같았다.
그러다 이번 구직기간 중 유료 서비스들에 대해 굉장히 관대해진 사건이 있었는데, 그 시작은 LinkedIn을 통해 연락온 개발자 취업학원 담당자였다. 취업하는 것에 어려움을 겪고 있는 개발자 준비생들을 위해 이 학원에서 대기업에 있는 현직 개발자들과 연결시켜 줘 인터뷰 코칭도 해주고, 커리어의 방향성도 제시해 줘 인터뷰뿐만이 아니라 앞으로의 커리어에 대한 전반적인 케어까지 해주고, 나중에 이직하고 싶을 때도 학원에 다시 돌아와 더 높은 포지션으로 이직할 수 있게 도와주는 맞춤형 서비스를 제공해주고 있었다. 꽤 괜찮은 아이디어라고 생각했고, 선배 개발자가 후배 개발자를 이끌어 줄 수 있는 좋은 취지의 서비스라고 생각했다. 대화가 오가며 긍정적인 반응을 보이자 담당자가 가격을 얘기해 줬는데, 취직되고 나서 받는 월급의 일정 부분을 1년 동안 줘야 한다고 했다..! 지금 기억하기로는 몇만 불 정도였는데, 너무 비싸 놀라는 반응을 보이자 담당자가 주 고객층이 개발자로서 구직생활을 오래 했지만 연이은 실패를 경험하고 자신의 방식에 무엇이 문제인지 알고 싶어 하는 사람, 혹은 개발 백그라운드가 많이 없어 도움이 필요한 사람들이라고 얘기했다 (내가 아직 그럴 단계가 아니라면 2주 free trial을 해보고 결정해도 된다고 하더라). 이 메시지를 받았을 당시 난 준비 초기단계였고 마음에 여유가 있었던 터라 괜찮다며 다음을 기약했다. 나중에 시간이 많이 흘러 절박해지면 몇만 달러보다 커리어적으로 퇴보하는 게 더 싫어서 이런 서비스를 이용하고 싶을 수 있겠다는 생각이 들었고, 갑자기 결제를 미뤄오던 여러 유료서비스들이 상대적으로 저렴해 보여 그 길로 Leetcode, educative.io, 등의 프리미엄 서비스를 결제했다.
결과는 대만족이었다. 전 세계의 모든 정보가 인터넷에 있지만 너무나도 방대하여 좋은 정보를 고르는데도 시간이 많이 든다는 것을 생각했을 때, 전문가들이 정리해 놓은 가이드라인들을 통해 시간을 아낄 수 있어서 좋았고, Leetcode 프리미엄은 Premium-only 문제들을 풀어볼 수 있을 뿐만 아니라 특정 회사에서 나온 최근 인터뷰 문제들까지 알려줘 (유저들을 통한 크라우드 소싱) 그 문제들이 나오지 않더라도 준비하는 과정에서 마음이 든든했다.
개발자 취준생으로서 유료 서비스들을 사용해야 하나 하는 고민이 있다면 난 적극 추천하고 싶다.
이번 코딩인터뷰를 준비하면서, 토픽별로 공부하는 게 확. 실. 히. 효과적이라는 걸 제대로 느꼈다. 꽤 오래전, 이미 나에게 토픽별로 공부하라는 조언을 해준 형이 있었다. 그땐 그 조언을 제대로 듣지 않고 넘겼다가 이번 인터뷰 준비 할 때 문득 생각이 나서 토픽별로 공부해 보려고 마음먹고 있었는데, (이 형은 나의 커리어에 큰 영향을 준 은인이기도 하고 또 재밌는 사람이라 마지막에 그 형에 대해 간략히 써놨다) 이번 인터뷰 준비를 계획하는 과정에서 Tech Interview Handbook을 알게 되었고, 토픽별로 정리가 잘 되어있는 것이 내가 원하는 방향과 딱 떨어져 이 가이드라인을 따라 공부하기로 했다.
그렇게 토픽별로 공부하고, 토픽별 추천 문제들을 반복적으로 풀고 나니 패턴들에 익숙해지기 시작했고, 나중엔 여러 토픽이 얽혀있는 문제 (e.g. Graph + Heap) 도 break down 하며 풀어볼 수 있게 되었다. 또, 한 문제를 여러 방식으로 혹은 다른 implementation으로 풀어보며 인터뷰 볼 때처럼 각각의 time complexity, space complexity, pros and cons를 적어가며 풀기 시작했는데, 이렇게 인터뷰할 때와 비슷한 상황으로 연습을 하니 나중엔 머리로 문제를 푸는 시간을 넉넉히 가져도 그 idea를 코드로 적는 시간이 비약적으로 줄어 인터뷰 시간에 구애받지 않게 되었다. 어느 순간 처음 보는 medium, hard 도 하나둘씩 풀리기 시작했다.
이렇게 토픽별로 문제를 계속 풀다 보니 각각의 토픽 관련 문제가 나오면 어떻게 풀어야 할지, 어떤 implementation 이 적기 편한지 반사적으로 떠오르게 되었다. 또한 문제를 처음 읽을 땐 어떤 토픽인지 바로 분간이 가지 않더라도, 문제를 확실히 이해하고 나면 거의 대부분의 question들이 내포하고 있는 타입들이 있었고, 그렇게 문제들을 보는 힘이 길러졌다.
알고리즘 공부를 본격적으로 하려 한다면 토픽별로 공부하기를 추천하고, 아직 마땅한 매뉴얼 혹은 책을 못 찾았다면 Tech Interview Handbook을 추천한다.
잡서칭은 이미 구직을 해본 경험이 있는 분들이라면 다들 꽤 잘하리라 생각이 든다. 나의 개인적인 추천은 다음과 같다.
- LinkedIn으로는 리크루터들과 얘기하거나 어느 회사가 구인중인지 한 번에 보는 용도로 굉장히 유용하게 쓸 수 있다. 하지만 LinkedIn의 지원하기 기능을 통해 지원한 회사 중 연락온 곳은 하나도 없었기 때문에, 일단 회사가 구인중이란 것을 확인하면 그 회사 웹사이트의 careers 페이지에 들어가서 직접 apply 하길 권장한다. 그럼에도 LinkedIn을 통해 리크루터들에게서 연락이 많이 오가기 때문에 write-up 등을 잘 적어두고 Open for new position을 해놓으면 분명 큰 도움이 된다.
- Resume 가 얼마나 큰 영향을 주는지 모르겠지만, 그래도 꼭 주변 지인들 여럿으로부터 레주메리뷰받는 걸 추천한다. 나는 부탁드린 분들이 다 구글러였는데, 같은 회사 개발자들이더라도 각자 생각하는 중요 포인트들이 달라 여러 방향으로 resume에 도움을 받을 수 있었다.
- 미국에는 너무 많은 회사들이 있기에 한 지역만 고수하는 게 아니라면 시간을 두고 LinkedIn 잡 보드를 체크하면 수시로 새로운 포지션들이 보인다. 그런 회사들에 개별지원을 오랜 기간 하다 보면 지칠 수 있는데, 그래서 난 하루를 시작하는 시간에 커피를 마시며 머리를 깨운다는 생각으로 30분에서 1시간 잡서칭 + apply 하고 다른 공부를 시작했다.
많은 기대와 부푼 희망을 가지고 취준생활을 시작했다. 여전히 많은 테크 대규모 레이오프 뉴스가 도배되던 때였고, 그 뉴스의 현실인 실리콘 밸리에 살다 보니 주변 사람들이 레이오프를 당하거나 그 주변사람들의 coworker 레이오프 소식을 한 다리 건너 들으며 구직생활을 해나갔다. 하지만 나의 마음속엔 잘 풀릴 거라는 생각이 지배적이었는데, 파이팅에서 나온 자신감이었을까, 기독교 신앙인의 하나님에 대한 무한 신뢰였을까, 잘은 모르겠다. 모든 인터뷰를 다 부숴버리겠다는 생각으로, 불도저 같은 강인한 마음으로 나아가겠노라 다짐하고 또 다짐하며 하루하루를 나아갔다.
N 형으로 말할 것 같으면 내가 첫 직장을 잡을 수 있게 정신적으로 푸시해주기도 했고, 전혀 모르는 competitive coding 분야에도 노출을 시켜준 고마운 형이다. 군대동기로 10년 전 훈련소에서 만나, 학부 1학년 마치고 computer science 계론 정도 듣고 온 나에게 아무렇게나 놓여있는 신발들을 가리키며 "어떤 정렬 알고리즘을 사용해야 제일 빠르고 효율적으로 신발들을 짝을 맞추며 정렬할 수 있을까?"를 물어보던 "알고리즘 변태" 형이었다. 이후 나는 N형을 과의 대화를 통해 학부 2학년을 마치고 인턴을 무조건 구해야겠다고 마음을 먹었고, 그렇게 한국에서 인턴을 하게 되었는데, 그 인턴쉽은 나의 커리어가 시작됨과 동시에 내 삶의 방향성에 큰 영향을 미쳤으니 N 형은 내 삶에 큰 영향을 끼친 사람인건 확실하다.
대학 막학년, 난 해커톤에 빠져 이 학교 저 학교 다니며 새로운 사람들과 만나 즐거운 창의 개발 시간을 보내기 바빴는데, 기회가 되어 N 형이 재학하던 대학 해커톤에도 참여하러 갔었다 (참고로 해커톤 가면 왕복 transportation 비용, 많은 회사 굿즈들, 일정동안 제공되는 식사, 커피, 디저트, 보바티 등이 다 제공되기 때문에 신나는 일정이었음). 그때 형은 학부졸업을 마치고 석사과정을 밟으며 학교 주변에서 일도 하고 있었는데, 연락이 닿아 해커톤 일정을 마치고 형 집에서 하루 머물기로 했다. 그때 난 취준도 하고 있어서 인터뷰 준비도 간간히 하고 있었는데, 형이 최근에 자신이 재밌게 풀었던 알고리즘 문제를 나도 풀어볼 수 있게 준비해 놓겠다고 하였다. 그렇게 집에 가서 서로 인사를 꺼내자마자 먼저 종이에 적어놓은 문제를 풀어보라며 나에게 1시간을 주고 형은 방으로 들어갔다. 하지만 ICPC 문제들도 즐겨풀던 N형이 주는 문제를 내가 쉽게 풀 수 있을 리가 없었고, 그 모습을 보고 있던 N 형은 나에게 하나하나 설명을 해주다가 내가 이해를 잘 못하는 걸 보곤 결국 문제를 내게 된 취지만 (인터뷰 준비 중이니 도움이 될까 하고 줬다는 ㅎㅎ) 전달해 주고 밥을 먹었던 기억이 있다. 그때 맥주 한잔을 하며 얘기해 준 것이 바로 코딩 인터뷰 준비는 토픽별로 하는 게 효과적이라는 것이었는데, 당시 인터뷰를 준비하는 나에게 팁을 주려고 얘기했던 것임에도 불구하고 난 그 advice를 당시 잘 적용하지 못했다.
여하튼, N형은 나에게 있어 컴퓨터 과학 그 잡채로 다가온 유쾌한 형이다. 앞으로도 자주 뵙고 inspiration을 얻어야지..!