2009년 11월 27일 금요일

뛰어난 개발자는 타고 나는 것


1. 처음부터 똑똑한 개발자를 뽑아라. 
2. 똑똑하지 않는 개발자를 채용해 놓고 똑똑한 개발자로 바꾸려고 시도하지 마라. 
3. 특출나게 똑똑하지 않은 개발자도 다 적절한 역할이 있다. 
4. 그 역할을 찾아서 제 역할을 하도록 하라. 각 개발자에게 알맞은 역할을 찾아 주고 제대로 일하게 하는 것만으로도 얼마나 힘든지 아는가?
소프트웨어 회사 경영자와 관리자에게 전하는 말입니다.
요즘은 뛰어난 개발자를 구별하기 정말 어렵습니다. Labor market에는 실업자가 넘쳐나지만 뛰어난 개발자는 눈을 씻고 찾아봐도 볼 수가 없습니다. 뛰어난 개발자는 이직을 잘하지 않고 노출이 잘 안되기 때문입니다.

그래서 적당한 개발자, 또는 해당 분야에 경험이 좀 있는 정도의 개발자를 그냥 채용하는 경우가 많습니다. 하지만, 이런 개발자들은 뛰어난 개발자를 대신할 수는 없습니다.
뛰어난 개발자는 타고납니다.
뛰어난 개발자의 필수 조건인 논리력은 태어날 때 이미 50%는 결정되고 교육과정을 거치면서 나머지 49%가 결정됩니다. 사회에 나와서 아무리 노력을 해도 이미 완성된 두뇌는 별로 바뀌지 않습니다. 경험이 쌓이면서 좀더 지식이 풍부해지고 노련해질 뿐입니다.

요즘의 개발환경은 뛰어난 개발자와 그저 그런 개발자를 구별하기 점점 어렵게 만들고 있습니다.
뛰어난 개발자들은 정말 복잡한 알고리즘을 몇 시간 만에 구현해 낼 수 있지만, 그저 그런 개발자들은 몇 달을 줘도 불가능합니다. 하지만, 요즘은 그런 알고리즘을 구현하지 않아도 개발이 가능한 분야가 얼마든지 있고, 일반인 수준의 논리력만 가지고도 개발자로서 일하고 있는 사람들이 넘쳐납니다.

하지만, 이런 그저 그런 개발자들만 잔뜩 모아 놓은 회사는 그저 그런 회사일 수 밖에 없습니다.
물론, 소프트웨어 회사가 돌아가려면 이런 개발자들도 필요합니다. 그런데, 뛰어난 개발자와 그저 그런 개발자를 구분하지 못하는 회사는 챔피언이 될 수 있는 선수를 후보로 썩히는 것과 같은 행동을 합니다.

일단 수학을 잘한다면 뛰어난 개발자가 될 가능성이 아주 높습니다. 물론 수학을 잘하는 모든 사람이 뛰어난 개발자가 될 수 있는 것은 아니지만, 하나의 중요한 요소인 것은 사실입니다. 하지만 수학 실력은 아주 형편없는데 뛰어난 개발자가 될 가능성은 별로 높지 않습니다. 애초부터 복잡한 논리를 처리할 수 있는 두뇌를 가지고 있지 않기 때문입니다.  

경력직 개발자중에서 똑똑한 개발자를 찾기 어려우면 아직 세상 물정을 잘 모른 대학생들 중에서 찾는 것이 좋습니다. 참고로 저도 대학교 다닐 때부터 회사 생활을 했었습니다. 
뛰어난 개발자들은 대학 재학 중에도 이미 뛰어난 실력을 보입니다. 대학에서 적당히 학점 따서 졸업하는 학생들보다 학점은 낮을 수 있어도 확실히 실력은 뛰어날 수 있습니다. 하지만, 요즘 같이 치열한 취업 환경에서는 학점에서 탈락해서 취업이 어려울 수 있습니다. 이런 학생들을 찾아서 회사로 끌어들이는 것이 관리자들이 해야 할 중에서 가장 중요한 일이죠.

요즘은 보통의 머리를 가진 사람도 개발을 할 수 있는 세상이 되었습니다.
그렇다고 보통이나 그 이하의 개발자들만 뭉쳐 놓고 훌륭한 제품을 만들 수 있을 것으로 착각하면 안됩니다. 뛰어난 개발자 채용에 회사의 사활을 걸어야 합니다. 관리자나 HR부서에서는 채용 시즌이나 결원이 생길 때만 잠시 채용에 관심을 둬서는 안됩니다. 1년 내내 채용에 온 힘을 쏟아야 합니다. 그렇다고 미련한 방법도 소용 없습니다. 참신한 방법들을 만이 연구해야죠. 

