Writing

[Team] 좋은 개발자 채용하기

 2016. 8. 25. 01:34
반응형


소프트웨어 장인
국내도서
저자 : 산드로 만쿠소 / 권오인역
출판 : 길벗 2015.09.25
상세보기

소프트웨어 장인의 9. 10, 11 챕터는 인재 채용과 면접에 대해 알려 준다. 

좋은 내용이 많아서 대부분 책 내용을 그대로 옮기거나 의견을 달아서 정리하고자 한다.

책을 구입해서 맥락 가운데 읽는 것을 가장 추천한다.




사진출처 : http://www.webrecruitireland.com/employers/talent-recruit


우리가 채용할 때 별다른 기준 없이 뽑게 되는 경우가 많은 것 같다. 동아리나 학회 면접 때도 항상 비슷한 패턴으로 사람을 찾게 되는 것 같다.

대다수의 경우는 사람이 부족하기 때문에 누구든 열정있는 사람이 들어왔으면 좋겠다는 생각을 한다. 

걱정만 하다가 모집 공고를 부랴부랴 만들게되고 또 비슷한 사람들이 모여 팀이 된다.

또 비슷한 사람들을 뽑았기 때문에 항상 같은 문제가 반복된다. 운이 없었다는 식으로 위로를 하고 팀 내 사기는 점점 떨어지는 경우가 많다.




1. 어떤 사람을 원하는지 구체화시키자


누구를 뽑아야 악순환의 고리를 끊을 수 있을까? 답은 의외로 간단하다 지금의 문제를 키우지 않는 사람을 뽑아야 한다.

지금 팀내에 리더십이 부족하다면 리더십이 있는 사람을 뽑아야하고, 세부적인 것을 놓치고 있다면 세부적인 일을 해줄 사람을 뽑아야 한다.

대다수의 팀들은 열정있는 팀원과 함께 일하고 싶을 것이다. 하지만 열정을 알아보는 것은 쉽지 않은 일이다. 

그래서 채용 공고에 필요 경력을 빼곡히 적고 이런 경력을 채울 수 있는 사람이라면 열정적일 것이라고 착각한다.

이는 채용 담당자의 마음을 편하게 할 뿐 오히려 발전 가능성이 있는 개발자가 지원하지 못하게 한다.




2. 잘못된 채용 공고


책에 소개된 전형적인 채용공고는 다음과 같다.



--



대형 은행의 외환 IT 시스템 개발을 담당할 자바 개발자를 모집합니다.

장기 계약직으로 일하게 되며 아래와 같은 기술과 경험이 있어야 합니다.

  • 자바 프로그래밍 00년 이상
  • 스프링 프레임워크 경험
  • 금융권 경험 2년 이상
  • 전산 석박사 우대
  • 솔라리스, 리눅스, SQL
  • 우대 경력 : C#, C++, MQ 메세징, 애자일 방법론, 분산/복제 캐시, Sybase, DB2


대우 수준은 다음과 같습니다

  • 1억 2천 ~ 1억 5천, 급여 외 보너스 최대 30%, 년간 26~30일 유급휴가, 가족을 포함한 의료보험 제공, 퇴직금 제공, 기타 복리후생 제공

상기 요구 경력에 합치하고 대우 수준에 관심이 있는 개발자께서는 바로 지원바랍니다 



--



훌륭한 개발자를 유인하려면 채용 공고의 직무 요건을 바로잡아야 한다.

앞선 직무 요건들은 발전가능성이 있는 개발자 다수를 제외시킨다.


그리고 이와 같이 틀에 박힌 직무 요건들은 피해야 한다.

  • 절대적인 숫자 : 필요한 기술은 일을 통해서 또는 자발적인 자기계발을 통해서 배울 수 있지 학점이나 자격증을 통해서 얻는 것이 아니다.
  • 기술 목록의 나열 : 앞서 말한 것 처럼 불필요하게 너무 많은 기술 목록을 나열하면 재능있고 정직한 개발자가 스스로 지원을 포기하게 만들 수 있다.
  • 잘못된 팀 문화 설명 : 보통 그 누구도 부정할 수 없는 아주 당연한 가치들을 나열한다. 팀워크, 긍정적 태도, 배움에 대한 열정, 지혜로움과 같은 단어들을 나열하지 않도록 하자
  • 잘못된 요구 항목 : 경력 년수 보다는 앞으로 맡은 일에서 무엇을 책임져야 하는지 설명하는 것이 낫다.
