2008년 12월 19일 금요일

개발자 채용 시 코딩테스트를 하시나요?

연기자나 가수를 뽑을 때 오디션을 보듯이 개발자를 채용할 때는 코딩테스트가 꼭 필요합니다.
하지만 코딩테스트를 하지 않고 채용하는 경우가 매우 흔합니다.
이력서를 통해서 그 개발자가 과거에 참여했던 프로젝트가 무엇인지 보고 인터뷰에서 이거 저거 물어보는 것만 가지고는 개발자의 실력을 평가하기는 아주 부족합니다.
코딩 테스트는 다음과 같이 3가지 타입으로 진행할 수 있습니다.

첫째, 인터뷰를 하기 전에 E-mail을 통해서 코딩테스트 과제를 전달할 수 있습니다. 
이때는 시간이 반나절이나 하루 정도 걸리는 과제를 줄 수 있고 꽤 많은 내용을 점검할 수 있습니다.
단순히 로직 뿐만 아니라 코딩 습관, 최적화 시도, 소스트리, 빌드 스크립트 등 다양한 실력을 엿볼 수 있습니다.
1차에 끝나는 경우도 있고, 시험대상자가 너무 많으면 1,2차에 걸쳐서 1차에서는 기본적인 과제로 기본 이하의 개발자를 거르고 2차 과제에서 진짜 문제를 낼 수도 있습니다.
이 테스트의 단점은 다른 사람이 도와줄 수 있는 것입니다. 대부분의 경우 본인 스스로의 힘으로 과제를 해결하지만 실력이 좋은 사람이 도와 줄 경우 이를 확인하기 어려우므로 인터뷰 시 몇몇 내용을 확인하는 것이 좋습니다.
예) Caching 알고리즘 구현

둘째, 인터뷰를 하는 날 인터뷰를 하기 전에 코딩테스트를 하는 것입니다. 인터뷰 전에 약 한 시간 정도면 풀 수 있는 과제를 주고 코딩을 하게 하는 것입니다. 노트북을 준비해 오게 해서 인터뷰 전에 코딩을 시키고, 인터뷰 시 발표를 하게 하는 방법입니다. 실력을 적나라하게 볼 수 있는 좋은 방법 중에 하나입니다.
예) Quick sort 알고리즘 구현

셋째, 인터뷰 시 칠판에 간단한 코딩 과제를 풀게 하는 겁니다. 약 10분이면 풀 수 있는 간단한 문제여야 하고, 이 때는 개발자가 최소한 논리적인 사고를 하는지 점검할 수 있습니다. 사실 코딩 인터뷰를 시도해보면 이 10분에서도 각 개발자들이 엄청나게 많은 차이를 보입니다. 일반 인터뷰 질문으로는 확인할 수 없는 수많은 것들을 여기서 파악할 수 있습니다.
예) itoa함수 구현, strtok 함수 구현 

위 3가지 방법은 모두 효과가 있기 때문에 회사의 상황이나 규모 등에 따라서 적절히 선택을 하면 되겠습니다. 

코딩테스트는 추가 비용 거의 없이 개발자의 실력을 구분할 수 있는 좋은 방법입니다. 아주 뛰어난 개발자를 판단하기는 어려울 수 있어도 형편 없는 개발자는 잘 걸러 낼 수 있습니다.

과거의 경험에 대해서 얘기를 들어보면 경력만 보고 채용을 했다가 아주 쉬운 코딩도 믿고 맡기기 어려운 경우가 많더군요. 코딩테스트는 이러한 것을 막아줄 좋은 수단입니다.

