2010년 4월 19일 월요일

개발자를 잘못 채용하는 방법

뛰어는 개발자를 보유하는 것은 소프트웨어 회사의 절대 필요 조건입니다.

뛰어난 개발자를 보유하는 방법은 내부 개발자들이 잘 성장할 수 있도록 좋은 환경과 기회를 제공하는 것도 중요하지만 기본적으로 뛰어난 개발자를 뽑아야 합니다.

적어도 능력은 B급 이상은 되야 입사 후 성장 가능성이 높습니다. 하지만 좋은 개발자들을 채용하는 것은 그렇게 쉽지 않습니다. 공채, 헤드헌터, 소개 등 갖가지 방법을 써도 쉽지는 않지만 흔히 잘못된 방법이 무엇인지는 쉽게 알 수 있습니다.

어떤 경영자들은 같이 일할 동료들을 개발자 채용 인터뷰에 참여시킵니다. 같이 일할 동료들이 보고 같이 일하기 좋은지 판단하라는 이유에서 입니다. 팀웍이 중요하다는 이유에서 입니다.

하지만 이 경우 잘되는 경우도 있지만 문제가 있는 경우도 많습니다. 기본적으로 같은 레벨에서 개발자를 평가하는 것은 쉽지 않습니다. 즉 인터뷰를 할 능력이 없는 사람에게 인터뷰를 맡기는 것과 비슷합니다. 그런 정도의 인성은 상급자들이 더 잘 볼 수 있습니다.

인터뷰에 참여한 개발자의 입장에서 보면 자신보다 뛰어난 개발자를 뽑는 것은 상대적으로 자신의 비중이 낮아지고 결국에는 자신에게 손해를 가져오기 때문에 본능적인 자기 방어차원에서 그런 개발자들의 채용에 반대하곤 합니다. 이유야 다른 곳에서 찾지요.

채용인터뷰는 특히 개발자 채용인터뷰는 CTO와 개발팀장 등 충분히 기술적인 면과 조직적인 면을 모두 볼 수 있는 사람이 해야합니다. 동료가 될 개발자들에게 인터뷰를 맡기는 것은 인터뷰의 책임이 있는 사람들이 기술적인 식견이 부족해서 기술적인 판단의 책임을 개발자들에게 전가하는 것일 수도 있습니다. 이런 경우 차라리 외부 전문가에게 부탁을 하는 것이 나을 수 있습니다.

개발자는 똑똑하며 긍정적인 사람을 뽑아야 합니다.

하지만, 현실에서는 경력직을 뽑을 때는 해당 분야에서 일해봤는지가 가장 채용의 조건이 되곤 합니다. 이런 개발자들이 똑같은 일을 하다가 똑같은 분야로 옮긴다는 것은 실력이 그리 뛰어나지 않고 그저 경험만 있을 가능성이 높습니다. 정말 일을 잘 했다면 이전 회사에서 더 좋은 대우를 받으며 더 오래 일 했을 겁니다. 뛰어난 개발자들이라면 이런 식으로 옮기지 않습니다. 자신의 미래에 도움이 되는 분야나 최신 기술을 배울 수 있는 곳으로 옮길 겁니다. 또한 퇴사 이전에 이미 누가 데려가지 이렇게 인력 시장에 잘 나오지를 않습니다. 

따라서 급하다고 동일 경력 개발자라는 이유만으로 뽑는 것은 며칠 전에 그만 두었거나 곧 그만둘 개발자의 대타는 될 수 있어도 장기적으로는 회사에 손해가 될 수 있습니다. 

결론은 항상 좋은 개발자를 뽑기 위해서는 당장 발등에 떨어진 불을 끄기 위해서가 아니고 평상시에 꾸준히 노력해야 한다는 겁니다. 그래서 당장 급해서 경력직을 뽑는 것보다 신입으로 미리 준비를 해서 꾸준히 키워 놓은 것이 더 좋은 결과를 가져올 때가 많습니다. 하지만 회사의 프로세스나 개발문화가 엉망이라면 위의 모든 것이 공염불이죠. 이런 경우는 어쩔 수 없이 발등의 불끄기 모드로 채용을 할 수 밖에 없습니다.

