프로그래머도 전문성이 필요한 시대가 왔다. 백엔드, 프런트엔드부터 네트워크, AI, VR 등 다양한 프로그래밍 영역 가운데, 이번 강연을 통해 최호영 프로그래머는 '게임플레이 프로그래머'를 소개했다. 조금은 생소한 게임플레이 프로그래머는 게임 내 다양한 시스템(친구 추가, 퀘스트, 전투, 상점 등)을 포함하여, 유저들의 경험이 닿은 게임 내 모든 것을 프로그래밍한다.
최호영 프로그래머는 좋은 프로그래머가 되기 위해서 프로그래밍 언어를 잘 파악하거나, 복잡한 시스템을 잘 설계하는 것도 중요하지만, 무엇보다 '좋은 품질의 코드 작성'을 가장 중요한 요소로 꼽았다. 그는 좋은 품질의 코드야말로 프로그래머가 가장 수행하기 어렵기 때문이라 밝혔다.
대중에게 소개되는 게임의 대부분은 풍성한 시스템과 다양한 콘텐츠를 가지고 있다. 자연스럽게 프로그래머, 특히 게임플레이 프로그래머는 하나의 작업에만 집중하기 어렵다. 또, 복잡하게 연관된 게임 시스템때문에 게임의 코드를 넓게 알아야 한다. 장기간 서비스에 들어가면 지속적인 업데이트를 위해 이전 개발자가 작성한 코드까지 관리해야 한다.
프로그래머는 자신의 동료, 미래의 자신, 더 나아가 얼굴도 본 적 없는 선임자나 후임자의 코드를 보게 된다. 효율적이지 않고, 이해가 쉽지 않은 코드의 존재는 일의 효율을 떨어뜨린다. 다시 말해 '좋은 품질의 코드'는 결국 자신을 위한 선택이다.
하지만, 좋은 품질의 코드를 유지하기 위해 코드를 가독성 좋게하거나, 해당 작업에 대해 문서화를 해놓는 것은 개인 편차가 크고, 개발자가 바쁜 경우 '이 정도면 충분해'라며 스스로와 타협하게 된다. 해결하기 위한 다양한 시도와 방법이 있겠지만, 최호영 프로그래머는 왓스튜디오에서 진행하고 있는 '코드 리뷰'를 추천했다.
코드 리뷰는 개념 자체는 단순하다. 자신이 작업한 코드를 남이 보며 피드백을 제공하는 과정이다. 그렇다면 코드 리뷰를 통해 얻는 이점은 무엇일까? 최호영 프로그래머는 ▲ 코드의 가독성에 해가 되는 부분 자각 ▲ 좋은 코드를 위한 자발적인 의지 유도 ▲ 팀의 일관된 코딩 스타일이 자연스럽게 형성을 꼽았다.
특히, 맥락을 알 수 있는 자연스러운 문서화를 코드 리뷰의 가장 큰 이점으로 말했다. 단순 문서화 과정은 전후 맥락을 파악하기 쉽지 않다. 하지만 코드 리뷰는 리뷰이(리뷰 당하는 사람)와 리뷰어(리뷰 하는 사람)가 작업에 대해 논의하는 '과정 그 자체'이기 때문에 맥락을 자연스럽게 파악할 수 있다. 일반적으로, 리뷰 요청, 코멘트부터 그에 따른 응답과 개선 사항이 온전하게 기록에 남는다.
좋은 코드 리뷰를 위해서는 몇 가지 규칙이 필요하다. ▲ 간결하고 건조한 피드백 ▲ 리뷰어의 취향과 팀의 표준을 명확하게 구분 ▲ 오타와 같은 작은 실수는 미리 수정 하여 의견을 주고받는 과정을 최소한으로 줄이고 효율적으로 만든다. 형식적인 리뷰 코드 진행을 피하고, 리뷰어의 집중을 방해하지 말아야 한다. 덧붙여, 리뷰를 단순히 기다리면 자신의 개발 작업 속도가 느려지기 때문에 여러 개발 과정을 동시에 진행하는 '투 트랙(two track)'으로 작업을 구성해야 한다.
최호영 프로그래머는 코드 리뷰 경험이 없다면, 오픈 소스 프로젝트를 통해 직접 참여하거나 다른 사람의 과정을 살펴보는 것으로 시작하는 것도 하나의 방법이라 밝혔다. 또, 취미와 같이 가벼운 프로젝트부터 시작해도 좋으며, 여러 명이서 하는 함께 프로그래밍하는 '페어 프로그래밍' 역시 일종의 코드 리뷰라며 추천했다.
최호영 프로그래머가 밝힌 왓스튜디오의 코드리뷰 과정은 굉장히 구체적이었다. 왓스튜디오는 코드리뷰 도구로 버전관리 프로그램 '깃(Git)'과 위키 기능 있고, 이슈 추적이 쉬운 '깃랩(GitLab)'을 이용했다.
해당 도구를 이용하면, 가상 공간 상에서 공용 작업 공간과 개인 작업 공간이 분리가 된다.(개발 버전이 다르다.) 개발자 개인이 각자의 작업을 한 뒤, 공용 작업 공간에 반영하는 과정을 '머지(merge)'라고 한다. 관리자에 이런 머지를 반영해달라 요청하는 과정을 '머지 리퀘스트(Merge Request)', 줄여서 MR이다. 왓스튜디오는 MR 단위로 코드 리뷰를 진행한다.
왓스튜디오에는 리뷰이와 리뷰어, 각 역할에 맞는 리뷰 코드 양식이 있다. 리뷰를 원하는 개발자는 구체적인 제목과 의도를 반드시 포함하여 양식에 맞는 MR을 준비한다. 리뷰어 역시 양식에 이미 포함된 체크리스트를 통해 효율적으로 리뷰를 진행한다.
이 과정에서 자연스럽게 리뷰어와 리뷰이의 코멘트와 피드백은 코드 리뷰 도구에 남게 된다. 이때, 피드백이 필요한 라인에 직접 피드백을 주며 공격적이지는 않지만 건조하고 직설적으로 남긴다. 피드 코드가 종료된 이후에는 리뷰어, 리뷰이, 그리고 담당 프로그램 매니저(PM)의 머지 승인이 진행된다.
콘텐츠가 많은 유저 입장에서 게임의 업데이트를 오랜 기간 기다려주지 않기에, 개발자에게 빠른 개발 속도는 중요한 요소가 됐다. 프로그래머 개인이 전체 개발 속도를 정할 수는 없겠지만, 최호영 프로그래머는 적어도 '약속된 개발 기한을 지키는 일'이 게임 프로그래머에 요구된다고 말했다.
프로그래머 내부적 요인(잘못된 개발 설계, 개발 분량 예측 실패 등)은 언제나 발생할 수 있는 문제지만 어느 정도 통제할 수 있다고 왓스튜디오는 생각했다. 앞서 말한 코드 리뷰 자체는 '개발 후 과정'이기 때문에, 개발 전 올바른 개발 방향 설정에 큰 도움이 되진 않는다.
초기의 왓스튜디오는 게임 디자이너의 작업을 받은 개발자가 '기술 명세서'를 통해 동료 프로그래머에게 리뷰를 받는 과정을 도입했다. 하지만, 프로그래머는 글을 잘 쓰는 직업이 아니었고, 프로그래밍만으로도 작업량이 많아 부담이 되었고 결국 대규모 사업에만 사용하게 됐다.
현재 왓스튜디오는 글 대신 말을 통해 지연 과정을 최소화한다. 정기적으로 짧은 미팅을 진행하고, 디테일하지는 않지만 자신이 어떤 일을 하는지, 어떤 일정으로 진행되는지 구체적으로 설명하고 동료에게 피드백을 받고 있다. 간혹 이런 과정이 길어지게 된다면, 관계자만 따로 긴 미팅을 진행하여 효율성을 유지했다.
최호영 프로그래머는 무엇보다 자신의 작업을 동료가 알게 하는 것이 강조했다. 그는 모든 사람은 실패를 하지만, 프로그래머가 자신이 지연된 개발 일정을 숨긴다면 게임 전체에 더 큰 일정 지연을 야기한다며 경고했다. 또, 언제나 자신의 생각이 완벽하지 않는 마음 아래 일정에 대한 피드백을 열린 마음으로 수용하라고 말했다.
넥슨을 포함한 많은 게임 개발사에서 개발자에게 필요한 능력으로 '소통(커뮤니케이션)'을 최우선으로 꼽는 이유가 무엇일까. 개발자는, 특히 게임플레이 프로그래머는 유저 입장에서 게임을 설계하는 게임 디자이너와 협업 때문이다.
게임 프로그래머와 게임 디자이너는 함께 게임을 완성시키지만, 두 직군이 바라보는 게임에 대한 관점은 달라도 너무 다르다. 프로그래머 입장에서는 디자이너가 ▲ 구현이 어려운 게임플레이 요청 ▲ 짧은 일정 내에 큰 규모 작업 요구 ▲ 예외 상황 등에 대한 고려가 없는 디자인 설계 문서 등을 요구하면 프로그래머 상식 선에서 이해가 되지 않아 불만이 쌓이기 십상이다.
하지만, 디자이너는 프로그래머가 아니기 때문에 당연히 알기 어렵다. 실제로, 실력 있는 프로그래머도 게임의 코드를 봐야 해당 게임에서 구현이 가능한지 아는 마당에 디자이너가 알 수 있을 리가 없다.
여기서 게임플레이 프로그래머의 역할이 중요하다. 많은 프로그래머는 디자이너의 답답한 제안을 단순히 거절한다. 하지만, 배경지식이 부족한 디자이너에게 역제안을 하여 새로운 가능성을 만드는 방법도 있다. 프로그래머가 직접 디자이너에게 게임 내 구현이 어렵다면 그 이유를 말해주고, 작업 규모에 따른 필요한 일정을 설명하며, 디자인 설계 문서의 논리적 허점을 말해주며 함께 완성도가 높일 수 있다.
최호영 프로그래머는 게임플레이 프로그래머에게 가장 중요한 역할로 디자이너의 '조언가' 역할이라 말했다. 함께 게임의 완성도를 위해 노력해야 하며, 그렇게 진행되기 위해서 게임 프로그램적 구성에 대해 더 잘 알고 있는 게임플레이 프로그래머가 명확하게 디자이너에게 요구해야 한다고 강조했다.
그리고 디자이너와 게임은 잇는 역할이야말로, 다른 프로그래머는 수행하기 힘든 역할이자, 게임플레이 프로그래머의 가장 큰 경쟁력이라 최호영 프로그래머는 말하며, 디자이너가 아닌 비 프로그래머 동료와의 협업에서도 당연히 중요하다 밝혔다.
최호영 프로그래머는 결국 프로그래머에 필요한 모든 소양은 '소통'으로 정리된다 말했다. 그는 게임에 대한 이해를 바탕으로 비 프로그래머/ 동료 프로그래머와의 구체적이고 열린 소통이야말로, 프로그래밍이 자동화되고 개발 도구와 프레임워크가 빠르게 발전하는 최근 추세에서 가장 큰 경쟁력이라 강조했다.
마지막으로, 게임플레이 프로그래머를 '상대의 의도를 이해하고 정해진 일정에 맞춰 좋은 품질의 프로그래밍을 하는 사람'라고 정의한 최호영 프로그래머는 '게임플레이 프로그래머'라면 동료와의 소통에 대해 부담을 갖지 말고, 자신의 업무라 생각하는 '소통 스페셜리스트'가 되길 주문했다.