본문 바로가기

칼럼

신입프로그래머에게 물어보는 것

최근에 저희 회사에서는 신입 프로그래머를 뽑았습니다. 자그마하지만, 게임개발팀의 팀장을 맡고 있다보니 신입 프로그래머를 뽑을 때 무엇을 봐야 하나를 고민하게 되죠. 면접을 보면 신입은 누구나 "아직 부족하지만 열심히 하겠습니다"라고 합니다만, 열심히 하고 싶은 것과 열심히 할 수 있는 것을, 회사 입장에서는 구분할 수 있어야 합니다.

그 사람의 의욕과 능력을 구분하기 위해서, 저희는 면접때 오랄 테스트를 보기로 했습니다. 문항을 대략적으로 7~8개의 카테고리로 나누고, 면접자가 자신있는 분야를 선택하라고 했죠. 떨어뜨리기 위한 시험이 아니라 그 사람이 뭘 할 수 있는가를 알아보기 위한 것이므로, 본인이 가장 잘할 수 있는 분야에 대해 물어보는 방향으로 정했습니다.

그 8개의 카테고리는 다음과 같습니다.
  • 시스템
  • 언어
  • 자료구조
  • 디자인패턴
  • 렌더링
  • 수학/물리
  • 게임로직
  • 네트웍

이는 게임을 만들기 위해서 필요한 대략적인 기초지식을 커버하며, 이 모든 것을 잘하는 사람을 요구하는 것이 아닙니다. 한가지라도 잘 알면 회사에서는 그에 해당하는 일을 맡기고 진행하면 되는 것이니까요. 단, 질문은 그 자리에서 당장 대답하거나 실제로 보여줄 수 있도록 명확해야 합니다. 그래야 평가가 가능하죠.

문항의 예를 들어보죠

  • 시스템 : 유니코드 문자열의 인코딩 종류를 알고 있는가?
  • 시스템 : 윈도우 동기화 객체의 종류를 알고 있는가?
  • 시스템 : 기본 메모리 할당 라이브러리의 문제점을 알고 있는가?
  • 언어 : 가상함수 테이블 메커니즘을 알고 있는가?
  • 언어 : 템플릿의 명시적 특수화와 부분 특수화를 알고 있는가?
  • 언어 : STL 펑터와 프리디케잇을 만들 수 있는가?
  • 자료구조 : 링크드 리스트를 슈도코드로 아웃라인을 짤 수 있는가?
  • 자료구조 : 주어진 코드의 시간복잡도를 Big-Oh 표기법으로 계산할 수 있는가?
  • 디자인패턴 : 널리 알려진 패턴(컴포짓,싱글톤 등)을 클래스 다이어그램으로 그릴 수 있는가?
  • 렌더링 : 그림자 렌더링 기법의 종류를 알고 있는가?
  • 렌더링 : 텍스쳐좌표 (0,0)인 스프라잇의 샘플링 오차를 설명할 수 있는가?
  • 수학/물리 : 가속도운동하는 물체의 위치를 시뮬레이션하는 적분 코드를 작성할 수 있는가?
  • 수학/물리 : 간단한 기하도형간의 충돌검출을 슈도코드로 짤 수 있는가?
  • 게임로직 : 간단한 게임의 게임스테이트 전이를 스테이트 다이어그램으로 그릴 수 있는가?
  • 게임로직 : 전형적 캐릭터의 스테이트 전이를 스테이트 다이어그램으로 그릴 수 있는가?
  • 네트웍 : 전형적 상황에서 오가는 간단한 패킷을 설계할 수 있는가?


대충 이정도입니다. 실제 준비한 문항은 위 목록의 약 2배가량입니다. 각 문항은 아무렇게나 뽑은 것처럼 보일지는 몰라도, 각 문항에서 알아보고자 의도하는 바가 있습니다. 그중에서도 "~~할 수 있는가?"로 되어 있는 문항은 화이트보드에 직접 해보라고 시킵니다. 하드해 보일 수도 있지만, 이 문항의 목적은 정답을 맞추는 것이 아닙니다. (물론 올바른 답을 내놓으면 더할나위 없지요) 그 사람이 이 분야에 어느정도 노력해 왔는지를 측정하여 앞으로 얼마나 노력할 수 있는지를 외삽하는 용도로 물어보는 것입니다.
제 입장에서는, 게임프로그래머란 이정도에는 관심을 가지고 있어야 일을 맡길 수 있다고 생각하는 쪽입니다.

'칼럼' 카테고리의 다른 글

이명박정부와 게임업계  (0) 2008.04.17
World Of Goo  (2) 2008.03.21
스톰윈드의 놀라운 비밀  (0) 2008.03.20