[이코노믹리뷰=전현수 기자] 게임 프로그래머가 되려면 어떤 준비를 해야 할까? 게임 프로그래머를 꿈꾸는 많은 사람들이 품는 질문이지만 인터넷 검색을 통해 찾을 수 있는 정보는 한정적이다. 이런 고민을 하고 있는 사람들을 위해 넥슨코리아 프로그래머가  NDC(넥슨 개발자 컨퍼런스) 연단에 섰다.

넥슨코리아 데브캣스튜디오 프로젝트 DH팀 서버 프로그래밍을 담당하고 있는 윤석주 프로그래머는 24일 오전 판교에서 열린 NDC에서 <신입 게임 프로그래머가 되는 법>에 대해 강연했다. 프로젝트 DH 팀은 드래곤하운드를 개발하고 있다.

▲ 넥슨코리아 윤석주 프로그래머가 신입 게임 프로그래머가 되는 법에 대해 강연하고 있다. 출처=이코노믹리뷰 전현수 기자

윤석주 프로그래머는 지난 2017, 2018 넥슨 채용 설명회 ‘커리어 클럽’에서 직군 상담을 진행하며 느낀 것을 토대로 강연을 진행했다. 윤 씨는 “직접 채용 정보를 인터넷에서 찾아보니 정보가 그리 많지 않고, 학원 광고가 많으며 단순히 포트폴리오를 준비하라는 추상적 답변이 많았다”면서 “현업 전문가가 바라보는 시각으로 정보를 제공하면 좋을 거 같았다”고 발표에 오른 이유를 밝혔다. 

현업에서 뛰는 실무진들로부터 나온 정보이기 때문에 신뢰도는 높다고 할 수 있다. 다만 발표 내용은 발표자 개인의 주관이 들어갔으며, 넥슨코리아의 채용 관련 공식 입장은 아니라는 설명이다.

이날 발표 내용은 넥슨코리아 채용 면접관을 인터뷰했고, 이를 기반으로 초안을 정리한 후 넥슨 직원들의 검토와 피드백을 받아 준비됐다. 준비에는 프로젝트 DH 팀원들, 데브캣 스튜디오, 왓스튜디오, 넷게임즈 MX 스튜디오 직원들이 도움을 줬다. 

윤석주 씨는 이날 게임 프로그래머가 되는 방법으로 크게 ▲게임 개발에 필요한 전산학 지식 습득 ▲본인의 전문 분야 준비와 결과물 표현 ▲프로젝트 진행 중 얻은 의사 결정 경험 공유를 꼽았다. 

이력서·자소서는 ‘프로젝트 경험’이 중요

우선 서류심사는 이력서와 자기소개서, 포트폴리오로 판단이 이루어진다. 이력서와 자기소개서에서 면접관들이 지원자들에게 원하는 것은 프로젝트 경험이다. 개인적으로 연구한 분야를 어필하면 좋다. 팀 프로젝트였다면 주어진 과제와 과제 해결을 위해 사용했던 기술을 말하면 된다.

개발자 채용은 운영되고 있는 팀에서 필요한 인력과 어느 정도 부합하는 지가 중요하다. 예를 들어, ‘퍼즐주주’ 프로젝트는 다양한 수요에 대응하는 것과 서버 비용을 최소화 해야한다는 큰 목표가 있었고 이를 기반으로 인원을 뽑았다. 즉, 지원 프로젝트의 목적을 파악하고 그 부분을 공략하는 것이 중요하다. 

프로젝트에서의 의사결정 관련 경험을 공유하는 게 도움이 된다.  예를 들어, 프로젝트 중 일정이 부족했을 때 직면한 위기를 해쳐나간 방법이라던가, 구현하기 어려운 목표가 주어졌을 때 어떤 식으로 대응했는지 등이다. 현업에서도 비슷한 의사 결정을 통해 업무가 진행되기 때문에 이런 경험을 공유하는 게 효과적이라는 설명이다. 

자기소개서에 지원자의 관심 분야를 적는 게 좋다. 예를 들어, 머신러닝에 관심이 있어서 그를 이용해 무엇을 해봤다고 말하는 것이다. 

그러나 게임 개발 관련 관심사가 아니어도 개인이 가진 열정적인 취미를 언급하는 것도 면접관들에게 관심을 살 수 있다. 당장의 기술적인 능력도 좋아하지만 업무 외적인 관심사도 지원자 파악에 도움을 주기 때문이다.

포트폴리오 작성은 ‘알아볼 수 있도록’ 링크 활용도 추천

포트폴리오를 작성할 때 주의할 점이 있다. 윤석주 씨는 “많은 면접관들이 알아보기 힘들도록 구성된 포트폴리오에 불만을 품는다”고 지적했다. 예를 들어, 팀 프로젝트의 경우 지원자 본인이 작업한 부분을 제대로 표시하지 않았다거나, 경력직의 경우 다른 회사에서 작업한 프로젝트 소스가 있는 식이다. 

첨부 파일의 형식도 가끔 걸림돌이 된다. EXE 파일은 회사 정책상 PC에서 실행하기 힘든 경우도 종종 있다. 

본인이 작성한 코드를 잘 전달하는 방법으로는 본인이 작성한 코드를 잘 읽히도록 깃허브 프로젝트 링크를 보내준다던가, 오픈 소스에 기여한 부분을 링크를 보여주는 방법이 있다. 본인이 작업한 코드의 위치와 설명을 덧붙이는 것도 방법이다. 