결국 악순환이 또다시 시작되는 거죠.

채용은 단발성으로 진행하지 말고 장기적인 안목을 가지고 꾸준히 노력해야 합니다.

댓글 23개:

  1. 잘 읽었습니다.
    글 내용에는 동의합니다만, 실천하기는 무척 어려운 사항이네요.

    답글삭제
  2. 안녕하세요. 지킬박수님

    사실 평소에 채용을 위해 꾸준히 노력하는 것은 관리자의 의무입니다. 대부분 의무를 태반하는 것이지요. 또는 회사에서 개발자를 무슨 공장에서 부품 고장나면 교체하듯이 결원이 생길 때만 채용할 수 있도록 하는 회사도 있습니다.
    사실 그렇게 어려운 것이 아닌데, 회사 정책상 또는 게을러서 못하고 있는 경우도 의외로 많습니다.

    답글삭제
  3. 댓글 고맙습니다.^^

    말씀하신 게 맞습니다. 어려움은 사장님을 어떻게 설득하느냐에 있습니다. 결원이 생기기 전에 좋은 사람을 미리 확보해 두는 식으로 허용되지 않는 경우 말이죠. 정말 참 어렵네요.

    답글삭제
  4. 예전 개발 환경에서는 기술/업무의 규모가
    크지 않았기 때문에 못하는 사람이나 잘하는 사람이나
    크게 차이가 없었지만 최근 동향을 보면 그 규모나 난이도가 예전과 비교 했을 경우 엄청난 차이가 납니다.

    못하는 사람과 잘하는 사람이 단순 본수로 판단했을 경우
    10본이상 차이가 난다고 합니다.

    즉 앞으로 회사 경쟁력은 테크니컬 인재를 많이
    가지고 있는 회사가 살아 남을 것 같습니다.

    최근 프로젝트를 하면 누가 고급이고 누가 중급인지
    판단이 애매 합니다.

    답글삭제
  5. All of Software -개발자를 잘못 채용하는 방법

    답글삭제
  6. 불러주는 사람도 없고..
    있어도 항상 망하는 회사에만 있는 저는 능력없는 나쁜 개발자인거군요 ㅠ.ㅠ
    이렇게 3년 일하니... 긍정적인 생각도 다 가출해버렸어요 OTL

    답글삭제
  7. 님께서 작성하신 글은 제가 보기엔 교과서적인 내용입니다.
    저도 여러개발과 수장 노릇도 해봤지만 님의 블로그 내용은 현실적 괴리가 있네요.
    특히, 결론부분은 인력시장을 잘 이해하지 못하신 것이 아닌지요?

    대기업같이 인력 풀이 잘되어 있는 곳이 적절한 예는 아닌 것같고
    그외의 회사를 예로 든다면 개발자를 잘 채용하는 비결은 적정한 보수입니다.
    신입을 키워 향후 활용하는 것은 그때뿐이며 다 자기능력에 대응하는 보수를 찾아 나갑니다.
    남게되는 경우는 대부분 인맥관계나 그외의 사정때문이지 그 회사가 키워줘서 남아 있는 것이 아니지요.
    이런 행태가 솔직히 비난받을 일은 아닙니다.

    경력의 경우 가장 필요한 덕목은 역량도 중요하지만, 책임감과 문제해결능력이 신입보다 높다는 것이지요.
    당장 발등에 불이 떨어져도 경력자가 위의 조건에 충족한다면 된 것입니다.
    제 경험상, 어차피 새로 온 조직에 적응과 업무이해를 위해 가르쳐주는 것은 대부분 경력자가 이해가 더 빠릅니다. 그래서 회사의 신입은 이직하기 전 열심히 배워야 하지요.
    그리고 퇴사 전 이미 누가 데려간다는 것은 대기업이 아닌 이상 대부분 다 인맥으로 가는 것입니다. 그런데 아는 사이이다 보니 연봉협상이 편하질 않죠. 누가 데려가지 않아서 실력이 낮을 것이다라는 편견은 아니시겠죠?
    대부분의 사람들이 적정한 보수와 하고싶은 분야의 일을 찾아 나온것입니다.

    그리고 동일개발자 부분은 저도 동의합니다.
    사실 개발자들은 한우물만 파서는 안됩니다. 일례로 Pro*C 부분만해도 그리 어려운 것이 아님에도 일부 금융권에서는 Pro*C 경력자만 뽑더군요. 전산프로젝트는 종합예술같아서 한가지 부분만 가지고 퍼포먼스 향상을 기대하지 못하는데..
    다양한 지식과 경험을 겸비한 개발자의 개발 능력은 한우물만 판 사람보다 생각의 틀이 넓습니다.

    컨설턴트 하실 때 저와같은 생각을 가지는 사람도 있다는 것을 염두해 두셨으면 합니다.

    답글삭제
  8. 개발자를 미리 확보해두는 것은 어렵습니다. 평소에 채용을 위해 노력한다는 것은 개발자를 미리 뽑아 놓는 다는 의미는 아닙니다. 평소에 꾸준히 개발자들을 물색해 놓고 좋은 개발자들과 관계를 유지해 놓다가 기회가 되면 데려 올 수 있도록 하는 것도 한 방법입니다.

    답글삭제
  9. 개발자를 본수로만 따지는 프로젝트가 많죠. ^^

    답글삭제
  10. 좋은 의견 감사합니다.
    경력직 개발자를 채용하는 첫번째 조건은 연봉 맞습니다. ^^ 그런데 발등에 불떨어진 듯 개발자를 뽑으면 높은 연봉을 주고도 좋은 개발자를 찾기가 어렵죠. 작은 회사들은 개발자를 미리 뽑아 놓는 것은 어렵죠. 그렇다고 하더라도 평소에 채용을 위해서 활동을 해야 할 것들이 많습니다. 그런데 대부분 평소에는 전혀 신경을 쓰지 않습니다. 평소에 준비를 잘 해놔야 필요할 때 좋은 개발자를 채용하기가 용이합니다. 연봉은 필요한 만큼 줘야하지요.

    그리고 누가 데러가지 않는 개발자는 실력이 낮다는 것은 아닌데, 제 글을 다시 읽어보니 그런 오해를 할 수 있는 문맥이군요. - -; 당연히 묵묵히 일하는 뛰어난 개발자들도 많이 있죠. 하지만 인력시장에서 좋은 개발자를 찾는 것이 쉽지 않은 것은 경험상 사실이죠. 여전히 여러 인맥을 통해서 뛰어난 개발자를 찾고 꾸준히 관계를 유지해 놓다가 서로 연결을 해서 데려가는 것은 좋은 개발자를 채용하는 효과적인 방법입니다.

    어쩔때는 제가 쓴 글을 다시 읽어보면 이번 글과 같이 의도하지 않은 의미로 이해가 될 수 있는 글들이 종종 있습니다. 이글도 관리자나 경영자의 시야에서 작성했었는데, 개발자 입장에서는 기분이 나쁠 수 도 있겠네요. 나중에 개발자 입장에서 이직에 대해서 글을 써봐야겠습니다.

    좋은 지적 감사합니다.

    답글삭제
  11. 구차니님 안녕하세요.
    운이 없으신 거겠죠. ^^ 제 글이 개발자 입장에서는 오해를 일으킬 수 있는 내용이네요. 죄송합니다.
    개발자도 한 회사에 평생 몸 담겠다는 마음가짐 보다는 적절한 때 회사를 잘 옮길 수 있도록 평소에 노력을 해 놓아야 한다고 생각합니다. 그래야 인연이 되는 좋은 회사도 만날 수 있고 그에 필요한 준비도 미리 할 수 있습니다.

    답글삭제
  12. 평소에 꾸준히 개발자를 물색해 놓는 거, 필요한 일이겠네요. 노력도 해 봐야겠고요. 이 부분은 미처 생각하지 못했습니다.

    다만, 이 또한 쉽지 않다는 생각도 함께 듭니다. 앞서 말씀 드린 대로 결원이 생기기 전에 미리 준비하지 않는 문화를 가진 조직에서는 평소에 꾸준히 개발자를 물색해 놓는 노력을 할 만 한 여유(?)를 만들기가 어렵거든요.

    이게 개인적으로 노력한다고 해서 가능한 것인지 좀 더 고민해 보겠습니다.

    답글삭제
  13. 채용에 대한 노력은 관리자의 R&R에 명시적으로 포함이 되어 있어야 합니다. 이를 위한 시간 및 예산이 제공되어야 하며 평가에 반영이 되어야 합니다.
    흔히 관리자의 R&R에 개발자 retain만 포함되는 경우가 많지만, 채용을 위한 노력도 그에 못지 않게 중요합니다.
    개인이 회사의 지원 및 관심도 없이 혼자서 노력하는 것은 쉽지 않습니다.

    답글삭제
  14. 참으로 공감하는 내용입니다. 개발자 채용시 기술면접을 외부전문인에게 맡기는 것. 객관성을 유지할 수 있을 것 같습니다. 만약에 개발자 면접을 주관해야 하는 입장이라면 새로 면접하러 온 개발자의 능력을 자신의 능력과 경험에 견주어서 판단할 수도 있겠습니다. 말쓰하신대로 자신보다 뛰어난 개발자가 들어왔다거나, 정치적으로 자신이 위축될만한 인재라고 느낀다면 위축되고 경계하겠죠. 실제로 이런곳 여러군데 봤습니다.ㅎ
    장기적인 안목 그것이 중요할것 같네요 ( 참~ 전 이번 병고 이후 새로운 직장에 몸을 담을 예정입니다. 엔지니어링과 IT개발은 취미로 삼고 말이죠. 앞으로 규현님과 비슷한 일을 할 것 같은 예상이 듭니다. 많은 조언 부탁드리겠습니다.:)

    답글삭제
  15. 안녕하세요. moova님
    몸은 많이 나아지셨나보네요. 다행입니다. 블로그에서 자주 뵙기를 희망합니다.

    답글삭제
  16. 이글에 추천한표 던집니다. :)
    근데 이런 좋은 글은 저같은 개발자들이 공감하는거 보다도,
    각회사 인사담당자들이 좀 읽고 느껴야 하는데 말이죠.

    답글삭제
  17. 안녕하세요. kevin님
    호주에 계시나봐요? 멋진 블로그도 가지고 계시고요. 반갑습니다.
    앞으로 종종 들려주세요.

    답글삭제
  18. 이번에 "프로젝트가 서쪽으로 간 까닭은" 이라는 이름으로 번역되어 나온 책이나, 조엘의 책 등에서도 언급했고, 개인적으로도 그동안 인터뷰를 했던 경험으로 보자면 말씀하신 것과 같이 외부인력이나 CTO만으로는 부족합니다. 팀에서 일할 사람을 뽑는데 외부인력이 무슨 내용을 어떻게 알까요? 실제개발에 손놓은지 오래 된, 회사의 기술적 나갈 방향을 결정하는 CTO가 세세한 기술 인터뷰를 제대로 할 수 있을까요?
    함께 일할 사람을 뽑는데 있어 동료들만큼 기술인터뷰를 제대로 할 수 있는 사람들은 없다고 생각합니다.

    1차 기술 인터뷰를 동료들이 직접 하고, pass한 사람들에 대해서 CTO나 다른 사람들이 발전가능성/인성/조직 친화력? 등을 점검해야 합니다.
    최소한 전화인터뷰 - 팀 기술인터뷰 - 최종인터뷰 의 3가지 정도 과정을 거치는 것이 좋더군요.

    자신보다 일을 잘하는 사람을 일부러 떨어뜨린다? 글쎄요, 한명이라도 더 일 잘하는 사람이 들어왔으면 하는 바램으로 가득찬 게 개발자 집단이고, 만약 자신보다 일을 더 잘할 것 같아서 떨어뜨린다면 그 조직은 이미 정치가 난무하는 비효율의 하급 개발자들이 넘친다고 밖에 볼 수 없을 것 같습니다.

    A급 인재는 A급이나 S급 인재를 데려오지만, B급 인재는 자신보다 못한 사람들을 데려온다고 했던 조엘의 이야기가 생각나네요. 스타트업부터 시작해서 회사가 존재하는 한 '우수인력 유치'를 지속적인 프로젝트로 진행해야 하는 이유가 여기에 있을겁니다.

    답글삭제
  19. 안녕하세요. 우울한 딱따구리님
    좋은 의견 감사합니다. 사실 CTO만 하더라도 우리나라에서는 상당히 왜곡된 이미지를 가지고 있습니다. 한마디로 우리나라 CTO는 기술을 잘 모르는 사람이 많죠. 그래서 말씀하신 내용이 일리가 있는 것 같습니다.

    거의 대부분의 소프트웨어 회사는 B급, C급 인재가 넘쳐나고 A급, S급 인재는 찾기 어렵습니다. 상황이 이러다보니 채용시에도 좋은 개발자를 가려내기 힘든 것 같습니다.

    답글삭제
  20. B급, C급 인재에 대한 대책은 없나요?.^^..

    답글삭제
  21. 안녕하세요. jp님
    어느 조직이나 다양한 인재가 필요합니다. 문제는 A급인제인줄 알고 뽑았는데, C급인재인 경우입니다.
    보통의 소프트웨어 회사는 A급인재 10~20% 정도, 그 외에는 B, C급 인재로 채워집니다. 물론 B,C급 인재를 키워서 역량을 갖추게 하는 것도 중요하지만, A급인재가 하나도 없는 회사는 또 곤란합니다.

    회사 입장에서는 그런 것이고, 개발자 개인 입장에서 자신은 B급, C급이 되겠다고 하는 사람들은 없을 겁니다. 그러므로 자신의 목표도 A급, S급에 맞춰야 겠죠.

    답글삭제
  22. 별로 공감이 안가네요.

    같은분야로 전직하는 사람은 위에서 얘기하고 있는 전제인 "실력이 있으면 더 좋은 대우를 받는다" 라는게 안들어맞기 때문입니다.

    오히려 실력이 있던 말던 대우는 똑같이 해주니까 그나마 실력이 있는 사람은 같은분야로 옮기고 실력이 없어서 옮길자신조차 없는사람이 그 회사에 눌러잇죠

    답글삭제
  23. Lyn님 안녕하세요.

    핵심과는 좀 다른 글이군요. ^^
    제가 말하는 실력과는 좀 다른 기준을 가지고 있을 수 있는 것 같네요. 여기서 실력이란 오랜 공력에 따른 Domain지식 보다는 진정한 SW개발 실력, 즉, 분석/설계 등 공학적인 경험과 실력을 말합니다.

    실력이 있으면 좋은 대우를 받는다는 것은 음~ 회사마다 다르고 좋은 대우 받는 것은 상황에 따라서 완전히 다른 것 아닐까요?

    실력이 차이가나도 똑같은 대우을 해주는 회사는 호봉제 같은 회사인데 대부분의 회사는 실력에 따라서 차등 대우를 해주려고 노력하고 있고, 하지만 정확하게 실력에 따라 대우을 못해 주는 것이 현실이기는 합니다.

    여기서 핵심은 급하다고 동일 경험이 있는 개발자라고 마구 뽑다 보면 실력 있고 회사의 미래에 도움이 되는 개발자를 뽑기 어렵다는 것입니다.

    개발자는 동일 Domain 경험보다는 "문제 해결 능력" 등 근본적인 실력과 공학적인 경험 및 실력을 보고 뽑는 것이 회사의 미래에 더 좋다는 것입니다.

    ^^

    답글삭제