2009년 12월 2일 수요일

개발자 뽑기 - 코딩테스트 문제내기

개발자 뽑기 - 코딩테스트 문제내기

SW개발회사에서의 자산은 개발자와 프로세스라는 분들이 있습니다, 무슨 소리냐 개발은 문화 , 기술(시스템)이 자산 아니냐 뭐 이런 분들도 있을 수 있겠습니다. 어쨌던 개발회사에서 개발자는 중요한 존재임에는 분명합니다. 그래서 오늘은 이러한 개발자 채용에 관한 방법을 이야기 해보고자 합니다.

관심있게 보는 AllOfSoftware ( allofsoftware.net ) 블로그에도 최근에 "뛰어난 개발자 ~" 라는 주제로 씨리즈글이 올라와 있던데  사실 뛰어난 개발자를 가려내기는 정말 쉽지 않습니다. 특히 아주 짧은 순간의 채용 면담(질문/답변)으로 개발자들의 기본 자질을 가려낼 수 있다는 말은 사실 거짓에 가깝습니다. 코딩을 해보게 하고 그 내용을 평가해 보는 것이 직접적이고 확실한 방법이라고 생각합니다. 하지만 여러가지 이유로 이러한 사전테스트에 응하지 않는 개발자도 많고 , 특히 중소개발업체는 채용에 응하는 개발자 자체가 거의 없는 것이 현실이기 때문에 이런 테스트를 거친다고 한다는 상황이 말도 안되는 소리일 수 있습니다.
그렇지만 코딩테스트를 해본 사람의 경험으로서 말씀드리자면 , 가능하다면 , 되도록이면 , 반드시 진행 해 보시라고 권하고 싶습니다. 채용 공고등에 관련 절차에 집어 넣는 것도 방법일 것입니다.


아래는 제가 '06년도에 개발하고(?) 사용했던 , 코딩테스트 문제가 들어 있는 기술력 평가지 입니다.
일종의 시험을 보는 것입니다.

=====================================================================================================

1차 면접 / 기술력 평가 시트

일자        : 2006년   월   일  
지원자 성명 :
평가자 성명 :

1. 네트워크
   OSI 7 Layer 에서 TCP / IP 가 차지하는 Layer는 어디 어디인가 ?
   OSI 7 Layer 에서 Physical 에 해당하는 요소들은 어떤 것들이 있는가 ?
   DataLink 층을 이루는 네트워크 표준들은 무엇이 있는가 ?

   기준 ) 각 문항에 대한 2가지 이상의 답을 제시해야함


2. 데이타베이스
   프로그램 코드에 SQL이 내장된 채로 구현된 시스템과 이를 별도로 분리한 시스템의 장단점을
   시스템 구축과 유지보수의 관점에서 설명하라 !

   기준 ) 답변의 타당성


3. 코딩테스트 결과 설명 : 문제파악 , 알고리즘설명

    기준 ) 본인이 작성 한 것인가 ?  문제를 정확히 파악했는가 ? 답은 맞는가 ?


비중 30 % :           /  30


4. 주요 프로젝트 경력에 관한 정확한 기술 : 이력서에 있는 내용중에서 본인이 맡은 부분을 정확히 기억하여 설명하라

    기준)  과거 프로젝트를 잘 기억하고 있으며 활용이 가능한 기술인가 ?


5. 구현된 시스템의 본인 담당 부분에서 장애가 발생했다면 어떠한 순서로 조치를 취하고자 하는가 ?

   기준 ) 프로젝트의 상황에 맞는 조치를 취하였는가 ?


비중 40 % :           /  40


6. 코딩테스트

   가. 확율을 구하는 프로그램을 만드는 것이 목적임

   나. 입력 : Command Line ( Dos , Unix , ... ) 에서 1< 자연수 * 2 < 23  짝수를 입력 받음

   다. 처리 제약사항
        - 입력으로 받은 짝수는 사람의 숫자이다.
        - 그 숫자의 절반인 사람은 500원을 가지고 500원짜리 과자를 사려고 한다.
        - 나머지 절반의 사람은 1000원을 가지고 500원짜리 과자를 사고 , 500원을 거슬러 받으려고 한다.
        - 과자를 파는 곳이 단 한군데 뿐이라서 과자를 사려는 사람은 일렬로 줄을 서서 순서를 기다렸다 과자를 사야한다.
        - 과자를 사는 사람들이 일렬로 줄을 서는 순서는 일정한 규칙이 없다.
        - 과자를 파는 사람은 최초에는 거슬러 줄 돈이 하나도 없다.
        - 과자를 파는 사람은 거스름돈이 없으면 더이상 과자를 팔 수 없다.

    라. 출력
        - 입력받은 사람들이 전부 과자를 살 수 있는 확율  
        - 범위 / 유효숫자 : 0.0000 <= 실수 =< 1.0000

    마. 기타 제약
        - 위의 문제를 푸는 방법은 "반사의 법칙"을 이용한 공식이 있으나 이를 이용해서는 안된다.  
        - 코딩의 상단 부분에 문제에 대한 이해 , 접근 방법 , 주요 알고리즘을 기술할 것

비중 30 % :           /  30


1차 면접 : 기술력 종합 평점 :        / 100    -->     S     A     B    C    D

=====================================================================================================

6. 번의 코딩테스트 문제는 면접진행 전 1주일 전에는 이메일로 전달이 되어야 합니다.
어떤 개발자는 반나절만에 답이 오기도 했지만 결과가 안 좋았습니다.

코딩테스트 결과 메일에서 보셔야 될 부분은 다음과 같습니다.

1. 실행이 되는가 ?
2. 사용자 입력 이후 실행 시간은 얼마나 걸리는가 ?
3. 소스코드에 comment 는 적절히 사용하는가 ?
4. 에러처리는 적절하고 실행중간에 오류는 없는가 ?
5. 알고리즘은 어떤 것을 사용하였는가 ?
6. 입력 값이 증가 함에 따라서 실행 시간이 증가하는 비율은 어떤가 ?
7. 함수,메소드 분리는 적절한가 ?
8. 코딩컨벤션은 적용이 된건가 ?

면접시에는 이러한 부분들에 대한 개발자의 의견을 물어 보는 것도 좋은 방법이 될 것입니다.
채용시에 개인의 배경이나 인성을 중시하는 분들도 있는데 , 물론 이런 부분도 중요하지만
개발은 엄연한 현실이고 개발자는 요구분석, 설계, 코딩을 잘해야 합니다.

댓글 3개:

  1. 어려운데요! 제가 면접자가 아닌게 다행이네요. ^^

    답글삭제
  2. 전규현님도 한창때 이 정도는 문제 없었을 것으로 생각됩니다. *.*

    개발자들이 원래 로직이나 알고리즘에는 강하지 않습니까.

    답글삭제
  3. 엇뚜아 언젠가 본 문제인듯하다... 땀나네....

    답글삭제