[인터뷰] 넥슨그룹 첫 정년퇴직자 '백영진'의 소회
이두현 기자 (Biit@inven.co.kr)
2021년 12월 28일, 네오플은 게임업계 첫 정년 퇴임식을 진행했다. 주인공은 '던전앤파이터' 서버를 만들어 온 백영진 개발자다. 그는 2005년 8월 던전앤파이터 개발 스튜디오 'A-shock'에 입사해 16년 5개월 동안 일하고, 2021년 12월 31일 퇴직했다.
그동안 게임업계에선 정년퇴직으로 떠나기보다 권고사직으로 물러나는 소식이 많이 들렸다. 이번 백영진 개발자의 정년퇴직은 비교적 불안정했던 개발자 세계에 작은 울림을 준다. 네오플 관계자는 "게임업계에 기념이 될만한 일, 큰 희망을 줬다"고 말했다.
넥슨그룹 첫 정년퇴직자 백영진 개발자로부터 소회를 들었다.
던파 유저들은 백영진 개발자의 작업물을 어떻게 만날 수 있을까요?
= 처음부터 던전앤파이터 게임의 서버개발을 맡아 진행해 왔습니다. 제가 네오플에 입사했던 시기는 막 던전앤파이터가 오픈베타를 시작했을 때였어요. 처음엔 던전앤파이터 서버의 기초가 되는 기본구조나 틀을 마련해야 했었고요.
초기 던전앤파이터의 서버 구조는 버그가 너무 많은 상태였습니다. 가장 기본적인 이중 접속을 차단하는 것이 저의 첫 임무였으니까요. 그렇게 이중접속 차단 시스템을 제작했죠. 이후 던전앤파이터는 입에서 입으로 소문이 나서 당시 중, 고등학생들 사이에서 상당한 인기몰이를 하게 되었습니다.
하지만 동시접속자는 5만을 넘지 못했어요. 다시 말씀드리면 유저들이 접속하고자 해도 접속이 안 되었던 거죠. 던파 서버 문제 때문에요. 참 아이러니하게도 이런 문제를 해결하는 것이 저의 임무였고, 해결하고 나니 동시접속자 수 10만을 훌쩍 넘어가더군요.
물론 10만 명을 넘을 때도 문제가 없었던 것은 아닙니다. 그렇다 보니 던파의 초창기 별명이 '점검앤파이터'였습니다. 하루에도 몇 번씩 서버가 죽어서 점검해야 했으니까요. 물론 기획자들이 쏟아내는 콘텐츠 기획을 개발해야 했고, 일주일 단위로 패치는 병행해야 했었습니다. 지금 던파 개발시스템은 너무나 많은 발전을 해서 과거와는 상상할 수 없는 일이긴 합니다.
답변이 되었을지 몰라서 대표적 콘텐츠 몇 가지를 말씀드리자면 던전앤파이터 길드 시스템, 많은 이벤트, PC방 시스템, 욕설 필터링 시스템, 던전 EPLP, 아이템 GUID, 전직 및 각성 시스템 등의 개발을 맡았습니다.
종종 던파 유저들이 렉으로 불편함을 느낄 때가 있어요. 그때 서버에 대한 불만이 나오곤 하는데요. 서버개발자로서 렉이 왜 걸리는 건지 유저분들께 설명하신다면요?
= 온라인게임에서 렉이 발생하는 문제를 프로그램지식을 동원해서 유저분들에게 설명해서 이해시키기는 거의 불가능할 것 같아요. 그래도 서버 입장에서 렉이라는 현상이 3가지 정도의 원인으로 발생한다고 보시면 이해가 빠르실 것 같습니다.
1. 개발자가 잘못 프로그래밍해서 어떠한 상황에 도달하면 과도한 프로세스를 타게 프로그래밍을 한 경우
2. 해킹 공격이 들어와서 네트워크 부하가 심해지는 경우
3. 많은 유저가 갑자기 동시에 접속을 해서 부하가 심해지는 경우
대부분 1번의 경우일 듯합니다만, 인기 있는 게임의 경우 간혹 2번, 3번의 경우도 발생합니다.
던파의 경우 접속이 안 되거나, 세리아방까지는 어째어째 들어 왔는데 마을로 안 나가진다거나, 채팅 메시지가 전달이 안 되다가 몇 초 후 전달되는 등, 파티 신청이나 수락이 한참 뒤에 된다든가 하면 서버렉이 발생한 것입니다.
던전에서 몹의 움직임이 느리다거나 화면상의 스크롤 등이 느려지거나 끊어지는 현상은 거의 대부분 클라이언트 렉이라고 보시면 되고요.
긴 경력 중에 기억에 남는 사람이 있을까요?
= 저에게는 참 많은 선배분이 있었습니다. 네오플에서 같이 근무한 동료분, 후배분들께도 많은 것을 배울 수 있었고요. 그래서 정년퇴직으로 회사를 떠나는 것이 아쉽게 느껴 집니다.
하지만 그중에서도 잊지 못할 저의 선배 한 분이 계십니다. 닷컴버블이 한창이던 2000년 첫 게임회사에 입사를 했더랬죠. 게임회사라기보다는 조그만 기업체였는데 사장님 아들이 게임을 좋아해서 게임회사를 만들어 기획하고, 그 기획서를 바탕으로 투자받아 운영을 했던, 닷컴버블 때나 가능했던 회사였습니다. 어찌어찌해서 게임을 만들긴 했지만, 회사는 자금 여력이 없어 망해 버리게 되죠.
저는 다시 그 게임개발 경력을 가지고 두 번째 게임회사에 지원하게 됩니다. 그 당시 제 나이가 40세였기 때문에 뭔가 게임개발 고수 같아 보였는지, 사장님은 저에게 임무 하나를 맡기게 되었죠.
게임개발 1팀은 탱크 게임을 서비스 중이어서 잘 나가고 있었지만, 개발 2팀은 신규 게임개발을 해 온 지 벌써 6개월이 지났지만 마땅한 결과물이 없었습니다. 저는 그 팀을 맡아서 문제점을 파악하고 팀을 정리하거나, 문제를 해결해 성공시키라는 임무를 받았습니다.
그래도 첫 게임회사에서 나름대로 출시할뻔한 게임을 혼자서 개발했기 때문에 자신이 있었던 저는 선뜻 그렇게 하겠다고 하고 그 팀에 합류하게 되었습니다. 이제 막 컴퓨터공학과를 졸업한 신입사원 남자 한 명과 여자 두 명이 팀을 이루고 있었지만, 남자 신입사원이 거의 모든 개발역량을 발휘해서 개발해 왔더군요.
남직원에게 그동안의 개발이력을 전달받아 분석하는데, 본인이 개발한 게임에 대한 이해도와 설명이 정말 대단했습니다. 설명을 어느 정도 듣고 그 프로젝트에 대해 이해하게 된 저는 문득 깨닫게 되었습니다. 비전공자였던 저는 혼자 공부하고 연구하여 개발하는 과정에서 생기는 어려움이나 개발 프로세스에 대해 매우 많은 궁금증을 가지고 있었는데 이 남자 신입 사원이 그 궁금증을 해소해주고 있다는 것을요.
남직원의 개발내용은 완벽했고, 오히려 제가 공부해서 배워야 할 내용이었습니다. 제가 어떻게 이 남자 신입 사원을 쫓아낼 수가 있겠습니까? 결국 그렇게 둘 다 회사에서 쫓겨 나오게 되었습니다. 이후 그분을 스승으로 모시기로 하고, 많은 일을 배우게 되었습니다.
그분은 지금 세상을 떠나 비록 함께 할 순 없지만, 그때 배운 지식이 저의 개발 자산이 되어 남아 있습니다.
처음 개발자로서 입문은 어떻게 했는지 궁금합니다. 그 시절 개발 공부는 어떻게 했는지도요.
= 제가 PC게임을 처음 접하게 된 계기는 대학교 4학년 때 8비트 Apple II 플로피디스크 게임이었습니다. 80년대 초 대학생 시절에 지도교수가 해외연수 다녀와서 사가지고 온 Apple II는 캐비닛에 열쇠를 잠가두고 사용할 정도로 귀한 물건이었죠.
그러다 후배랑 같이 자취하게 되었는데, 이 후배 녀석이 Apple II를 가지고 있었습니다. 무려 그 당시 50만 원짜리 플로피 디스크 드라이브도 가지고 있었죠. 후배가 수업이 있어 학교에 가면 저는 후배 몰래 Apple II 게임을 즐겼습니다. 아마 그때부터 저의 게임개발의 꿈이 시작되었던 것 같아요.
학교를 졸업하고 취업에 실패한 저는 삼촌이 공장을 물려준다는 약속에 구로공단(지금의 구로디지털단지) 내 한 공장의 정밀기계 앞에서 선반 작업을 하게 됩니다. 일주일 단위로 밤낮이 바뀌면서 온몸에 기름칠을 해가며 한 달에 10여만 원노동자가 되었더랬죠.
그 당시 월급여 10만 원 구로공단의 노동자들의 땀이 없었다면, 수출로 먹고사는 제조국 대한민국의 미래도, 지금의 게임산업, IT산업도 없었으리라 생각하고요. 그분들이 대한민국의 주인공이라 생각합니다.
하지만 저는 어느 날 자신을 되돌아보게 되고, 과연 내가 하고 싶었던 꿈이 무엇이었는지 고민하게 되었습니다. 그래서 청계천(지금은 용산이죠) 상가에 가서 Apple II를 구입하게 되었죠. 벌어 둔 돈이 없어 본체만 샀고 모니터는 TV에 연결했고요. Apple II 내 롬 안에는 베이직 언어가 심어져 있었는데, '베이직 500제'라는 책을 사서 하나씩 풀어나갔어요.
제가 하고 싶었던 공부를 하니까 참 재미있더군요. 그래서 청계천 상가 내 Apple II를 산 컴퓨터 가게 사장님을 찾아가서 무조건 취업시켜달라고 부탁했습니다. 일주일을 찾아갔더랬죠. 일주일째 찾아가니까 사장님이 책을 한 권 주시는데 제목이 MS DOS였어요. 저는 그 책을 읽고 오면 취업시켜줄 거로 생각하고 달달 외워 다시 찾아갔습니다. 취업시켜 주더군요.
그때부터 청계천 상가에서 컴퓨터를 파는 점원이 되었습니다. 286 16bit IBM 컴퓨터부터 시작해서 흑백 허큘리스카드, CGA, EGA, VGA라는 그래픽카드도 팔았어요. 새 제품도 팔았지만, 중고제품도 새것으로 만들어 팔기도 했죠.
그 컴퓨터 가게에는 각종 플로피디스크 소프트웨어가 가득 있었는데, 당시에는 지식재산권 인식이 부족하던 시기다 보니 복사를 해서 장당 얼마에 팔기도 했었어요. 가게 입장에서는 짭짤한 수입원이었죠.
각종 언어부터 유틸리티, 통계, AI등등 저는 많은 소프트웨어를 접할 수가 있었습니다. 당시 학원에서는 자격증을 따기 위해 코볼, 포트란을 가르쳤지만, 저는 C언어, 파스칼을 접할 수가 있었고요. 엑셀이나 워드프로세스, 데이터베이스를 접할 수가 있었죠.
넥슨 입사 전에는 어떤 일을 하셨나요?
= 참 많은 일을 했더랬습니다. 잘나가는 컴퓨터 학원의 강사를 하기도 했는데, 어느 날 지도교수가 그 컴퓨터 학원에 찾아온 거예요. 네가 왜 여기 있냐고 하길래, 컴퓨터를 강의한다고 했습니다. 알고 보니 컴퓨터 학원 원장님과 지도교수님은 대학 동기였어요. 지도교수님은 여름 방학 때 후배들을 가르쳐 보라고 했죠.
열심히 가르쳤습니다. 그랬더니 교수님이 토목 설계회사에 취업을 권하더군요. 제 전공이 토목이다 보니, 토목설계회사에 그렇게 근무하게 됩니다. 지도교수의 소개로 토목설계회사에 입사했더니 제가 했던 일이 컴퓨터 쪽이니까, 사장님이 토목을 전산화해 보라고 전산실을 만들어 주더군요. 각종 캐드 장비를 포함해서요.
하지만, 제가 정말 하고 싶은 것은 토목 쪽이 아니었기 때문에 3년간 근무 후에 독서실을 운영하게 됩니다. 독서실은 학생들이 밤에 와서 공부하기 때문에 낮에는 제가 공부 할 수 있었기 때문이었죠. 당시에는 MS DOS에서 마이크로소프트 윈도우로 넘어가는 시기였어요. 인터넷이라는 물결이 시작됐고, 닷컴이라는 단어가 시작했던 시기이기도 합니다.
저는 이때 C언어와 C++ 언어를 본격적으로 접하고 공부하기 시작했습니다. 그리고 흑백 허큘리스 카드에서 돌아가는 습작게임을 만들었죠. 이름이 '독도는 우리땅'이었더랬습니다. 그 당시에 우리나라의 PC게임산업은 블루오션이었고, 만들기만 하면 대박이 나는 시기였죠. 게임이름이 기억이 나지 않는데 횡스크롤 전투기 슈팅게임이 대박을 치기도 했습니다.
어느 정도 게임개발언어 공부가 된 저는 어떤 게임회사에 이력서를 제출했는데, 바로 입사시켜 주더군요
네오플에 언제, 어떤 계기로 입사했는지 궁금합니다.
= 네오플에 입사하게 된 계기는 앞서 이야기했던 저의 스승이자 선배가 권유해서 지원하게 되었습니다. 먼저 입사해서 어쩌다 네오플을 나오시게 되었는데, 저보고 괜찮은 회사이니 지원해 보라고 하더군요.
그때 던파를 처음 해 보았는데 재밌더군요. 당시 MMORPG의 캐릭터는 단순 칼베기였어요. 던파처럼 그렇게 화려한 스킬을 사용하면서 액션을 가미한 게임은 처음이었어요. 저는 한눈에 '대박인걸'하고 생각했습니다.
2차 면접으로 허민 사장님을 만났는데, 저의 꿈을 묻더군요. 한동안 잊고 있었던 저의 꿈을요. 참 인상적이었습니다. 그래서 꼭 입사해야겠다. 이 회사에서 일하고 싶다고 생각했어요.
그렇게 입사하니 서버개발자가 나를 포함 4명이나 되더군요. 기존 개발자 2명과 저보다 일주일 먼저 입사한 1명의 개발자. 저는 '할 만하겠다'라고 생각했어요.
첫 출근 후 점심시간이 되어 서버개발자 4명이 밖으로 점심을 먹으러 갔는데 기존 개발자 2명이 회사에 대한 불만을 심하게 털어놓더군요. 그리고 알게 되었는데 퇴사예정이라는 거예요. 그래도 1명이 더 있으니 괜찮겠지, 하고 있었습니다. 일주일 뒤 나머지 한 명도 퇴사하겠다고 하더군요. 저 혼자가 맡게 되었더랬죠. 던파 서버를….
저는 나이가 많아서 갈 곳도 이제 더 이상 없었고요. 마지막 직장이라고 생각하고 결심하고 들어온 회사가 네오플이었고요. 그래서 끝까지 해 보겠다고 결심했습니다. 당시 던파를 처음 기획했던 실장님과 연구소 소장님이 서버 개발을 도와주시더군요. 다행히요.
네오플 입사 초기에 어떤 일을 하셨어요?
= 앞서 이야기 한 데로 던파 서버는 초창기에 버그가 워낙 많아서 하루에도 몇 번씩 점검해야 했습니다. 원인을 찾아 패치파일을 만드는 작업을 해야 했습니다. 그리고 일주일 단위로 콘텐츠를 개발해서 업데이트를 하고요. 믿거나 말거나죠. 지금과는 너무나 다른…
오랫동안 개발자로서 직업을 유지하기 위해 어떤 노력을 하셨나요?
= 어떠한 분야든 끊임없이 공부하고 연구해야겠지만, 게임업계 또한 그 발전 속도가 빨라서 적응하기 위해 큰 노력을 해야 합니다. MMORPG가 나오던 초창기에는 게임엔진을 스스로 만들어야 했지만, 지금은 유니티나 언리얼 엔진 등이 나와서 쉽게 게임을 만들 수 있지 않습니까? 플랫폼 또한 다양해져서 PC게임 외에 모바일게임으로 확장되었고, 앞으로 VR/XR을 활용한 메타버스로 발전해 나갈 것입니다.
C++언어 한 가지에 어느 정도 통달하다 보면 새로운 개발 언어를 접하기에 무리 없이 적응가능하듯이, 새로운 플랫폼이 만들어지더라도 적응이 처음만큼 어렵지는 않게 됩니다. 꾸준히 관심을 두고 노력하면요.
말년(2021년)에는 어떤 작업을 하셨는지 궁금합니다.
= 던전앤파이터 한국 라이브 팀에서 주로 이벤트 서버개발을 담당해 왔습니다. 지금 네오플에서는 서버개발자 수십 명이 하나의 던파 서버 소스를 각자의 임무를 맡아 개발을 담당하고 있을 뿐만 아니라, 기획과 QA가 혹시나 있을지 모를 개발상의 실수나 문제점을 파악하기 위해 최선의 노력을 다하고 있습니다.
이제 갓 대학을 졸업하고 서버개발자로 입사한 신입사원이 첫 프로젝트를 업데이트해서 패치했는데 어쩌다 게임서버가 죽는 경우가 생기면, 대부분 너무나 낙심해서 어쩔 줄을 몰라 합니다. 그 부담감이 너무 심해서 화장실에 가서 울다가 오시는 분들도 보았습니다.
입사 전에는 나의 능력을 최대한 발휘해서 유저들에게 새로운 재미있는 콘텐츠를 선보이겠다고 각오가 대단해서 시작했기 때문이지요.
유저를 최우선으로 생각하는 마인드로 매주 목요일 패치 전 많은 문제점을 사전에 찾아내고 있지만 사람이 하는 일이다 보니 가끔 서버가 죽거나 연장점검으로 이어지고 있습니다. 그때마다 유저분들에게 불편을 끼쳐드려서 송구하고 미안한 마음 한가득하지만, 이쁘게 봐주시고 응원해 주셨으면 합니다.
일하면서 가슴 뭉클했던 순간이 있었을까요? 개발자로서 어떤 순간에 이 감정을 느꼈을지 궁금합니다. 다양한 기억을 소개해주셨으면 해요.
= 개발자로서 가장 가슴 뭉클한 순간은 오픈베타를 거치고, 상용화를 거치면서 성공할지, 실패할지 모를 게임 프로젝트가 대박이 나서, 내가 참여했고 내가 개발했던 콘텐츠를 유저들이 재미있게 즐겨 줄 때일 것입니다. 실제로 저는 던파 초창기에 우리 개발자들과 그런 가슴 뭉클한 순간들을 서로 나누었고, 서로서로 개발자의 능력을 인정해 주기도 했었습니다. 네오플에는 참으로 대단한 개발자들이 많았습니다.
-에피소드 1-
던파가 상용화한 이후 동시접속 5만 명을 넘지를 못하고 있을 때였습니다. 주말 오전 10시경부터 동시접속 그래프는 5만을 터치하는 지점에서 톱니를 그리면서 횡보하고 있었죠. 집에서 사내 메신저를 켜두고 던파에 접속해서 게임을 하고 있는데, 서버 부하가 있다는 것을 느껴 동료 서버개발자와 서버에 문제가 없는지 메시지를 주고받고 있었습니다.
실장님부터 사장님까지 메신저에 들어와 차례로 "서버에 무슨 문제가 있나요"라고 가볍게 물어 왔습니다. 그때부터 엄청난 부담감이 느껴지기 시작하더군요. 서버에 남는 로그를 뒤지다가 며칠 전 남겨둔 서버부하로그가 생각나 확인해 보니 데이터 베이스를 처리하는 큐카운트가 엄청나게 올라가 있는 것을 발견합니다. 이렇게 문제의 원인을 찾고 쿼리 최적화 작업을 하여, 점검하니 10만까지 동시접속이 훌쩍 올라가더군요.
10만 명에서 다시 문제가 생기기 시작했습니다. 동시접속 10만 명대에서 하나둘씩 서버가 죽어 나가는 것입니다. 그것도 주말만 되면 동접이 10만이 되어 죽으니 주말에 출근해야 했죠.
그렇게 꼬박 한 달을 서버개발자 3명이 주말 출근, 월요일 퇴근이었습니다. 원인은 캐릭터 선택 창에서 캐릭터를 삭제하고 서버에서 삭제되었다는 패킷을 받기 전에 그 삭제된 캐릭터가 게임에 접속할 수 있었기에, 유령캐릭터가 돌아다니면서 상점을 이용하거나 콘텐츠를 이용하면서, 게임서버를 죽였던 것이죠. 이러니 한군데서 죽는 게 아니라, 다양한 곳에서 서버를 죽여 버릴 수 있었고, 원인 분석에 애를 먹었던 것입니다.
하지만 이 문제를 해결하고 나니 더 이상 동접 상승 문제로 서버에 부하가 걸리는 부분은 없었습니다. 이후 최대 동접 29만을 기록하기도 했었죠. 지금 생각하니 감회가 새롭습니다.
-에피소드 2–
장비 아이템에 GUID를 심는 작업이 있었습니다. 이 작업이 성공하면 아이템이 복사되더라도 추적할 수 있기 때문입니다. 새로 생성되는 아이템에도 GUID가 생성이 되어야 하죠. 던전에서 아이템이 몹으로부터 떨어지는 아이템에도 GUID가 생성되는 것을 상상하시면 됩니다.
하지만 이 GUID작업은 기존에 유저분들이 가지고 있는 데이터베이스에 저장된 아이템에도 GUID를 심어야 합니다. 그러기 위해선 DB툴이라는 부담스러운 작업을 거쳐야 합니다. 유저의 인벤토리에 저장된 아이템의 정보를 변경해야 하거든요.
사소한 실수라도 하면 유저의 자산에 큰 문제가 생기기 때문에 부담이 안 될 수가 없는 작업입니다. 그래서 서버개발자가 가장 싫어 하는 작업이 DB툴 작업입니다. 저의 어깨에 던파의 무게가 온전히 느껴지는 때이지요. 제가 하나라도 실수한다면, 다음날 점검에 점검으로 이어지거든요.
모두가 퇴근하고 저 혼자 남은 과거 서울 역삼동 개발실에는 정적만이 흐르고, 새벽 2시경 내려오는 눈꺼풀을 억지로 참으며, 작업 소스를 수십 번 확인하고, DB팀과 메신저로 확인하고 테스트 DB에서 실서버의 DB를 옮겨와 테스트해 보고 결과 로그 확인하기를 몇 번씩 해 봅니다. 그렇게 패치 전날 밤샘을 하게 되어 있어요.
이제는 한 시간이라도 눈을 붙여야 할 것 같아 소파가 있는 회의실을 찾았는데, 그날 저녁 회식으로 만취가 된 사우 한 분이 따뜻한 오바이트를 하고 옆에서 쓰러져 자고있는 것이죠. 당시에는 1차, 2차, 3차 회식을 하고 전철이 끊어 지면 회사에서 잠을 자는 경우가 빈번히 있었습니다. 지금에야 어림도 없지만요.
어떻게 그냥 지나칠 수는 없죠. 그 사우와 흔적을 수습하고 제 할 일을 했습니다. 그렇게 하루가 가고 문제없이 DB툴은 돌아갈 때, 저는 또 한 번 서버개발자로 다시 태어난 느낌이 듭니다.
-에피소드 3–
발렌타인데이 때였습니다. 과거 던파 서버팀의 구성원들은 모두 잘생긴 남자분들이었어요. 발렌타인데이와 목요일 점검 날이 겹쳤는데, 난이도가 중급 정도인 파티찾기 시스템을 패치했더랬습니다. 패치담당자와 서버개발자 그리고 팀장이었던 저는 새벽같이 출근해서 테스트하고 점검시간 QA 테스트를 진행했죠. 문제가 없었어요.
하지만 오후에 유저분들이 대거 몰려들면서 파티찾기가 안 되는 거예요. 오전만 하더라도 오늘은 일찍 퇴근이 가능하겠구나라고 마음속으로 다들 생각하고 있다가 문제가 터지니 당황스럽기까지 했습니다.
퇴근 시간은 이미 지났고, 저녁 시간이 훌쩍 지났지만 패치담당자와 파티찾기를 개발한 서버개발자는 퇴근을 시킬 수가 없었죠. 문제의 원인을 찾고 해결사 역할을 해야 하니까요.
하지만 발렌타인데이잖아요. 여자친구들이 차례로 전화를 했습니다. 아니, 여자친구들이 사무실 문 앞에서 기다리고 있다는 거예요. 일단 나가서 초콜릿을 받아 오게 했지만, 팀장이었던 저는 그때 얼마나 미안한지요, 한창 데이트하고 청춘을 불사르는 나이란걸 잘 알기 때문이지요.
미안하다. ㅇㅇ야!!!
스스로 코드 작성에 있어 어떤 규칙을 세우고 지켜오셨는지 궁금합니다.
= 독자분들이 신입 서버 개발지원자라는 가정하에 간략히 전하겠습니다. 취미 삼아 혼자서 게임이나 앱 등 프로그래밍을 통해 코딩할 때는 나만 알아보면 되기 때문에 자신만의 코딩 스타일과, 심지어 코드를 암호같이 나만 알아보게끔 작성해도 문제가 되지 않습니다. 다만, 몇 년 지나서 그 코드를 다시 분석하면 주석을 남겨 코드설명이 되어 있다고 하더라도 암호 같은 코드를 이해 못하기도 하지요.
어느 조직이든 혼자서 개발하는 팀은 없죠. 그래서 조직마다 코딩 규칙을 정해 둡니다. 가이드 수준이지만, 지키면 코드가 읽기 쉬워지고 분석이 쉬워지기 때문이지요. 객체지향 프로그래밍을 한다고 하는 것도 복잡한 스파게티코드가 되는 것을 피하기 위함이고, 결국은 읽기 쉽고 이해하기 쉽게 만들기 위함입니다. 실세계의 사물을 객체화해서 코딩하니 당연히 이해가 빠르니까요.
던파와 같이 수십 명이 하나의 소스코드를 동시에 개발하는 상황에서 무엇보다 중요한 것은, 나만 아는 암호 같은 코드를 작성하는 것이 아니라, 누구나 읽기 쉽게, 분석하기 쉽게 개발하는 것입니다. 그래야 업무효율도 올라가니까요. 분석하면서 스트레스도 덜 받고요. 읽기 쉽게 코드를 작성한다는 것은 말처럼 쉽지는 않습니다.
예를 들어, 변수 이름을 작성할 때도 규칙에 맞게 그 변수 단어 의미만 떠 올려도 이해가 되도록 작성한다든지요. 어떤 객체의 맴버 함수를 호출하는 쪽은 그 함수가 어떠한 일을 하는지 전혀 몰라도 전달 인자와 리턴 값만 신경 쓰면 되도록 개발을 하는 것도 읽기 쉽고 분석이 쉬운 코드를 짜는 방법이죠. 여러분들이 C++든 JAVA든 코들린이든 하나의 언어에 통달하다 보면, 결국 프로그래밍은 하나의 결론에 도달하게 됩니다.
읽기 쉽고 분석하기 쉬운 코드를 만들기 위함이라는 것을요.
또 코드 작성이나 업무에 있어 동료분들께 어떤 당부를 하셨을까요?
= 동료분들에게 제가 어떤 당부를 할 처지는 아니었습니다. 저보다 뛰어난 분들이 많았고 설사 제가 가르칠 처지에 있어도 그렇게 하지는 않았을 거예요. 제가 스스로 실천해 나가는 것을 동료분들이 알아주면 그것으로 충분하기 때문이죠. 동료분들에 관한 이야기 보다 신입 개발 지원자가 이 글을 읽는다고 생각하고 또 조금 전하겠습니다.
프로그래머라는 직업으로 인정받으려면 다음 두 가지 능력 중 하나만 가지고 있어도 됩니다.
첫째, 스마트하던가?
둘째, 읽기 쉽고 분석하기 쉬운 코드를 짜던가?
인정받는 프로그래머를 두 부류로 나누면 위 두 가지로 나눌 수 있어요. 그래서 면접 시에 위 두 가지 중 어떤 능력이 있는지 질문하고 시험을 치르게 하는 거죠. 물론 C++등 언어의 기본 지식이 가장 중요하고요, 이것은 그냥 기본이죠. 인성적인 문제는 나중에 2차 면접이나, 3차 면접에서 결정할 일이니 기술면접에서는 제외됩니다.
첫째, 스마트한 프로그래머는 그렇게 복잡한 던파 서버 코드가 머릿속에 다 있어서, 문제가 발생하면 그 현상만 듣고 어디가 문제일 것이다 하고 예측하고, 바로 증명해 보이는 능력이 있습니다. 스마트한 개발자는 코드를 짤 때 머릿속에 있는 코드를 그대로 쏟아 내기 때문에 코드가 아름답지는 못한 것이 사실입니다. 하지만 그분은 머릿속에서 자신만의 이미지화된 코드가 살아 움직이고 있지요.
서버 문제가 터지면, 개발한 당사자는 일단 그 문제가 터질 수 없다고 부정부터 합니다. 인정하려 들지 않아요. 그럴 리가 없다고 내가 수십 번 본 코드인데 어떻게 이런 일이 발생할 수 있냐고 반문만 합니다. 하지만 스마트한 개발자는 바로 인정하고 코드를 상상해 들어갑니다.
둘째, 읽기 쉽고 분석하기 쉬운 코드를 짜는 프로그래머의 능력은 어쩌면 기본능력이라고 볼 수 있지만, 이분의 코드는 아름답고 감탄이 절로 나옵니다. 분석, 설계부터 남들하고 달라요. 그래서 코드가 다르게 생산되지요.
키보드와 마우스는 어떤 걸 쓰셨는지 궁금합니다. 개발자 세계에선 키보드, 마우스 등등 컴퓨터 장비에 관심이 많더라고요.
= 좋은 키보드, 마우스를 쓰고 싶은 마음이 저 또한 상당했습니다. 그래서 지금부터 약 10년 전쯤부터 남들처럼 그 당시 약 10여만 원짜리 기계식키보드 하나를 구입했더랬습니다. 글자를 타이핑할 때마다 묘한 희열을 느끼게 하더군요. 약 일주일째 사용하던 시점에 제가 실수로 커피를 쏟아버렸어요.
'아차'하는 실수였지만 엎질러진 커피였죠. 상실감이 이만저만이 아니었습니다. 그래서 그 이후로 커피를 마셔버린 키보드는 서랍장에 넣어 두었었죠.
이후 지금까지 회사에서 지급하는 삼성 키보드와 가장 일반적인 로지텍 마우스만 사용했습니다. 최근에 아들이 커피를 마셔버린 키보드를 수리해 왔습니다. 그리고 팀원 한 분이 정년퇴직선물로 기계식 키보드 하나를 선물해 주었습니다. 지금 사용 중인데, 이 물건 신세계를 맛보게 하네요.
남아 있는 넥슨 분들께 하실 말씀이 있을까요?
= 지난 17년간 네오플 개발자 여러분들과 함께 신나게 게임을 개발해 봤습니다. 정말 원 없이 게임 콘텐츠 개발이라는 것을 해 봤어요. 여러분들과 함께하다 보니 어느덧 정년퇴직하게 되었지만, 같이 하면서 같이 발전해 왔기 때문에, 또 같이하면 더 발전할 수 있다는 것을 알기에 여러분과 헤어지는 것이 아쉽기만 합니다.
정년퇴직이라는 것이 와 닿지 않으실 것 같아요. 당장 1년 후, 2년 후가 어떻게 될지 보이지 않는데 정년을 생각할 수 없는 것은 당연합니다. 어떤 프로젝트의 성공, 실패에 따라서 이직이나 팀 이동을 하는 경우가 많기 때문입니다.
하지만 그렇게 최선을 다하다 보면 여러분들에게 기회가 옵니다. 그때는 그 기회를 잡으세요. 건강이 허락한다면요. 힘들다고 도망치면, 그 성공의 열매를 맛보실 수가 없다는 것을 명심하십시오.
퇴직 이후에는 어떤 계획이 있으실까요? 개발자로서 일을 이어가실지, 다른 일을 계획하시는지요.
= 일단은 조금 쉬고 싶습니다. 정년퇴직한 현재 급할 건 없다고 생각이 되고요. 한 두 달 쉬면서 천천히 다음을 설계할 생각입니다.
퇴사해도, 쓴 코드는 서버에서 돌아갈 텐데요. 개발자로서 이 부분에 어떤 감정이 드는지 궁금합니다.
= 초창기 던파 서버 코드는 지금처럼 그렇게 읽기 어렵지 않은 간단한 코드였어요. 던파에 서비스된 콘텐츠 양이 적어서 당연하겠지만요. 당시 던파 서버 소스 개발자는 몇 명 되지 않았어요. 처음엔 저 혼자였고 이후 1년간 포함 3명이 작업했어요.
그 이후에 해외서비스가 열리면서 인원이 늘었지만 오픈이후 약 5년간 10명이 안 되었던 것으로 기억합니다. 서버 인력을 구인하는 것이 쉽지 않았거든요. 그 당시 개발자들끼리 모여서 누가 어떤 코드를 작성하는지 코드에 흔적을 남기자고 약속했죠. 그래서 프로젝트를 구현할 때마다 코드에 이름을 남겼더랬습니다.
시간이 지나가니 당연히 코드에 주석으로 남겨진 이름이 많아지기 시작했고, 코드를 보는 데 방해가 되기 시작한 거죠. 그래서 그 약속을 더 지키지 않게 되었습니다.
지금은 대부분의 개발 회사에서는 소스코드 관리 시스템을 사용하기 때문에 누가 어떤 작업을 했는지 다 분석이 가능해요. 초창기에는 소스 관리 시스템조차 도입되지 않았던 거죠.
아직도 서버소스에는 그때 남겨진 제 이름이 남아 있는데, 제가 이름이 보일 때마다 지웠었어요. 그런데 아직 남아 있는 게 있어서 가끔 해외팀에 신입사원이 들어오면, '백영진'이라는 이름이 소스코드에 많이 보이는데 이분이 누구시냐고 물어본다는군요.
초창기 서버 소스는 당연히 단순해서 보는 데 부담이 없었지만, 지금은 수십 명의 서버개발자가 소스관리 시스템을 통해 접근, 동시 개발을 하고 있습니다. 코드는 복잡해졌고, 기본과 규칙을 지키지 않으면 더욱더 스파게티 코드가 되어, 나중에 들어온 신입분들에 빚을 지우게 될 것입니다.
제가 처음부터 개발해 온 한 사람으로서 서버 코드에 남긴 빚덩이를 쌓아 두고 와서 남아 있는 분들에게 참 미안할 따름입니다.
마무리 짓지 못해 아쉬운 작업이 있을까요?
= 서버 일이라는 게 개선할 부분을 생각하면, 상당히 많은 부분을 못 하고 나왔다고 볼 수 있습니다. 후배분들, 충분히 실력 있는 분들이라 잘 이어가 주실 겁니다.
마지막으로, 개발자를 꿈꾸는 청년에게 조언 한마디 부탁드려요.
= 제가 감히 젊음과 패기가 있는 여러분에게 조언을 할 수가 있겠습니까? 하지만 저 또한 살아오면서 느끼고 실수를 반복했던 것은 생계를 위해서, 남의 눈을 의식해서 직업을 선택한 적이 있다는 것입니다.
저는 여러 게임개발자를 만나 보면서, 나는 지지리도 능력이 없는 개발자라는 것을 느꼈습니다. 단지 게임개발을 해 보고 싶었을 뿐입니다. 그 꿈을 키워 왔을 뿐이었어요. 제가 능력이 있었던 것은 아니었습니다.
한번 좋아하는 일을 해 보시기를 강력히 권해 드립니다. 정말 좋아하는 일을 직업으로 만들어 보세요. 게임개발이 아니어도 좋아요. 정말 좋아하는지 자신에게 물어보세요. 그리고 그 길로 가 보세요.
인벤 주요 뉴스
▶ [뉴스] 엔씨 신작, ‘저니 오브 모나크’ 사전예약 400만 달성 [1] | 박광석 (Robiin@inven.co.kr) | 10-30 |
▶ [뉴스] '프로스트펑크: 비욘드 더 아이스’ 글로벌 정식 출시 [0] | 박광석 (Robiin@inven.co.kr) | 10-30 |
▶ [뉴스] '지스타 2024'에서 만날 수 있는 넥슨 신작 5종 미리보.. [1] | 박광석, 이두현 (Robiin@inven.co.kr) | 10-30 |
▶ [뉴스] '격차' 벌린 넥슨, '빅앤리틀' 프로세스 본격 도전 [4] | 양영석,이두현 (desk@inven.co.kr) | 10-30 |
▶ [뉴스] 오버킬 최초 시연! 넥슨 신작 4종, 지스타서 시연 가능 [0] | 양영석,이두현 (desk@inven.co.kr) | 10-30 |
▶ [뉴스] SIE, '콘코드' 개발사 파이어워크 스튜디오 폐쇄 [3] | 윤서호 (Ruudi@inven.co.kr) | 10-30 |
▶ [동영상] WiiU라 못 했던 '제노블X', 스위치로 리마스터 [0] | 강승진 (Looa@inven.co.kr) | 10-29 |
▶ [프리뷰] 영화의 진정한 계승작, '인디아나 존스: 그레이트 서클.. [1] | 윤홍만 (Nowl@inven.co.kr) | 10-29 |
▶ [뉴스] 확 바뀌는 2025 LCK…각 팀의 반응은? [4] | 김병호 (Haao@inven.co.kr) | 10-29 |
▶ [뉴스] 컵 대회 창설, 단일 시즌 변화 등...LCK, 2025년 완전.. [41] | 김병호 (Haao@inven.co.kr) | 10-29 |
▶ [뉴스] 큰 소리를 내면 끝, 공포 게임 '돈 스크림' 출시 [1] | 박광석 (Robiin@inven.co.kr) | 10-29 |
▶ [인터뷰] 크래프톤이 선보이는 탑다운 전술, '프로젝트 아크' [10] | 이두현 (Biit@inven.co.kr) | 10-29 |
▶ [리뷰] 라이프 이즈 스트레인지, 걱정과 기대의 '이중 노출' [2] | 김규만 (Frann@inven.co.kr) | 10-29 |
▶ [동영상] '칼리스토 프로토콜' 세계관, 로그라이트는 다를까? [4] | 강승진 (Looa@inven.co.kr) | 10-29 |
▶ [뉴스] 국산 액션 RPG '더 렐릭' 지스타서 시연 빌드 공개 [6] | 박광석 (Robiin@inven.co.kr) | 10-28 |