직접 기업을 경영하고, 인재를 채용하는 입장이 되어서 다시 읽어보니 느낌이 새록새록 하다. 

특히 요새처럼 좋은 개발자를 모시는 것이 기업의 가장 큰 화두인 상황에서, 어떻게 하면 좋은 개발자를 채용할 수 있는지에 대한 저자의 직관을 살펴볼 수 있는 좋은 책이다. 

 

좋은 개발자를 채용하기 위해서는 뛰어난 개발자의 가치를 인정해야 한다. 

스타 개발자인 S급 개발자는 평범한 B 급 개발자보다 100 배 이상의 생산성을 갖고 있다. 하지만 S 급 개발자를 채용하기 위해 들어가는 비용은 B 급 개발자의 몇배 정도이면 된다. 더 중요한 문제는, S 급 개발자가 구현할 수 있는 핵심 알고리즘과 기능을 B 급 개발자는 절대 구현하지 못한다는 것이다. 책에서는 모차르트와 살리에리의 비유를 통해, 천재급 개발자의 필요성을 역설했다. 

그렇다고 S 급 개발자 소수만으로 운영하는 팀이 성공할 수 있느냐, 그건 아니다. 왜냐하면 개발팀이란 것은 살아있는 생물처럼 유기적인 것이라서, 평범한 기능들을 구현하기 위한 보통 개발자들의 역활도 필요하고, 이런 보통 개발자들이 자기 역활을 잘 수행하면서 전체 개발팀이 잘 운영되는 것이 팀의 퍼포먼스에 중요하다는 것도 지적하고 있다. 저자가 말하듯이 맨먼스란 매우 신비로운 것으로, 단편적으로 말할 수 없다! 

 

좋은 개발자를 채용하려면 어떻게 해야 하나?

- 고급 개발자들이 모이는 커뮤니티, 전시회 등에서 고급 개발자들을 만날 확률이 높다.

- 인턴쉽 제도를 적극 활용한다. 포텐셜이 높은 학생 개발자가 자기 몸값을 깨닫기 전에 입도선매한다.

특히 인턴쉽 제도에 대해 저자는 크게 찬양한다. 인턴쉽 학생에게 강렬한 복지제도와 지원책을 제시하고, 설사 학생이 채용되지 않더라도 입소문을 통해 주변의 다른 뛰어난 학생들이 관심을 가질 수 있게 만든다는 것이다. 

조엘이 운영하는 포그크릭에서는 전국 200개 대학에 자필 서명이 된 채용공고를 보내고, 서류심사를 통과하고 면접을 위해 방문하는 학생을 위해 리무진 차량 제공, 호텔 숙박을 제공하고, 원할 경우 뉴욕 체류 2일간의 체재비를 추가로 제공한다. 또한 12주의 인턴쉽 기간동안에는 실제 상용제품 개발에 참여하게 하고, 좋은 성과를 거두었다고 한다. 

 

좋은 개발자들을 회사에 붙잡아 두기 위한 조건 

채용한 뛰어난 개발자들을 계속 회사에 만족감을 가지면서 근무하게 만드는 방법으로 아래와 같은 것들을 제시했다. 한줄로 요약하면 연봉 뿐만 아니라, 인프라/ 사내문화 측면에서 개발자들을 위한 투자를 아끼지 말아야 한다는 것이다. 

- 팀원 개개인에게 지급되는 개인 사무실 

- 최고급 개발 장비와 좋은 사무기기와 의자 

- 조직 내에서 개발자들을 최고 전문가로 대접하는 문화 

- 사내 정치의 배제. 기술적 당위성을 의사결정이 우선 순위로 삼는다 

- 멋지지만 불필요한 최신 기술을 프로젝트에 도입하게 해라 

 

좋은 이력서를 분류하는 방법 

- 지원자의 개발에 대한 열정 

어린 시절부터 독학으로 공부를 시작했거나, 최신 언어를 습득했다는 내용 등은 지원자가 프로그래밍을 정말 좋아한다는 증거가 될 수 있다. 

- 높은 지적능력.

학점이 좋거나, 체스를 잘 두거나, ACM-ICPC 대회 출전 경험이 있는 지 등은 좋은 지표가 된다. 

- 과거 합격 경력.

무언가 엄격한 관문을 뚫고 성취를 이룬 경험이 있는 지원자는 매우 스마트한 인재일 가능성이 있다. 뛰어난 명문대 합격 경력 뿐만 아니라, 입사 절차가 까다로운 기업의 인턴쉽을 했다거나, 엄선된 사람만 선발되는 군사과정이나 해병대 양성과정을 거쳤든지 하는 것은 좋은 징조이다. 

- 집착력