동영상을 준비하는 것도 좋은 방법이다. 예를 들어, 지원자가 작업한 부분을 유튜브에 업로드하고 영상 링크를 보내준 뒤 작업을 위해 구현한 코드를 설명하는 것이다. 

단순히 결과뿐만 아니라 과정에 대한 설명이 포함되는 것도 좋다. 시행착오가 발생했을 때 의사 결정 과정 등을 공유하는 식이다. 

자기소개서와 프로젝트 관련 노하우를 정리하면, 지원자는 기술과 의사 결정 경험을 공유하고 관심 분야와 하고 싶은 역할을 표현하는 게 좋다. 포트폴리오의 경우 본인이 작업한 분야를 명확히 표현하고 면접관이 알아볼 수 있는 형태로 준비해야한다. 

온라인 코딩 테스트는 문제 미리 풀어보는 게 중요

과제심사(온라인 코딩 테스트)에 대한 노하우도 공유했다. 윤석주 씨는 “이 과정은 넥슨 뿐아니라 대부분의 개발사들이 실시하는 과제이며, 처음엔 당황해서 실력 발휘가 어려울 수 있으므로 미리 관련 문제를 풀어보며 준비하는 게 좋다”고 말했다. 그는 문제 풀이 연습을 위한 사이트로는 ‘NYPC 공개 문제’와 ‘카카오 공채 코딩 테스트’, 그리고 ‘백준 온라인 저지’를 추천했다. 

시간이 지나도 변하지 않는 ‘전산학 지식’의 중요성

직군면접은 게임 프로그래머 직군의 능력을 평가하는 자리다. 이는 게임 엔진 외에 전반적인 전산학 지식을 폭넓게 요구한다. 그럼 프로그래머가 되기 위해 뭘 알아야하나?라는 질문이 따라온다.

윤석주 씨는 본인이 맡고 있는 프로젝트인 ‘드래곤 하운드’를 예를 들어 설명했다. 드래곤 하운드는 언리얼엔진을 사용하기 때문에 그래픽스 관련 지식이 필요하다. 3D행렬, 카메라, 좌표계, 렌더링 파이프라인, 관련 수학 지식 등이다. 엔진에서 쓰이는 C++에 대한 지식과 상속, 다형성, 가상함수 등 OOP 개념, 템플릿, STL 등이 필요하다. 

메모리관련 지식으로는 스택, 힙, 메모리 풀 등이 필요하다. 드래곤 하운드는 실버바인서버엔진2를 사용하고 있다. 이를 위해 VM, GC 등 C#에 대한 이해가 필요하다. Thread, Microthread 등도 서버 여러 개의 요청을 동시에 처리하기 위해 필요하다. DB 관련 지식도 있어야 한다.

이중 최소한으로 필요한 부분은 C++와 C#, 그래픽스, 네트워크, 알고리즘, 자료구조, DB 클라이언트 동기화, Thread 등이 필요하다. 

그는 “너무 많은 것이 필요한 게 아닌가 하는 생각이 들 수도 있지만, 엔진 관련 지식이 몇 년 지나면 바뀔 수 있는 반면에 기초가 되는 전산학 지식은 변하지 않는다”면서 “소프트웨어 개발은 기초 지식을 모르면 만들기가 힘들다”고 말했다. 

전산학 공부를 위한 방법으로는 책을 추천했다. 그는 “책은 중요도가 높은 지식을 잘 정리해 놨다”면서 “책에서 습득한 지식을 기반으로 실습을 진행하고 본인의 지식으로 만드는 과정이 필요하다”고 말했다. 

추천 책으로는 알고리즘 부문에서는 <C로 배우는 알고리즘> 언어에선 <Effectv C++>, <C# in Depth>, <Inside C#>을 추천했고, 그래픽스에서는 <DirectX 11>을 꼽았다. 다만 이 책은 절판됐기 때문에 종고로 구입해야한다. 면접대비를 위해서는 <프로그래밍 면접 이렇게 준비한다>를 추천했다.

아래로는 윤석주 프로그래머가 넥슨 채용 설명회에 참여하며 가장 많이 받을 질문들

저는 언리얼하는데 유니티 배워하나요? 저는 유니티 하는데 언리얼 배워야 하나요?
- 팀마다 다르지만 엔진 경험을 선호하는 팀도 있다. 직군 면접에는 영향이 크지 않다. 게임 프로그래머 직군 능력을 평가하는 자리기 때문이다. 다만 엔진 지식을 배우면 실무 적응에 도움 많이 되는 걸 직접 경험했다. 

저는 직군면접에서 탈락했는데 포트폴리오를 더 잘 준비해야 하나요?
- 직군 면접에서 탈락했다면 다시 직군 면접을 준비하는 게 좋다. 직군 면접에서 탈락한 이유가 포트폴리오 미흡 때문은 아니기 때문이다. 각 단계별로 평가 기준이 다르고 해당 면접을 통과했다면 그 단계의 평가 기준은 통과했다고 보면 된다.

면접에서 떨어졌는데 실력이 없는 건가요?
- 만약 서류나 팀 면접에서 떨어졌다면 단순히 해당 팀에서 현재 필요로 하는 인재상과 맞지 않을 뿐이다. 너무 낙담하지 않아도 된다. 다만 과제 심사나 직군면접에서 탈락하면 절대적인 평가 기준이 부족한 것이기 때문에 실력을 더 쌓아야 한다.