또한 열정 있는 개발자가 어떻게 보상받고 가치를 부여받는지, 팀의 개발 문화와 어떻게 연결되는지 아무 내용이 없다.



3. 훌륭한 채용 공고

그렇다면 좋은 채용 공고는 무엇일지 궁금해진다.

책에 소개된 좋은 채용 공고의 예시이다. 

별다른 설명 없이도 예시를 보면 좋은 힌트를 얻을 수 있을 것이다.



--


음악과 기술에 대한 열정이 넘치는 사람들로 가득한 규모는 작지만 빠르며 혁신적인 회사입니다. 우리는 빠르게 성장하고 있습니다. 이에 따라 열정적이고 창의적으로, 즐겁게 일할 사람들을 찾고 있습니다. 비록 힘은 들지만 재미있게 일할 수 있고 내가 기여한 부분이 즉각적으로 회사의 성공에 영향을 끼치는 것을 볼 수 있습니다. 

- 회사가 어떤 가치를 추구하는지 상세히 설명해줌


개발팀 : (경력)개발자

아주 특별한 개발팀에서 일할 똑독하고, 자발적으로 동기가 부여된 개발자를 찾습니다. TDD를 능숙하게 수행해본 경험이 반드시 있어야 합니다.



이런 분을 찾습니다 - 경력 요구 리스트로 훌륭한 개발자를 막지 않음

  • 소프트웨어 자체를 중요시하고 돌볼 줄 알아야 합니다. 글자에 지나지 않는 이력서의 공허한 다짐들이 아니라, 자신의 업무를 명확히 하고 그 행동에 책임질 수 있는 열정이 있어야 합니다.
  • 소프트웨어 설계에 안목이 있어야 하며 여러 주제들에 대해 당신의 경험이나 자료, 실험을 바탕으로 유창하게 의견을 개진할 수 있어야 합니다.
  • 당신에게 있어서 일은 단순히 직장에 출퇴근하는 것 이상의 의미가 있어야 합니다.

TDD - 개발 방법에 대한 확신과 설명. 보통의 경우 확신을 가진 개발 방법이 없는 팀이 많음 
다른 무엇보다도 우리는 TDD를 지지하고 따르고 있습니다. TDD로 일하는 데 충분한 경험이 있고 TDD 스타일의 사고방식에 능숙하다면 우리는 당신을 시니어 개발자 자리로 모실 것 입니다. TDD로 일한 경험이 있습니까? 그러면 아주 좋습니다. 얼마나 경험이 있는지, TDD를 어떻게 실행했는지, 최근 프로젝트에서 TDD가 어떻게 이용되었는지, 어떤 문제들이 있었는지 등 많은 이야기를 듣고 싶습니다.

직무 역할 - 팀의 분위기에 대한 설명
우리 팀은 크로스펑셔널, 자기 조직화 팀이며 자유로운 분위기 입니다. 아키텍트도, 프로젝트 관리자, 중간 관리자도 없습니다. 당신은 제품 관리자 및 이해 관계자들과 직접 대면하며 긴밀한 상호 협력 방식으로 일하게 됩니다. 상당히 높은 수준의 팀워크와 성숙도가 필요합니다. 그러한 역량은 흔하지 않습니다. 하지만 우리는 이러한 역량이 최고의 소프트웨어를 만들기 위한 최선의 방법이라고 믿습니다.
여러 가지가 있지만 그 중에서도 페어 프로그래밍, TDD/BDD, 리펙토링, 연속된 제품 릴리즈가 우리의 일하는 방식에 깊게 녹아 있습니다. 이러한 방법들을 개선하기 위해 지속적으로 노력하고 있습니다. 우리는 코드 타이핑이 일의 병목점이 아니라는 것을 알고 있습니다. 여러가지 중에서도 다음과 같은 것을 수행합니다. 