댓글 9개:

  1. 이전에 포스팅했듯이 여전히 직장을 찾는 상태입니다. 그 와중에 우연히 싱가폴 주재 회사와 컨택을 하게 되었는데 이력서를 보고는 프로그래밍 퀴즈를 보내 오더군요. ACM이나 구글 코드 잼 스타일의 '특수상황을 기발하게 수학적으로 해결'해야 하는 그런 문제는 아니었습니다. 첫번째 문제는 string rotation 함수를 짜는 거였죠. ("abcd", 1)로 호출하면 "dabc"로 리턴되는 뭐 그런 거요. 제약사항이 몇 가지 있었는데 인자로 넘겨주는 문..

    답글삭제
  2. 트랙백도 남겼습니다만...
    제가 그동안 면접도 꽤 많이 봤는데 국내 회사 중엔 '다음 코드의 결과값은?' 하는 정도의 필기 문제는 있었어도 실제 코딩 테스트를 하는 데는 없었던 것 같습니다.
    프로팀에서 투수를 뽑는데 피칭을 안 시켜 보는 것과 마찬가지겠죠? -_-;

    답글삭제
  3. Eminency님 안녕하세요.
    코딩테스트를 하는 회사가 있기는 합니다. 하지만 그리 많지는 않은 것 같습니다.
    대학을 막 졸업한 새내기는 그런 간단한 문제가 도움이 될지는 몰라도 경력 개발자는 제대로된 코딩테스트가 꼭 필요합니다.

    답글삭제
  4. 이번에 이직한 회사는 두 번째, 세 번째 모두 테스트를 했고, 임원면접때 또 물어보더군요. 잘 코딩을 했긴 했는데, 왜 그렇게 했는지 다시 설명해 보라고... "코딩습관 때문에 그렇게 했다" 라고 해서 떨어질법 했는데, 통과해서 4개월째 잘 다니고 있답니다.

    그런데, 개발프로세스가 거의 없고 너무 약했습니다. 팀단위조차도... 그래서 슬슬, 혼자서 환경구축해서 쓰면서 전도나 할까 합니다. ㅎㅎㅎ 말로 하는 것보다 직접해서 구경시켜주면서 장점을 얘기해야겠지요. 근데, 힘들어요. ㅎㅎ

    답글삭제
  5. 코더를 뽑으셔야지 ㅋㅋ 개발자가 다 코딩에 중점이 아니라 업무의 프로세스 즉
    거기에 맞게 개발을 하는거지 ㅋㅋㅋ 코딩이 중심이라 ㅋㅋㅋ 코드도 누구의 기준인지?
    어디까지의 업무의 코더 인지 유닉스쪽 아닌 이상 자기가 아는 한에서 얼마든지 응용이 가능한거지 서핑하다가 드렸는데 조금 웃겨서 글을 남겨봄

    답글삭제
  6. 개발자라면 코딩은 기본적인 요소이고 코딩 테스트는 코딩 능력만 보지는 않습니다. 그래서 Syntax보다는 로직이나 창의력 등 문제 해결 능력을 위주로 봅니다.
    댓글을 보니 개발자가 아닌 것 같네요.

    답글삭제
  7. 언행이 그 사람의 사람됨을 보여주듯, 코드는 프로그래머의 기본을 보여주는 좋은 지표인 것은 맞습니다. 모든 생각이 말로 구체화되듯 모든 로직은 코드로 구체화되니까요. 자신은 설계만 하고 코딩은 맡긴다 라고 해도, 자신이 코딩 능력이 떨어지면 제대로 관리가 되지 않습니다.

    답글삭제
  8. 저희 회사는 신입을 뽑을 때 코딩 테스트를 합니다. strcpy(), itoa() 이런 건 기본적으로 할 줄 알겠지 했는데 실제로 보면 정말 너무 절망적입니다. 중고등학교 수준의 간단한 수학 문제도 몇 번 내 봤으나 역시 절망적이더군요. 대기업이나 돼야 쓸만한 인재를 구할 수 있는 것일까요.ㅎㅎ

    답글삭제
  9. 안녕하세요. sirius님

    개발자 채용에 코딩테스트는 기본이고 코딩 테스트를 통해서 많은 것을 알 수 있습니다.

    답글삭제