언젠가 똑똑한 개발자들이 스스로 몰려가는 SW회사가 우리나라에고 생기면 좋겠습니다.

PS) 똑똑하다는 것이 개발자에게 필요한 오직 한가지 조건은 아닙니다. 즉, 똑똑하기만 하다고 최고는 아니죠. 특히 인성과 긍정적인 자세가 중하죠. 이런 부분은 나중에 기회가 되면 풀어 보겠습니다. 또한 다양한 채용 방법에 대해서도 글을 올려 볼 계획입니다.

댓글 22개:

  1. 개인적으로 문과 성향이 짙긴 하지만 컴퓨터 하나만 보고 이과를 선택한 저로서는

    수학과 개발능력간의 상관관계라.. 실제로 느끼는 바가 있어서 그런지 몰라도 좀 씁쓸하네요.

    하지만 개발능력이 높다고 해서 뛰어난 개발자라는 논리에는 쉽게 수긍이 가질 않네요.

    극단적인 예입니다만 개인적인 개발능력이 아무리 뛰어나다 해도

    팀웍을 해치거나 자기만 이해할 수 있는 코드를 개발하시는 분을 뛰어난 개발자라고 할 수 있을까요? ^^

    답글삭제
  2. 안녕하세요. 제주소년님.
    PS에 말씀하신 내용이 있습니다. 너무 당연한 얘기죠. 뭐 굳이 제가 강조를할 필요도 없는...
    똑똑하다고 뛰어난 개발자는 아니죠. 개발자를 채용할 때 머리보다 먼저 보는 것은 마음가짐, 긍정적인 마인드, 팀웍을 잘 유지할 수 있는 지 등입니다.
    본인을 너무 Underestimate할 필요는 없을 것 같습니다. ^^

    답글삭제
  3. 수학..... 전 중1인데 아직 수학을 잘하지 못하는데요. 지금부터라도 노력하면 '똑똑한 개발자'가 되는 것이 가능할까요?

    답글삭제
  4. 씁쓸하지만 인정할 수 밖에 없는거 같아요-_-;

    답글삭제
  5. 뛰어난 개발자는 타고난다 라는군.. 시간이 지날수록 맞는 말이다..라는 느낌이 드는건.. ^^;; 뭐.. 난 그저.. 이 일이 좋을뿐이얌. 뛰어나진 못하지만.. 즐길줄아는 개발자가 되리라!

    답글삭제
  6. 개발자도 개발자지만...
    제발 기획자도 뛰어난 기획자로 쫌...

    답글삭제
  7. 하나님 안녕하세요.
    이것 또한 논리적인 판단인데... 수학을 매우 잘하면 일단 논리력이 뛰어날 가능성이 아주 높습니다. 그래서 뛰어난 개발자가 될 가능성이 높죠.
    하지만, 수학을 못한다고 뛰어난 개발자가 될 가능성이 낮다는 것은 아닙니다. 첫째 수학과 논리력은 100% 동일화 할 수 없고, 수학을 잘하지 못하는 원인이 두뇌가 아니고 다른 원인 일수도 있습니다.
    그래서 뛰어난 개발자가 될 수 있다 아니다는 말할 수 없습니다.
    위의 글은 소프트웨어 회사를 운영하는 사람에게는 유용할지 몰라도 개발자에게는 별 소용이 없는 글입니다. 회사 운영자들은 수많은 개발자중에서 선택을 해서 채용해야 하지만, 개발자는 본인이 전부 즉 100%이기 때문이죠.
    또한 개인으로만 본다면 똑똑한 개발자가 더 성공하고 더 행복하고 더 만족을 느끼는 것은 아닙니다.
    또한 똑똑한 개발자가 퍼포먼스가 더 높은 것은 절대로 아닙니다. 단 똑똑한 개발자만이 할 수 있는 일이 몇가지 있을 뿐입니다. 따라서 나머지 대부분의 일들은 성실한 개발자들의 몫이고 이들이 회사에 미치는 영향이 더큽니다.
    자신이 어느 영역에 해당하는지 그리고 어느 방향으로 성장해야 할지는 스스로를 잘 알아야 합니다. 자신의 두뇌의 한계를 모르고 덤비는 것은 히딩크가 감독으로는 세계적인 명장이 될 수 있는데 끝까지 선수를 해보겠다고 하는 것과 같을 수 있습니다.
    그래서 소크라테스가 몇천년전에 이미 "너자신을알라"라고 했나보죠.

    답글삭제
  8. 안녕하세요 두렁청해님
    별로 씁쓸해할 필요는 없는 것 같습니다. 이와 반대되는 글, 즉 개발자를 위한 글을 지금 준비중입니다. ^^

    답글삭제
  9. 김무니님 안녕하세요.
    더욱 척박한 분야가 기획분야입니다. 특히 국내 소프트웨어 업계에서 기획 분야는 척박하기 이를데 없죠. SI나 용역으로 먹고하는 회사들이 주를 이루니 그렇기도 하고 기획(마케팅)의 중요성을 잘 몰라서 투자를 잘 안하니 뛰어난 개발자를 양성할 수도 없죠.

    답글삭제
  10. 자바니즈 뛰어난 개발자는 타고 나는 것이네요. ^^ 양팀장님의 의견은?

    답글삭제
  11. 아.. 초 씁쓸입니다 ㅠ.ㅠ

    그래도 뛰어난 개발자라고 해서 대단한 알고리즘이 툭~하고 튀어나오고 그러진 않을꺼 같아요.
    그건 뛰어난 개발자라서가 아니라.. 그냥 천재인겁니다 ^^;

    답글삭제
  12. 뛰어난 개발자는 이직을 잘 하지 않고 노출을 잘 하지 않다고 하는건.
    어떻게 보면 이글과 좀 상반되는 이야기 인것 같습니다. - http://allofsoftware.net/117
    정말로 인질범처럼 하나를 움켜잡고 프로젝트 끝까지 질질 끄는 사람들이 많습니다. 누군가는 계속되는 알고리즘을 제공해주는 반면. 이직을 잘 하지 않는 개발자중 상당수는 인질범심리가 꽤나 많더군요.

    답글삭제
  13. 안녕하세요. moova님
    현실적으로 일반적으로 똑똑한 개발자는 회사에서 붙잡으려는 경향이 많고, 이직을 하려고 Labor market에 나오는 것이 아니라 그전에 누가 먼저 데려가곤 합니다. 그런 의미죠. 제 이전 글들고 모두 읽고 기억하고 계시는 군요. 감사합니다.

    답글삭제
  14. 구차니님 안녕하세요.
    저도 씁쓸하지만 현실이긴 하죠. 전 똑똑한 개발자를 좀 많이 봐왔다고 생각합니다. 하지만 10여년이 지난 지금 성공은 두뇌순으로 되지는 않더군요. 하지만 회사 경영자 입장에서는 똑똑한 개발자가 필요하죠.

    답글삭제
  15. Ray 님의 글 뛰어난 개발자는 타고 나는 것에 동의하지만, 다른 생각을 더하고 싶어 주말에 글을 쓴다. 시스템이 점차 복잡해지면서(코드량 증가 뿐 아니라 다양한 프로그래밍 언어나 설계를 섞어 쓴다.) 알고리즘을 실제 구현 양상을 크게 달라지는 듯하다. [각주:1] 알고리즘이나 자료구조 책에서 다루는 원리는 여전히 유효하다. 그러나 책에 나오는 실제 코드는 용도가 매우 제한적이다. 이제는 알고리즘 구현체가 디자인 패턴의 모양을 띠는 일은 흔하다. 실..

    답글삭제
  16. 뭔가 동의 할 수 없는 이유는 뭘까요? (논리력이 떨어지기 때문일까요?) 초.중까지 수학경시대회 나갈 만큼 수학을 잘 했었고(상도 많이 받았지요), 학부 때는 교수가 잘 설명하다가 갑자기 그날 따라 못 풀더군요. 그래서 과감히 문제에 도전을 받고 풀었는데, 중간고사/기말고사를 보지도 않고 A+를 맞았고. 공업수학도 곧 잘 해서, A+, 알고리듬, 고급 알고리듬도 A+이고, 수치해석 A+를 맞았는데... (이 정도면 수학을 잘 한다고 봐도 될까요?) 나름 뜻이 있어 학부 3학년 때부터 산학협동을 시작으로 일을 하기 시작을 하긴 했는데...

    그런데... 제가 개발을 잘 하는 사람인지는 모르겠습니다. 가끔은 후배녀석들이 수학을 잘해야 되냐고 묻는데, 나중에 필요할지 모르니까. 공부는 해둬라 정도였습니다. 제 업무가 수치 계산적인 부분이 필요한 콴트 개발자도 아니지만.... 글쎄요.

    전체 그림은 무엇을 말씀하시는지 알겠지만, 국부적인 부분에 반감이 생깁니다.

    "뛰어난 개발자의 필수 조건인 논리력은 태어날 때 이미 50%는 결정되고 교육과정을 거치면서 나머지 49%가 결정됩니다. 사회에 나와서 아무리 노력을 해도 이미 완성된 두뇌는 별로 바뀌지 않습니다. "

    두뇌에 대해서 고정적인 듯 말씀하시는데, 뇌는 결정되지 않습니다. 또는 경험과 노련이 논리적인 것과 상관이 없다는 뉘앙스적 말씀하시는 것에 대해서는 상당히 반감이 생깁니다. 아... 전규현 컨설턴트도 틀린 말을 할 때도 있구나 라는 생각이 들었습니다. 뇌에 관련 된 책을 좀 읽으셨으면 합니다.(잘 모르면 제가 추천해드리겠습니다.) 러닝 스타일(learning style = 태아에서부터 만들어지는)이 존재하긴 하지만 이것은 계발을 통해서 바뀝니다.

    그러니, 논리력 상태를 통해서 개발능력이 뛰어나다 아니다라고 말씀하시는 것에는 동의 할 수 없습니다. 내면의 어떤 동기부여에 따라서 그 사람의 스타일은 바뀝니다. 전체적으로 무슨 말씀인지는 잘 압니다. 저도 소위 말하는 문서면접이 아닌 구글만큼은 아니지만 시험을 보고 회사를 다닙니다.(수학문제도 있었고요.)

    하지만, 논리, 뇌에 해당하는 문맥은 전체 글을 망가트리는 것 같습니다.

    답글삭제
  17. 뛰어난 개발자는 타고 나는 것 -All of Software-

    답글삭제
  18. 안녕하세요. Richpapa님
    일단 좋은 의견 감사합니다. 말씀하신 내용에 100% 공감하고 또한 두뇌의 능력은 저도 잘 알고 있습니다.
    글이란 한문장만 뽑으면 이상할 수도 있고, 또 타겟이 아닌 사람은 크게 반발할 수도 있습니다.
    결론은 맨 위에 있습니다. 글이 타깃은 경영자구요. 두뇌는 얼마든지 개발 가능하니, 무조건 뽑아서 훈련을 시켜서 똑똑한 사람으로 만드는 일을 하지 말라는겁니다. 거의 불가능하다는 거죠. 개인입장에서 보면 가능한 일이 회사입장에서는 불가능한 거죠.
    그리고 이글은 서로 반대되는 의견의 2글을 대비시켜서 적은 것의 1탄입니다. 이글을 보고 반감들을 충분히 많이 가지셨다면, 경영자들이 개발자를 어떤 식으로 보고 있는지 충분히 이해를 하셨으리라고 봅니다. 이 글은 경영자 View에서는 사실입니다.
    수학을 잘하면 똑똑한 개발자가 될 가능성이 높은 것이고, 필요 충분 조건은 아닙니다. 그리고 그 반대되는 의견이 다음글에 있으니 잘 보시죠.

    답글삭제
  19. 경영자의 한사람으로써 동의합니다. 이런 비밀을 공개하시다니... ㅎㅎㅎ

    답글삭제
  20. 전경헌 사장님 안녕하세요.
    항상 블로그 잘 보고 있습니다. 경영 마인드가 없는 개발자들은 이 글에 대해서 반감을 많이 느끼는 것 같습니다. 오히려 경영자가 이런 개발자들과 똑같이 완전 개발자 마인드라면 회사 경영이 어렵겠지요.
    전사장님은 잘 이해해주시네요.

    답글삭제
  21. 저는 개발자는 수학뿐만이 아니라 국어도 잘해야한다고 생각합니다.
    결국, 코드라는 것은 자기의 생각을 표현해내는 것이기 때문에, 표현력이 요구된다고 생각하구요. 또 훌륭한 표현력은 다른 사람들과 공유할 수 있는 산출물 작성에도 꼭 필요하기 때문이죠.
    현장에 있다 보면 많은 분들이 이런 점은 간과하시는 거 같더라구요.

    답글삭제
  22. 안녕하세요. 마이님
    동감입니다. 조엘도 글을 잘 못쓰는 개발자는 뽑지 않는다고 했죠.

    답글삭제