3 (첫) 구직 활동
첫 개발자 일자리를 얻는 방법에 관한 조언 글(그리고 핸드북과 워크숍)은 세상에 넘쳐납니다. 그 내용을 되풀이하고 싶지는 않습니다. 구글에서 검색하기만 해도 그런 자료를 무료로 끝없이 찾을 수 있기 때문입니다. 하지만 이것이 여러분의 첫 여정에서 가장 중요한 부분이라는 사실 또한 외면할 수 없습니다.
제가 여러분이 이 단계를 넘어서도록 돕지 않는다면, 코딩 커리어는 아예 존재하지 않습니다!
그러니 여러분이 흔히 떠도는 조언들은 이미 읽었다고 가정하겠습니다. 제가 할 일은 그 조언들이 말해 주지 않는 것을 알려 드리는 것입니다.
일반적으로 목표(취업하는 것)보다는 시스템(취업하기 위해 하고 있는 일)에 집중해야 합니다. 전자는 여러분이 통제할 수 있지만, 후자는 그렇지 않습니다. 목표에 지나치게 집중하면 개발자 일자리를 하나 얻을 수는 있겠지만, 그것이 여러분에게 맞지 않는 일자리일 수도 있습니다.
3.1 계산해 보십시오
구직은 매우 무작위적이라는 사실을 인정하십시오. 여러분과 평범한 구글 프로그래머 사이의 차이는 생각만큼 크지 않습니다. Steve Yegge가 지적했듯이 대기업 면접에서는 위음성 비율이 매우 높은데, 이는 주로 우리가 면접을 정말 못 보기 때문입니다.
하지만 일자리의 좋은 점은 단 하나만 있으면 된다는 것입니다.
더 많은 곳에 지원할수록 일자리 하나를 얻을 확률은 높아집니다. 당연한 말처럼 들린다는 것을 압니다. 하지만 의욕이 꺾일 때(저도 그런 적이 있습니다. 첫 구직 때는 동기가 생기지 않아 일주일 내내 지원서를 하나도 내지 않았습니다) 이것을 꼭 기억하십시오. 멈추지. 말고. 나아가십시오.
흔히 이를 “숫자 게임”이라고 표현합니다. 하지만 사람들은 지원을 더 많이 하는 것만으로 얼마나 큰 효과가 있는지 정량화하지 않습니다. 이것은 사실 생일 문제를 응용한 형태이며, 여러분에게 매우 유리합니다!
어떤 지원서든 하나당 오퍼를 받을 확률이 4%라고 말씀드린다면, 실망스러울 만큼 낮아 보일 수도 있습니다. 하지만 수학적으로 보면, 이는 이런 지원서 50개를 내면 적어도 하나의 오퍼를 받을 확률이 87%가 된다는 뜻입니다. - Haseeb Qureshi
3.2 직접 해 보십시오
하지만 일주일에 지원서를 50통씩 마구 뿌리는 것도 좋은 방법은 아닙니다. 의욕을 꺾고 영혼을 갉아먹는다는 점은 차치하더라도, 처음 들어온 일자리를 무작정 받아들이는 것은 해로울 수 있습니다. 첫 개발 일자리는 다음 일자리를 위한 전문성과 평판을 쌓는 데 도움이 될 것입니다. 첫 일자리를 싫어하게 되면 다른 커리어 경로로 옮겨 가기가 훨씬 더 어려워질 수 있습니다. 이를 경로 의존성이라고 합니다. 커리어를 전환하려는 중이라면 아마 이미 이 고통을 느껴 보셨을 것입니다.
대신 자신이 좋아하는 것, 자신이 잘할 수 있는 것, 그리고 세상이 가치 있게 여기는 것의 교집합을 찾아보십시오(이왕이면 세상이 그것을 -점점 더- 가치 있게 여기고 있어서 순풍을 등에 업을 수 있는 것이 좋습니다. 이 책의 전략 섹션을 참고하십시오). 이 세 가지에 가장 가깝게 들어맞는 회사를 찾을 때, 채용될 가능성도, 인정받을 가능성도, 자신의 일을 사랑하게 될 가능성도 가장 높습니다.
경험이 없을 때 이 일반적인 조언의 명백한 문제는, 자신이 무엇을 좋아하는지 또는 무엇을 잘하는지 사실 잘 모른다는 것입니다.
그러니: 대화하십시오.
출신 학교나 부트캠프 동문들과 대화하십시오. 친구들과 대화하십시오. 소개를 부탁한 다음, 친구의 친구들과 대화하십시오. 더 많은 소개를 부탁한 다음, 친구의 친구의 친구들과 대화하십시오. 밋업과 커피챗에서 사람들과 대화하십시오. 팟캐스트를 들으십시오(멋진 개발 팟캐스트 목록이 여기 있습니다). Reddit, Slack 커뮤니티, 트위터에서 이야기를 나누십시오.
바로 이것이 네트워킹을 하는 이유입니다. “제가 커피 한 잔 살 테니 추천인으로 넣어 주실 수 있나요?”라는 목적만으로 하는 것이 아닙니다. 오히려 사람들이 실제로 무슨 일을 하는지, 업계와 자기 회사를 어떻게 생각하는지, 그리고 코딩 커리어 계층의 어디에 내가 들어맞을 수 있는지를 진심으로 알아내고 싶은 것입니다. 사람들은 자기 이야기를 하는 것을 좋아합니다. 일자리나 추천을 부탁하지 마십시오(상대가 먼저 꺼내지 않는 한). 진심으로 궁금해한다면 상대가 스스로 그 이야기를 꺼낼 것이고, 그것은 상대의 생각이 될 것입니다.
목표는 지원할 회사의 수를 줄이되, 사전 조사를 충분히 했기 때문에 각 회사마다 정말 끝내주게 좋은 이유를 갖추는 것입니다. 이렇게 하면 “왜 이 일을 하고 싶습니까?”라는 질문을 받았을 때 대답할 이유가 있습니다. (과거에는 이 질문에 대한 좋은 답이 없어서 대선 캠페인이 끝장난 적도 있습니다!) 자기소개서를 써야 할 때도 억지로 짜낼 필요 없이 말이 자연스럽게 흘러나옵니다. 면접관(이자 미래의 상사)을 직접 만났을 때 관심 있는 척할 필요가 없습니다.
제 개인적인 수치를 말씀드리자면, 저는 첫 구직 활동에서 아홉 곳의 회사에만 지원했고, 그중 세 곳에서 최종 면접까지 갔으며, 두 곳에서 제안을 받았고, 그중 가장 높은 제안을 수락했습니다. 다른 사람들은 200번에서 300번까지 지원하기도 했습니다! 하지만 사람마다 사정이 다르므로, 어떤 전략이 자신에게 맞는지는 여러분이 직접 결정하셔야 합니다.
3.3 구직하는 동안 동기 유지하기
동기를 잃었을 때도 계속 동기를 유지할 수 있도록 사회적 압력을 활용하십시오. 소수의 친구들과 함께 매주 스탠드업을 하십시오. 돌아가면서 그 주에 무엇을 했고 어떤 결과를 얻었는지, 그리고 다음 주 계획은 무엇인지 말하십시오. 인간은 사회적 동물입니다. 좋아하는 사람들에게 앞으로 할 일을 말함으로써, 하겠다고 말한 것을 지키려는 본능을 활용하십시오. 그들도 같은 시기에 같은 일을 겪고 있다면 더욱 좋습니다.
사람들이 어떻게 테크 업계에 발을 들였는지를 다룬 팟캐스트 인터뷰를 들으면 큰 동기부여를 얻을 수 있습니다. 지금 여러분이 겪고 있는 일을 똑같이 겪고 있는 사람이 수천 명이나 된다는 사실을 깨닫게 해 줍니다. 저는 이 여정을 거치는 동안 CodeNewbie, FreeCodeCamp, Breaking Into Startups 팟캐스트의 지난 에피소드들에서 특히 큰 도움을 받았습니다.
시간 배분은 중요합니다. 구직 기간의 100%를 말 그대로 일자리를 찾는 데만 쓸 필요는 없습니다. 저에게 효과가 있었던 방법을 간단히 정리하면 다음과 같습니다:
- 알고리즘 연습 2~3시간(채용 심사에서 알고리즘 문제가 사라지는 추세라고 볼 수도 있지만, 일부 회사에서는 여전히 통과 의례이며, 기본기를 다져 두지 않았다는 이유만으로 좋은 기회를 놓치고 싶지는 않을 것입니다)
- 1~2시간의 채용 기회 탐색 및 이메일 보내기. 채용 기회를 찾는 주요 경로는 두 가지입니다. 구인 게시판에서 무언가를 찾거나, 개인적·사회적 인맥을 통해 기회에 대해 듣는 것입니다. Hacker News부터 CodePen, StackOverflow에 이르기까지 많은 사이트에 구인 게시판이 있습니다. 과소대표된 소수자에 속한다면 POCIT Jobs, Include.io, Wallbreakers, Ada’s List, Hire Tech Ladies, Diversify Tech Co, YSYS, Tech Talent Charter 같은 전용 구인 게시판도 잊지 마십시오. 모든 것을 Asana나 Trello 같은 트래커에 기록하십시오. 여러 일을 계속 동시에 챙기십시오. 마감일을 자신의 기억에만 의존하지 마십시오. 마감일을 추적하고 알림을 설정하십시오.
- 2~3시간의 체계적인 학습 - 예를 들어 동영상 강의를 수강하거나 기술 서적을 처음부터 끝까지 읽습니다.
- 나머지 시간: 사이드 프로젝트를 만드십시오. 적당한 마감 기한(1주 또는 1개월)을 정한 다음, 그 기한까지 최선을 다해 아이디어를 만들어 보십시오. 완벽하게 만들고 싶은 충동을 참으십시오. 일단 출시하고, 그다음에 피드백을 받으십시오. 재미있는 것이든, 탐구용이든, 클론이든 만들어 보십시오(오픈 소스 앱 클론하기가 왜 훌륭한 학습 방법인지는 장 10를 참고하십시오). 아직도 무엇을 만들어야 할지 모르시겠습니까? JavaScript 30이나 Just-Build-Websites를 시도해 보십시오. 사이드 프로젝트에 대해서는 장 37에서 더 자세히 다룹니다.
- 선택 사항으로, 가르치십시오. Twitch에서 자신을 라이브 스트리밍하거나 밋업에서 발표를 해 보십시오. 특히 코딩하면서 말하는 연습을 해 보십시오. 이는 기술 면접을 위한 훌륭한 연습이 됩니다.
3.4 면접 기회 얻기
리크루터. 채용 대행사는 수준 차이가 매우 크며, 얼마나 쓸모 있는지도 지역마다 다릅니다. 여러분은 그들에게 하나의 상품이라는 점을 명심하십시오. 그들의 비즈니스 모델은 그중 한 명이라도 붙기를 바라며 고객이 받아들일 수 있는 한 최대한 많은 쓸 만한 인력을 고객에게 쏟아붓는 것입니다. 리크루터가 고용주와 후보자를 발굴하는 특별 계약을 맺고 있다면 좋은 일일 수도 있지만, 여러분을 소재로 삼아 무작정 영업을 하는 리크루터를 만나는 경우가 많습니다. 어떤 지역에서는 기술 분야 리크루터를 통해 첫 직장을 구하는 것이 일반적입니다. 반면 다른 지역에서는 리크루터가 완전한 시간 낭비입니다. 주변에 물어보며 여러분이 있는 지역의 기술 업계가 어떻게 돌아가는지 파악하십시오.
개인 사이트. 반드시 하나 갖추십시오. 자신이 해낸 훌륭한 작업을 담은 개인 사이트를 갖는 것은 24시간 내내 커리어 기회를 찾아 주는 개인 에이전트를 두는 것과 같습니다. 일이 많아 보인다면: 온갖 화려한 기능을 갖춘 포트폴리오 페이지까지는 필요 없습니다. 초록색으로 빼곡한 커밋 기록도 필요 없습니다. 사람들은 그런 것을 거의 보지 않습니다. 그럴 시간이 없습니다. 여러분이 멋진 일을 해냈다는 것, 그리고 선택적으로 기본기를 갖추었다는 것만 보여 주면 됩니다. 여러분의 작업이 본질적으로 시각적인 성격이 덜하다면, 활발한 블로그를 운영하기만 하면 됩니다. 핵심은 즉시 검증할 수 있는 작업의 증거입니다. 채용 담당자가 관심을 두는 분야의 훌륭한 에세이나 데모는 여러분이 내밀 수 있는 그 어떤 이력서보다 훨씬 유용하고 설득력이 있습니다. (자세한 내용은 자신을 마케팅하기, 장 39를 참고하십시오.) 한 가지 예외가 있습니다. 디자인/UX 직무는 훌륭한 포트폴리오가 큰 도움이 됩니다.
자신의 기여가 걱정되는 분들께… 아무도 신경 쓰지 않습니다! 단 3개의 기여만으로도 대부분의 채용 담당자에게 깊은 인상을 남길 수 있습니다: 1) 단순하지만 흠잡을 데 없이 만든 것. 진심입니다. 클래스 하나나 js 파일 하나 같은 것입니다. 2) 완결된 것. 작은 앱 / 사이트 / 라이브러리입니다. 테스트도 갖추십시오. 문서도 갖추십시오. 3) 이야기가 담긴 것(제가 가장 좋아하는 것입니다!) 코드 한 줄이어도 됩니다. - Mekka Okereke
이력서. 이력서에 적은 내용이라면 무엇이든 잘 설명할 수 있어야 하므로, 이력서에 적힌 모든 것이 사실인지 반드시 확인하십시오. 이력서는 한 페이지로 유지하고, 아이디어가 필요하면 이 템플릿을 참고하십시오. Canva 이력서 템플릿을 활용해 시각적으로 눈길을 끄는 이력서를 만드십시오. 무슨 이유에서인지 면접관들은 이력서를 출력해 면접장에 가져온 뒤, 평범한 사람처럼 여러분과 대화하는 대신 이력서만 뚫어지게 쳐다보는 경우가 많습니다. 전하고 싶은 이야기에 맞춰 서로 다른 버전의 이력서를 2~3개 준비해 두십시오. 콜드 이메일 초안이나 자기소개 글, 자기소개서도 마찬가지입니다. 현대 인터넷 광고에서 배우십시오. 타기팅은 많을수록 언제나 좋습니다. 마지막으로, 솔직한 친구나 채용 담당자(모르는 사이라도 DM이나 이메일을 보내십시오. 꼭 하십시오), 또는 ZipJob 같은 무료 서비스에 이력서 검토를 받아야 합니다.
자기소개서. 자기소개서는 지원자가 해당 직무가 무엇인지 알고 있으며, 시간을 들여 자신을 어필하는 내용을 맞춤화했다는 것을 보여 줍니다. 좋은 자기소개서는 검토자가 자세를 고쳐 앉고 주목하게 만듭니다. 때로는 창의적인 방법이 필요하기도 합니다. 자기소개서는 여러 구성 요소로 나눌 수 있습니다:
- 서로 다른 세 가지 형태의 자기소개를 작성하십시오
- 채용 공고의 각 항목에 직접 대응하는 본문 중간 부분을 작성하십시오
- 상투적인 맺음말을 몇 가지 작성해 두십시오
- 회사마다 이것저것 섞고 맞춰 보면서, 해당 직무에 맞게 어조를 조절하고 직무와 관련된 경력을 골라 넣으십시오.
맞춤형 자기소개서를 너무 많이 쓰고 있다면, 그물을 너무 넓게 던지고 있으며 자신이 무엇을 원하는지 잘 모르고 있을 수 있다는 신호입니다. (게다가 매우 지치는 일이기도 합니다!)
업계 자격증. 취득하기 어려운 자격증일수록 더 가치가 있습니다. Kelsey Hightower는 보통 2~3개월의 공부/경험이 필요한 CompTIA A+ 자격증을 자신의 큰 전환점으로 꼽습니다. Cisco의 CCNA는 한 달이 걸리며 시스템 관리자/네트워크 엔지니어에게 잘 알려진 자격증입니다. 사이버 보안 분야에는 CompTIA, EC-Council, GSEC의 동급 자격증이 있습니다. AWS Cloud Practitioner 자격증은 최대 두 달이 걸리지만, 이것만으로도 사람들이 여러분을 추천하기에 충분합니다. 자격증은 헌신을 보여 주며, 대화의 소재이자 서로 이해하는 지식 기반이 됩니다. 프런트엔드 개발에는 이에 상응하는 자격증이 없다는 점에 유의하십시오.
네트워킹. 부끄러워하지 마십시오. 여러분이 구직 중이라는 사실을 모두가 알아야 합니다! 친구들은 친구가 일자리를 구하도록 돕는 것을 정말 좋아합니다! 술값을 여러분이 낸다면 더욱 그렇습니다. 밋업과 콘퍼런스에 가십시오. 추천해 줄 수 있는 사람을 만날 수도 있고, 심지어 여러분 같은 사람을 찾으려고 일부러 이런 행사에 오는 채용 담당자를 만날 수도 있습니다! 구직 중이라는 사실을 개인 사이트, LinkedIn, 트위터 소개란에 적어 두십시오. 특히 트위터에서는 사람들이 아주 적극적으로 도와주며, 저는 주니어 개발자들이 단 하나의 “구직 중입니다! 제가 하는 일은 이렇습니다!“라는 트윗 하나로 일자리를 얻는 것을 본 적이 있습니다. 이미 효과가 검증된 방식을 활용하고, 트윗 한 편 분량으로 자신을 잘 소개하는 문구를 마련해 두십시오. 영감을 얻으려면 이런 스레드를 참고하십시오. 소셜 미디어는 내향적인 사람에게 아주 좋을 수 있습니다. 구직을 시작하는 데 얼굴을 마주하고 실시간으로 대화하는 데 의존할 필요가 없기 때문입니다.
첫 직장을 구할 때 저는 두 곳에 지원했고, 한 곳에서 제안을 받았습니다. 제안을 받은 곳의 경우, 친구가 CEO에게 직접 저를 추천해 주었고 트위터를 통해 여러 직원과도 인연이 있었으며, 저는 그 회사만을 위해 맞춤 웹사이트를 만들고 스케이트보드를 타는 기니피그 영상도 만들었습니다. 그 덕분에 눈에 띌 수 있었고 면접 대상자 명단의 맨 위에 오를 수 있었습니다. - Jeff Escalante
모의 면접. 친구 몇 명(또는 전문가)에게 모의 면접을 몇 번 진행해 달라고 부탁하는 것만으로도 긴장을 상당히 덜 수 있습니다. 모의 면접을 코칭해 주는 영상이나 팟캐스트를 찾아볼 수도 있습니다. 면접관은 여러분이 정답을 찾아낼 수 있는지만 평가하는 것이 아니라, 의사소통 능력, 배우려는 열의, 문제 해결 과정도 함께 본다는 점을 기억하십시오. 일부 채용 담당자는 매우 개방적이어서, 그들이 직접 쓴 트윗이나 미디어 출연을 바탕으로 그들이 즐겨 묻는 질문의 유형을 알아낼 수도 있습니다. 그런 질문을 조사하고 답변하는 연습을 하십시오.
3.5 면접의 종류
시스템 설계 면접. 주니어 단계에서는 이런 면접을 많이 보지 않으며, 프런트엔드 직무라면 더욱 그렇습니다. 하지만 그래도 HiredInTech의 가이드와 High Scalability의 인기 글을 읽어 보고 시스템 설계 저장소를 살펴보는 것은 충분히 보람 있는 일입니다. 이 정보가 실제로 필요해지는 때는 시니어 수준에 이르렀을 때일 가능성이 더 높습니다.
알고리즘. 알고리즘의 신이 될 필요는 없지만 기본은 알아야 합니다. Gayle McDowell의 Cracking the Coding Interview나 Emma Bostian의 De-Coding the Technical Interview Process(기술 면접 과정 해독하기)에 나오는 핵심 개념을 어느 정도 알고, 정렬 알고리즘의 빅 오(Big O)를 외우고 유도할 수 있어야 합니다. Google의 기술 면접조차 코딩 시간은 최대 45분입니다. 이는 자가 균형 레드-블랙 트리를 작성하기에는 부족한 시간이고, 힙 정렬을 처음부터 구현하기에도 겨우 충분한 시간입니다. 기본만 알면 됩니다. Byte by Byte의 50가지 질문 목록을 보면 알고리즘 문제의 난이도가 어느 정도인지 가늠할 수 있습니다. Leetcode나 Algoexpert 같은 유료 사이트가 연습에 도움이 될 수 있습니다.
“프로 팁: 면접관은 대체로 여러분이 성공하기를 바라기 때문에 힌트를 주는 경우가 많습니다. 그 힌트를 활용하십시오. 코딩 면접 중에 어떤 통찰을 떠올리지 못했다고 해서 항상 결정적인 탈락 사유가 되는 것은 아닙니다. 하지만 의도적으로 준 힌트를 무시하거나 의사소통 능력이 부족하면 대개 탈락 사유가 됩니다.” - Dan Abramov
알고리즘 면접은 “로우 레벨”이나 “시스템” 프로그래밍을 하는 사람에게 가장 잘 맞습니다. 특히 데이터 엔지니어링과 게임 개발은 그래프 알고리즘에 크게 집중하는 반면, 운영 체제와 프레임워크 개발자는 자료 구조와 동적 프로그래밍에 더 익숙해야 할 수 있습니다. 하지만 코딩 커리어 계층에서 위로 올라갈수록 CPU나 메모리의 제약을 덜 받기 때문에 알고리즘 면접은 덜 중요해집니다. 대부분의 앱 개발자에게 알고리즘 면접이 실제 업무 환경과 맞지 않는다는 사실은 잘 알려져 있습니다. 그래서 기술 면접은 다른 형태의 기술 지식을 평가하는 방향으로 크게 넓어졌습니다.
기술 면접. 이제는 기술 면접이 코드 역량보다는 압박 속에서 실력을 발휘하는 능력을 시험한다는 사실이 잘 알려져 있지만, 그래도 기술 면접은 어차피 거쳐야 하는 통과 의례입니다. 이 주제는 다른 저자들이 이미 충분히 다루었고 분야에 따라 크게 달라지므로 이 책의 범위를 벗어나지만, Mega Interview Guide와 Coding Interview University는 꼭 살펴보십시오. 다만 “작동하게 만들고, 올바르게 만들고, 빠르게 만들라”라는 일반적인 격언은 여기에도 적용됩니다.
문제를 풀어 나가는 동안 자신의 사고 과정을 설명하는 것이 중요합니다. 활용할 수 있는 상세한 프레임워크로는 REACTO 모델이 있습니다.
- 질문을 반복(Repeat)하십시오
- 예시를 떠올리십시오
- 접근 방식을 개략적으로 설명하십시오
- 해결책을 코드로 작성하십시오
- 코드를 테스트하십시오(화이트보드에서라면 직접 손으로 한 줄씩 따라가 보십시오)
- 그다음에야, 오직 그때에만 최적화하십시오.
코드를 실행할 수 있는 환경이 갖춰져 있다면, 코드에 테스트 주도 개발을 적용하는 것도 좋은 방법일 수 있습니다(테스트 단계와 코딩 단계의 순서를 뒤바꾸는 것입니다). 저는 문제를 이해하려는 과정에서 TDD를 택했다는 바로 그 이유로 오퍼를 받은 적이 있습니다(의식적으로 내린 결정은 아니었습니다!).
블라인드 면접. 면접에서는 무의식적인 편견이 많이 작용합니다. 이는 불공평한 현실입니다. 외모나 정체성, 또는 면접관이 자신의 편견을 어떻게 보정하는지는 여러분이 어찌할 수 없는 부분이지만, 그러한 부당함을 줄이는 데 도움이 되는 블라인드 면접이 있다는 사실은 알아 두십시오. Interviewing.io, Byteboard, Pramp에서는 익명으로 모의 면접을 볼 수 있을 뿐 아니라 그곳을 통해 실제로 채용될 수도 있습니다.
과제형 프로젝트(Take-Home Projects). 이것은 일종의 “강화된 기술 면접”이라고 생각하셔도 됩니다. 신입 개발자에게는 아주 좋은 방식입니다. 저는 과제형 프로젝트를 성공적으로 해낸 덕분에 두 번이나 채용 제안을 받았습니다. 과제를 어떻게 완성할지에 대해서는 자유도가 매우 높습니다.
- 실패할 위험을 감수하고, 지저분해질 위험이 있더라도 전력을 다해 실제 프로젝트에서 여러분이 어떻게 일하는지 보여주는 방식을 선택할 수 있습니다(확장을 고려한 아키텍처 설계는 물론, 요구받지는 않았지만 실제 업무에서라면 했을 다른 세세한 부분까지 포함해서 말입니다).
- 아니면 필수 사용자 스토리를 모두 충족할 뿐 그 이상은 하지 않는, 최소한의 아주 깔끔한 프로젝트를 만들고, 문서화와 테스트를 극도로 잘해 두는 방법도 있습니다.
어느 쪽을 택할지는 회사가 실제로 여러분에게 무엇을 맡기려고 채용하는지에 달려 있습니다. 저는 대개 위험한 쪽을 택하는데, 제가 찾는 일자리에 그쪽이 잘 맞기 때문입니다. 과제형 프로젝트(Take-Home Project)는 보통 4시간에서 2일 정도 걸린다는 점에 유의하십시오. 그보다 오래 걸린다면 회사가 여러분에게 보수를 지급해야 합니다.
과하다 싶을 만큼 소통하십시오. 코드에 주석을 아낌없이 달고, 전반적으로 소통을 잘한다는 것을 보여 줄 방법을 찾으십시오. 제가 했던 과제형 프로젝트 중 하나에서는 회사가 제 작업에 관해 이야기할 Slack 채널을 만들어 주었는데, 저는 프로젝트를 진행하면서 그 채널에 진행 상황을 끊임없이 올려 도배하다시피 했습니다. 회사는 그렇게 저와 소통하는 것을 무척 좋아했고, 결국 저에게 합격 제안을 주었습니다.
비기술/핏 면접. 일찍 도착하십시오. 여러분이 아는 사람 중 가장 자신감 넘치는 사람을 떠올리고, 이 면접에서만큼은 그 사람이 되어 보십시오. 여러분은 무대 위에 서 있습니다. 여러분은 단지 어떤 역할에 지원하여 면접을 보는 것이 아니라, 그 역할을 연기하는 것입니다. 미소를 지으십시오. 눈을 맞추십시오. 인간관계론(How to Win Friends and Influence People)에 나오는 모든 조언이 여기서 통합니다. 자기소개는 1분 이내로 미리 연습해 두십시오. 면접관에 대해 미리 조사해 보십시오. 면접관이 말하게 하십시오(대부분의 사람은 자기 이야기를 하는 것을 좋아하며, 말을 많이 할수록 여러분을 더 좋아하게 됩니다).
역면접. 질문이 있느냐고 물어보면 질문을 하십시오. 이를 “역면접”이라고 합니다. 가장 유명한 것은 조엘 테스트였는데, 오늘날에는 조금 낡았습니다. 대신 역면접 질문 대모음이나 Charity Majors의 문화 질문 목록을 고려해 볼 수 있습니다. 회사 문화에 관한 좋은 질문을 하면 좋은 인상을 줄 수 있을 뿐 아니라(그 일에 진지하게 임하고 있으며, 좋은 질문을 할 줄도 안다는 것을 보여 줍니다) 최종 결정을 내리는 데에도 도움이 됩니다. 그러니 이런 질문을 미리 준비해 두는 것이 좋습니다! 특히 매니저에게는 통찰력 있는 질문을 하십시오. 매니저는 여러분의 일상 업무 경험을 가장 크게 좌우할 사람이기 때문입니다.
- “엔지니어링 매니저의 업무는 무엇이라고 생각하십니까?”
- “매니저가 되고 싶다고 결심하신 계기는 무엇입니까?”
- “다른 엔지니어링 매니저들이 하는 일 중에서 거슬렸던 것은 무엇입니까?”
- “지금까지 겪은 가장 큰 커리어상의 좌절에 대해 말씀해 주십시오.”
- “누군가를 내보내야 했던 적이 있습니까? 그 퇴사 과정을 어떻게 처리했는지 말씀해 주십시오.”
- “가장 크게 성장한 멘티에 대해 자세히 말씀해 주십시오. 그 멘티의 처음 상황은 어떠했는지, 어디까지 성장할 수 있었는지, 그리고 그 과정에서 그 멘티를 돕기 위해 구체적으로 어떤 행동을 취했는지 말씀해 주십시오.”
- “다양성과 포용성 측면에서 의미 있는 변화를 이끌어 내기 위해 무엇을 하셨습니까? 그것은 어떤 영향을 미쳤습니까?”
- “문화적 문제로 놀랐던 경험, 그리고 그 문제를 어떻게 파악하고 개선했는지 말씀해 주십시오.”
- “슬럼프에 빠진 엔지니어가 다시 의욕을 되찾도록 동기를 부여했던 경험을 설명해 주십시오.”
- “스프린트에서 사람들이 몇 개의 스토리 포인트를 완료하는지 모르는 상태에서도 사람들을 관리할 수 있습니까?”
- 1:1 면담 역할극 및 두 엔지니어 간 분쟁 중재
- 채용 담당자에게 던질 수 있는 훨씬 더 불편한 질문은 여기에 있습니다
스킵 레벨 매니저나 VP와 면접을 볼 때는 엔지니어링 리더십에 관한 질문 목록을 준비해 두면 그들의 생각을 파악하는 데 도움이 됩니다.
“제가 어떻게 도울 수 있는지 저를 설득해 보십시오. 그러면 거의 아무도 들어가지 못하는 특별한 최종 후보 명단에 오르게 됩니다.” - Daniel Vassallo
3.6 면접 밖에서
계약직 일자리. 정규직 일자리를 구하기를 기다리는 동안, 계약직 일을 맡아 돈을 받으며 코딩 경험을 쌓을 수도 있습니다. 많은 사람이 친구나 친척을 위한 프로젝트로 첫발을 내디뎠습니다. 이모를 위한 사이트 하나, 동네 카페를 위한 앱 하나처럼 말입니다. 이 모든 것이 이력서에 쓸 수 있는 관련 경력이 됩니다. Upwork나 Toptal처럼 단기 일자리를 연결해 주는 사이트도 있지만, 경력이 짧은 프로그래머라면 일을 따내기가 더 어려울 수 있습니다.
견습 프로그램. 잘 알려진 기업 중 일부는 비전통적 배경을 가진 사람들을 위한 프로그램을 포함하여 인턴십과 견습 프로그램을 적극적으로 운영합니다. Treehouse는 Airbnb나 Nike 같은 유명 기업과 함께 견습 프로그램을 제공합니다. 캐나다에서 대학 입학 자격이 있다면 Shopify의 Dev Degree 프로그램에 지원하십시오. Major League Hacking은 GitHub, AWS, Facebook 등과 함께 펠로십을 운영합니다. 많은 사람이 1년 동안 Fast.ai 과정을 밟은 후 1년짜리 Google Brain 펠로십을 따냈습니다. 기술 업계에서 과소대표된 집단이라면 Outreachy, CodePlatoon, Code2040 같은 단체가 직접적으로 도움을 줄 수 있습니다. 인도인에게는 Internshala가 있습니다.
오픈 소스. 오픈 소스에 참여하는 문턱은 같은 오픈 소스에 의존하는 회사에 채용되는 것에 비하면 우스울 정도로 낮습니다. “오픈 소스 채용”은 대체로 누가 꾸준히 모습을 드러내느냐의 문제일 뿐입니다. 몇 달간 성실하게 기여하면 생태계의 핵심 프로젝트 메인테이너가 되는 것도 꽤 쉽습니다. 그러면 이는 해당 프로젝트를 사용하는 모든 회사에서 인상적인 이력서 항목이 됩니다.
“저희가 사용하는 오픈 소스에 의미 있는 기여를 하면 = 즉시 면접입니다! 물론 그것만이 가치를 보여 주는 유일한 방법은 아니지만, 저희 기술에 대한 적성, 다른 사람들과 소통하고 잘 협업하는 능력, 그리고 오픈 소스에 대한 애정을 보여 줄 수 있는 훌륭한 방법 중 하나입니다!” - Josh Goldberg
일단 발을 들여놓으십시오: 온갖 시도를 다 해 보았는데도 여전히 아무 진전이 없다면, 코딩 외에도 여러분이 내세울 수 있는 다른 역량이 있다는 사실을 기억하십시오. 1년 동안 이력서를 보내며 문전박대를 당하는 것보다, 1년 동안 기술과 인접한 비기술 직무에서 일한 다음 사내 이동을 통해 기술 직무로 옮기는 편이 훨씬 낫습니다. 많은 회사가 고객 지원, 문서화, 프로젝트 매니저, 영업 지원 직무에 똑똑하고 의욕 있으며 기술을 이해하는 사람을 채용하고 싶어 합니다. Digital Project Masters, Write the Docs, Support Drive 같은 단체에서 답을 찾아보십시오. 경고: 이런 직무에 손쉽게 들어갈 수 있으리라 기대하라는 말은 아닙니다. 이들은 전문 직무이며, 이 일을 하는 숙련된 전문가들과 경쟁해야 합니다. 하지만 여러분의 코딩 능력은 이런 직무를 얻는 데 분명 플러스 요인이 될 것입니다.
일단 들어가고 나면, 여러분이 틈틈이 코딩을 조금 더 하는 것에 반대할 사람은 아무도 없습니다. 손댈 이슈는 언제나 있고, 개선할 여지가 있는 내부 도구도 언제나 있기 때문입니다. 훌륭한 회사라면 여러분의 교육에 비용을 들이는 것의 가치까지 알아볼 것입니다. 순전히 의지의 힘만으로도 전문 개발자가 될 수 있습니다.
기술 업계 밖에서도 이러한 높은 주체성(High Agency)의 사례를 많이 찾아볼 수 있습니다:
- 시드니 와인버그(Sidney Weinberg)는 골드만삭스에서 청소부의 조수로 일을 시작했다가, 트레이더가 될 기회를 얻었고 마침내 CEO 자리에까지 올랐습니다.
- 헬렌 걸리 브라운은 광고 대행사의 비서로 시작했지만, 글쓰기 실력 덕분에 Cosmopolitan의 편집장 자리에까지 올랐습니다.
- 사이먼 코웰은 아메리칸 아이돌의 얼굴이 되기 전에 EMI 레코드의 말 그대로 우편실에서 일을 시작했습니다.
그들 모두 어딘가에서 시작했습니다. 여러분도 마찬가지입니다. 정문으로 들여보내 주지 않는다면 뒷문으로 돌아가십시오.
제안이 들어오기 시작했다면 거의 다 왔습니다! 제 생각에 이 단계에서 협상은 그리 중요하지 않습니다. 지금 여러분은 단기적으로 가장 많은 돈을 받는 것이 아니라 여러분을 가장 크게 성장시켜 줄 고용주를 고르는 데 최적화하려는 것입니다. 큰돈은 나중에 벌어도 됩니다. 전례가 없는 일은 아니지만, 첫 직장에서 여러분을 두고 회사들끼리 경쟁 입찰을 벌이게 만들기는 어려울 것입니다. 다만 자신의 가치를 제대로 알고 최소한 시장 수준의 보수는 받도록 하십시오(장 31의 Negotiation 참고). 그리고 합리적인 범위 안에서 정말 필요한 것은 주저하지 말고 요구하십시오.