개발자가 항상 최신 기술을 습득하는 것은 힘든 일이므로, 개발자들은 자신의 전문 분야나 주력 언어를 갖고 있는 경우가 흔하다. 전문 분야에 얼마나 깊이있는 실력을 갖추고 있는지를 이력서를 통해 판단해 볼 수 있다. 

 

개발자를 구인할 때 주의할 점 

- 특정 기술분야의 전문가를 찾지 말라

뛰어난 개발자는 새로운 기술에 대한 습득력도 좋다. 또한 기술은 유행을 타기 마련이라 당장 필요한 기술 스택이 향후에는 필요 없어질 수도 있다. 기술 키워드로 인재를 구하는 것은 이 방법인 손쉬운 방법이기 때문이나, 뛰어난 개발자를 구하기 위한 좋은 방법은 아니다. 자질이 뛰어난 개발자는 새로운 기술을 습득하는 것이 어려운 일이 아니다. 

 - 면접에서는 동일한 질문을 여러 지원자에게 해본다. 

같은 질문을 함으로써 동일 선상에서 지원자들의 수준을 비교해 볼 수 있다. 

- 과거에 참여한 프로젝트에서 어떤 역활을 맡았고, 어떤 난관을 극복했는지 집요하게 물어본다 

- 전화 인터뷰에서 묻는 기술 질문은 간단하면서도 구두로 설명 가능한 주제가 좋다. 

 

면접에서의 일반적인 방법론

면접에서는 대개 아래 순서대로 진행한다. 

1. 첫 인사 

2. 최근에 수행한 프로젝트에 대한 질문

3. 프로그래밍에 대한 쉬운 질문

4. 포인터/재귀에 대한 질문

5. 본인이 작성한 코드에 만족합니까

6. 지원자에게 질문을 받음. 회사에 대한 질문

면접 과정에서 우리가 찾아야 하는 지원자는, 똑똑하고 (Smart), 주어진 일을 완벽하게 처리할 수 있어야 한다 (Get Things Done). 똑똑하지 않으면 다른 직원이 그 사람의 일을 뒤치닥거리 해야 할 것이고, 똑똑해도 일 처리를 마무리하지 못해서 일이 끝나지 않는 경우도 많기 때문이다. 

면접 과정에서 지원자의 열정을 찾아야 하고, 지원자가 과거에 맡았던 프로젝트에서 어느 정도의 리더쉽을 발휘하면서 과제를 맡았는지도 확인해야 한다. 그리고 지원자가 똑똑한지를 알아보아야 한다. 똑똑한 지원자는 같은 질문을 반복학 하지 않고, 상대방의 지적 수준에 맞추어 이야기를 한다. 그리고 똑똑한 지원자는 면접관의 질문 수준을 관찰한다는 사실도 알고 있어야 한다. 

 

부록 - 조엘 테스트 

조엘이 소프트웨어 관리 조직에서 운영해야 하는 12개 지침으로, 11점 까지는 양호하다고 판단하나 대부분의 소프트웨어 조직들이 2~3 점 상태에서 운영된다고 지적한 것이다. 

1. 소스코드 관리시스템을 사용하고 있는가?

2. 한방에 빌드를 만들어낼 수 있는가?

3. 일일 빌드를 하고 있는가?

4. 버그추적 시스템을 유지하고 있는가?

5. 코드를 새로 작성하기 전에 항상 버그를 수정하는가?

6. 일정을 업데이트 하고 있는가?

7. 명세서를 작성하고 있는가?

8. 프로그래머들은 조용한 작업 환경에서 일하고 있는가?

9. 여러분은 구입 가능한 최고급 툴을 사용하고 있는가?

10. 테스터를 별도로 두고 있는가?

11. 프로그래머 채용 인터뷰 시에 실제로 코드를 작성하게 하는가?

12. 무작위로 사용 편의성 테스트를 실시하는가?

 

전체적으로 공감가는 부분도 많고, 다소 버겁게 느껴지기도 한다. 조엘 특유의 유쾌한 필체로 작성된 블로그 글들을 모은 책이라 쉽고 빠르게 읽히는 장점이 있었다. 조엘의 회사가 S/W 분야에서 대성하지는 못한 것을 생각하면, 비지니스는 단순히 뛰어난 개발자들을 끌어모으는 것만으로 성공하는 것은 아니다. 물론 그는 Stackoverflow.com 을 성공적으로 키워내면서 S/W 가 아닌 커뮤니티 서비스 분야에서 성공을 거두기는 했다. 이런 것을 생각해보면 실력, 운, 그리고 여러가지 변수가 S/W 비지니스의 성공에 복합적으로 작용한다고 봐야 겠다. 

 

 

+ Recent posts