[NDC16] 소프트웨어엔지니어는 끊임없는 배움 필요

게임입력 :2016/04/28 13:51    수정: 2016/04/28 13:52

“현재의 상황이 중요한 것이 아니라 배움을 통해 발전하고 있는 지가 더 중요하다”

28일 넥슨의 박종천 플랫폼본부 부본부장은 ‘게임 소프트웨어 엔지니어가 되려면’이라는 주제로 성남시 판교 넥슨 사옥에서 열린 넥슨 개발자 컨퍼런스 2016(NDC16)에서 발표했다.

박 부본부장은 먼저 영어의 중요성을 강조했다. 국내 검색만 가능한 네이버와 전 세계의 정보를 얻을 수 있는 구글에서 검색하는 결과는 천지 차이라는 것이다.

넥슨 박종천 플랫폼본부 부본부장.

게임개발은 프로듀서, 아티스트, 기획자, 엔지니어, 비즈니스 매니저, QA 등의 업무로 나뉘며 이중 아티스트, 기획자, 엔지니어가 실제 개발에 주로 참여하다.

박 부본부장은 아티스트는 이미지로 고객을 끌어오는 역할을 담당하며 기획자는 게임의 구조를 만들어 성공을 만드는 사람이라고 설명했다. 그리고 엔지니어는 기획자와 아티스트가 만든 것을 구현하는 역할을 담당한다.

엔지니어는 소프트웨어, 시스템, 데이터베이스, 클라우드로 나눠진다. 이중 소프트웨어 엔지니어는 게임 내에서 실제 구현되거나 관련 기술을 개발하는 것을 의미하며 다시 클라이언트와 서버, 툴, 플랫폼 엔지니어로 나눌 수 있다.

클라이언트는 그래픽, 엔진, 게임플레이 등 실제 게임에서 보이는 부분을 담당하며 서버는 네트워크와 온라인 서비스를 담당한다.

툴을 개발의 편의를 위한 기능을 제작하는 것으로 이를 활용해 기획자나 아티스트가 직접 게임 콘텐츠를 제작하거나 테스트할 수 있다. 플랫폼은 다수의 게임을 개발한 후 론칭할 때 로그인, 결제 시스템 등 공동으로 쓰이는 기능을 한 곳에서 제공하기 위한 기능이다.

소프트웨어 엔지니어의 분류.

소프트웨어 개발자도 맡은 업무에 따라 배워야 할 기술이 달라진다. 클라이언트는 유니티엔진의 기반인 C#과 언리얼엔진의 C++, 다이렉트X, iOS, 안드로이드 SQL 등을 주로 배워야 하고 네트워크를 담당하는 서버는 C++과 소켓, 파이선, RESTfil/APS.net, 자바, SQL 등을 학습해야 한다.

또한 툴은 C#, 파이선, 젠킨스, SQL을 주로 사용한다. 그리고 플랫폼은 자바스크립트, 자바 등을 쓰이고 있다.

현재 스택오버플로우 소프트웨어 엔지니어 서베이 결과는 자바스크립트와 자바가 가장 많이 쓰이는 프로그래밍 언어이며 이어서 파이선, C#, PHP 등이 쓰이는 것으로 나타났다.

박 부본부장은 어떤 언어를 쓰는지도 중요하지만 그보다 더 중요한 것은 기초가 더 중요하다고 강조했다.

미분과 적분 등 수학, 물리를 비롯해 소프트웨어가 무엇이고 데이터 구조와 알고리즘 디자인 패턴이 어떻게 구성돼 있는지 알고 있어야 함 OS도 윈도우가 어떻게 구성되고 메모리 할당이 어떻게 되는지 파일시스템은 무엇인고 인드로이드 APK 구조은 어떻게 있는지 등을 알아야 한다는 것이다.

박 부본부장는 “내가 22년간 버틸 수 있었던 이유도 기초를 튼튼하게 공부했기 때문이라고 생각한다”며 “공부할 것이 많은 만큼 어떻게 빨리 배울지 기술을 배워야 한다. 자신이 기민해지는 스타일을 익혀야 한다”고 조언했다.

소프트웨어 엔지니어에게 필요한 기반 지식.

이어서 그는 “그리고 문제를 해결할 때 단순히 일을 마치는 것이 아니라 필요한 것이 무엇인지 일의 원인이 어떤 것이고 어떻게 해결했는지 다른 방법으로 해결할 수 있을지 끊임없이 생각해야 능력을 쌓을 수 있다”고 강조했다.

또한 개인이 능력을 쌓기 위해서는 학습과 함께 반복이 필요하다. 같은 프로그램을 만들더라도 다른 언어로 만들거나 다른 방식으로 개발하는 등 반복과 연습을 통해 몸으로 습득하고 노하우를 쌓아야 한다는 것이다.

이룰 위해 처음에는 간단히 돌아갈 수 있는 수준으로만 만들고 두 번째는 제대로 내부 구조를 쌓아서 만들고 마지막은 완성도를 높이고 최대한 빠르게 만드는 연습을 반복하는 것이다.

박종천 부본부장은 “기회는 재능과 연습이 뒷받침돼야 잡을 수 있다”며 “자신이 무엇을 잘하고 좋아하는지 찾은 후 이를 반복 연습으로 습득을 해야 기회를 얻을 수 있다”고 말했다.

관련기사

엔지니어가 주로 사용하는 언어.

그는 회사에 입사하기 위해서는 수학, 물리와 프로그래밍의 기초 지식을 단단히 준비하는 것이 중요하다며 개인적으로는 빠르게 배울 수 있고 부지런하며 선한 사람을 뽑으려 한다고 말했다. 이어서 입사 후에도 팀 내의 사이클을 알아야 하고 팀원들이 어떤 역할을 하고 있으며 자신이 무슨 일을 담당하는지 이해해야 하고 새로운 기술을 끊임없이 배워야 한다고 강조했다.

박종천 부본부장은 “나는 사람을 배우는 사람과 그렇지 않는 사람으로 구분한다”는 벤자민 바버의 말을 인용하며 “현재의 상태는 의미가 없다. 그보다 우리가 배움을 통해 발전하고 있는지 아닌지를 중요하게 생각하고 너 나아질 수 있도록 노력하길 바란다. 이러한 노력이 모여 큰 발전이 있을 것이라고 생각한다”며 발표를 마쳤다.