한 주에 두 번씩 카타(Kata, 프로그래밍 연습을 위한 짧은 문제를 의미함), 도조(Dojo)를 하거나, 실행 관계나 기술에 대해 토론 합니다. - 열정있는 개발자가 팀에서 얻을 수 있는 유익

  • 한 달에 한 번씩 '이노베이션 타임'이 있습니다. 이틀의 시간을 할애하여 새로운 장난감을 가지고 놀거나 제품 아이디어를 토론합니다.
  • 정기적으로 콘퍼런스나 커뮤니티 이벤트에 참석합니다. 단순한 참관일 때도 있고 서포터 또는 발표자일 때도 있습니다. (최근에는 'QCon London 2012', '소프트웨어 장인 정신 2012', 'SPA 콘퍼런스 2012'에서 발표 세션을 맡았습니다.) - 단순한 자랑용 실적이 아니라 개발자에게 매력이 되는 요소
  • 우리는 완전하지 않습니다. 많은 문제가 있음을 인정합니다. 우리는 개선하기 위해 끊임없이 노력 중이며 아직 해결해야 할 문제들이 많이 남아있습니다.

사용중인 기술 - 놀랍게도 기술에 대한 나열이 맨 마지막에 있다. 개발년차도 묻지 않는다
대부분의 코드 스택이 C#과 .Net으로 되어 있습니다. 다른 언어와 기술들(예를 들어 Ruby, 서버 사이드, JavaScript, C++, Python)도 사용하고 있고 탐색 중입니다. 객체지향 언어를 깊이 있게 이해하고 다루는 데 능숙하다면 경험한 배경 기술이 무엇이든 관계없이 우리의 일원이 되는데 문제가 없습니다. 아래는 현재 사용 중인 기술 목록입니다(이 기술들 외에 다른 기술들도 얼마든지 사용될 수 있습니다) - 겸손하면서도 팀이 실력 있다는 것을 보여주고 있음
  • C#, Ruby, JavaScript
  • ASP .Net MVC, OpenRasta, Nancy, ServiceStack, Nhibernate, Windsor, StructureMap, NUnit, RhinoMocks, ReSharper, NDepend
  • Cucumber, Rails, RSpec, Rake, Capybara, Selenium, WAtir
  • REST, OAuth
  • Git
  • MS SQL, ElasticSearch, Solr
  • Mono, Windows, IIS, Nginx
  • RabbitMQ
  • TeamCity
오픈 소스에 대해서도 적극적입니다. 위에 나열된 기술 중 일부에 실제 기여하고 있으며 fork한 프로젝트도 우리의 GitHub 계정에서 관리하고(우리가 만든 다른 기능들을 공개하는 것을 포함하여) 있습니다.

--




이 채용 공고는 HR담당이 아니라 훌륭한 개발자들이 직접 개입한 것이 분명하다.

'당신에게 일은 단순히 직장에 출퇴근하는 것 이상의 의미가 있어야 합니다'라는 부분을 보면 훌륭한 개발자가 이것을 보았을 때 어떻게 느낄지 이미 계산해 두고 있는 것으로 보인다.




4. 커뮤니티 활용


개발자 모임을 후원하고, 지속적으로 좋은 관계를 이어가면서

해당 모임으로 부터 좋은 인재를 영입할 수 있는 기회를 늘린다.




5. 성적말고 실전에서 쓰이는 자격 요건


  • GitHub 계정
  • 블로그
  • 오픈 소스 활동
  • 기술 커뮤니티나 사용자 그룹 활동 내역
  • 펫 프로젝트 내용 - 사업이나 수익과 관련없이 자발적으로 기술에 대한 탐구나 자유로운 흥미로 진행하는 프로젝트
  • 페이스북 계정
  • 좋아하는 기술서적 목록
  • 참석했거나 발표했던 컨퍼런스

사실 나도 해당되는 것이 많지 않지만 열정있는 개발자라면 적어도 하나정도는 해당할 것이라고 저자는 말한다. 




6. 적극적인 리크루팅


정기적으로 계속 채용하기

정말 좋은 개발자가 꼭 필요한 상황이 되었을 때, 그때가서 원하는 스타일의 개발자를 시간 맞춰 찾을 수 있을 가능성은 매우 낮다


반응형