삶의 지도

개발 밥을 먹은 지도 벌써 10년이 됐습니다. 저에게 개발이라는 행위가 주는 즐거움은 아직도 유효하지만, 미지의 것을 탐구하려는 열정은 식어버린 것 같습니다. 신경 쓸 것이 많다, 몸이 옛날 같지 않다 같은 핑계만 늘어나고 있는 요즘, 이번 기회에 삶의 지도를 그려보며 꺼져버린 램프에 다시 기름을 채우고 불을 붙여보려 합니다.

나는 왜 개발자의 길을 선택했는가?

거슬러 올라가 저의 첫 기억을 되짚어 보면 그곳엔 컴퓨터가 있었습니다. 어렸을 적 제 즐거움은 왜 있는지 모를 MS-DOS 컴퓨터를 가지고 노는 것이었습니다. 그 당시엔 몰랐지만, 컴퓨터에 설치되어 있던 Mdir을 통해 타자 연습을 하거나 고인돌, 너구리 등의 게임을 하는 것이 저의 가장 큰 즐거움이었습니다. 지금 돌이켜보면 색도 별로 지원하지 않는 디스플레이와 조작도 어려운 컴퓨터가 무엇이 그리 재밌었는지 모르겠습니다.

어린 애가 이걸 어떻게 만질 수 있었을까?

지금 생각하면 초등학교도 입학하기 전 어린아이가 어떻게 이 컴퓨터를 조작할 수 있었는지 모르겠습니다. 미지의 것을 탐험하는 재미가 있었기 때문일까요? 아니면 그나마 Mdir 덕분일까요? 지금으로선 전혀 알 수가 없습니다.

혼자 재밌게 놀며 즐거운 나날을 보내던 와중 저는 친구 집에서 Windows 컴퓨터를 만져볼 수 있게 됐습니다. 지금도 기억납니다. Windows 98이라는 큰 글자가 나오며 영롱하게 빛나던 모니터를요. 저는 충격을 받았습니다. 아니 거무칙칙한 화면이 아니라니? 이렇게나 아름답게 빛나다니? 저는 그 이후로 매일 친구 집에 놀러 갔습니다.

아주 영롱하다

친구 컴퓨터를 만지는 것은 매우 즐거웠습니다. 집에 있는 컴퓨터와 다르게 알록달록한 타자 연습 프로그램과 설치되어 있던 스타크래프트까지 무엇 하나 지루한게 없었습니다. 다만, 제 컴퓨터가 아니기 때문에 그리 오래 만질 수는 없었지만요. 그럼에도 불구하고 잊을 수 없는 시간이었습니다.

어느 정도 시간이 지나 초등학교에 입학하게 되고 저는 컴퓨터 학원에 보내달라며 부모님에게 졸랐습니다. 그저 컴퓨터를 만지는 것이 즐거웠던 저는 하루 종일 타자 연습을 하거나 오피스 한글을 만져도 마냥 즐거웠습니다. 물론 게임을 할 수 있는 자유 시간이 제일 행복했지만요.

그 시절 플래시 게임

이때 저는 컴퓨터의 매력에 흠뻑 빠져버렸고 개발 외길을 걷게되는 계기가 되었습니다. 단지 지금과 생각이 다른 점이라면 그 당시에는 게임 개발자가 되고 싶었습니다.

게임 개발을 목표하다

시간이 지나 중학생이 됐음에도 저는 게임 개발이 하고 싶었습니다. 하지만 게임 개발하는 방법을 그 누구도 가르쳐주지 않았기 때문에 스스로 독학할 수밖에 없었습니다. 독학에는 한계가 있어 게임 개발 방법은 전혀 알지 못하고 정보 올림피아드 같은 대회를 위한 알고리즘만을 공부하게 됐습니다. 이런 공부를 했기에 여러 수상 실적을 얻을 수 있었지만 그다지 재밌지는 않았습니다. 제가 할 수 있는 건 CLI 화면에서 알파벳을 통해 간단한 게임을 만드는 것뿐이었습니다.

그러던 와중 선린인터넷고등학교라는 곳을 알게 됐습니다. 저는 계속 게임 개발이 하고 싶었고 이 학교에 진학하면 배울 수 있다는 것을 알게 됐습니다. 이 학교에 진학하기 위해서는 일반 전형과 특별 전형 둘 중 하나를 선택해야 했습니다. 일반 전형으로 가기에 부족한 내신 성적은 아니었지만 무언가 나만의 개발물을 통해 당당히 입학하고 싶었던 저는 조금 더 적극적으로 게임 개발에 대한 자료를 찾았고 그 결과 WinAPI라는 것을 알게 됐습니다.

그 당시 몇 번이고 읽었던 책

처음 화면에 이미지를 그리는 것에 성공했을 때의 기쁨은 지금도 생각납니다. 너무 즐겁고 신기해서 밤을 새우며 책을 읽고 코딩했던 기억이 납니다. 그 후 몇 달간의 공부 끝에 간단한 슈팅 게임을 만드는 것에 성공하고 당당하게 합격했습니다.

게임 엔진과 게임을 만들다

선린인터넷고등학교에 진학하게 됐지만 생각보다 게임 개발에 대해 배울 기회는 거의 없었습니다. 다만, 교내 동아리나 여러 책, 과거로부터 쌓인 소스 코드를 통해 간접적으로 공부할 기회는 있었습니다. 이때 WinAPI를 넘어 DirectX를 통해 게임을 만드는 것을 알 수 있었습니다. 처음으로 객체 설계, 게임 루프, 디자인 패턴 등을 공부하면서 조금 더 체계적인 프로그래밍을 할 수 있었습니다. 하루하루 코딩하는 것이 정말 즐거웠던 때였습니다. 이 당시 유행했던 게임 엔진 코드를 밤새 분석하며 직접 엔진을 만드는 도전을 했었는데 며칠 밤을 새우더라도 지치지 않았습니다. 그때의 저는 정말 코딩을 좋아했습니다. 이 당시 만들었던 엔진은 성인이 되고 나서 간단히 정리해서 오픈 소스1로 공개도 했었습니다.

이렇게 만든 엔진을 통해 다양한 게임도 만들었습니다. 단순한 종회 슈팅 게임부터 시작해서 배틀십, 간단한 전략 시뮬레이션 게임 등 다양한 장르의 게임을 만들었습니다. 이런 경험을 통해 대회에서 수상을 하기도 했습니다.

일반적이지 않은 길

생각없이 코딩만 하던 시절이 지나 어느덧 대학 진학을 고민해야할 시기가 왔습니다. 저는 복잡한 생각없이 코딩만을 하고 싶었고 그렇다고 바로 취업하고 싶지는 않았습니다. 일반적이라면 대학 진학을 했겠지만 그 당시 NHN NEXT라는 교육기관이 등장했고 해당 교육기관의 커리큘럼에 매료됐습니다. 저는 이 교육기관에 진학하기 위해 대학 진학을 포기했습니다. 이 교육기관은 대학과 유사한 커리큘럼을 가지고 있었고, 대학보다 더 실무에 가까운 교육을 받을 수 있었습니다. 많은 사람들이 저를 만류했지만 제 의지가 확고했기에 결국 진학하게 됐습니다.

그곳에서는 조금 더 전문적인 것들을 배울 수 있었습니다. 컴퓨터 시스템 아키텍처, 운영체제, 그래픽스, 네트워크, 자료구조 및 알고리즘 등 컴퓨터 과학 적인 것을 포함하여 게임 기획에 대한 이론이나 게임 서버, 클라이언트 개발 등 실무적인 것도 배울 수 있었습니다. 다만, 아쉬운 점은 군대를 가야 했기에 1년 밖에 공부를 하지 못했다는 것이 지금도 많이 아쉽습니다.

병역 특례

저는 크게 병역 문제에 대해 스트레스를 받거나 고민하지는 않았습니다. 그렇지만 좋은 기회가 생겨 산업기능요원이라는 제도를 통해 군대에 가는 대신 취업을 통해 복무를 할 수 있었습니다. 군대에 비하면 아무것도 아닐 수 있지만 힘든 일도 많았습니다. 이 이야기는 이 포스팅의 주제와는 연관이 없으므로 넘어가겠습니다. 아무튼, 병역 특례를 통해 업무를 할 수 있게 되었고 저는 웹서버 개발자로서 일을 하게 됐습니다. 저는 게임 개발을 희망했지만 웹 서버, 프론트엔드에 대한 지식도 있었기 때문에 큰 어려움은 없었습니다.

이상한 커리어

이때부터 이상한 커리어를 가지게 됐습니다. 분명 웹서버 개발자로 일을 시작했지만 어쩌다보니 iOS 개발, 프론트엔드 개발도 같이 하게 됐습니다. 웹서버 개발 또한 한 언어가 아닌 PHP, Ruby, Python, Java 등 다양한 언어와 프레임워크를 거치게 됐습니다. 한 명이 여러 업무를 하는 것은 스타트업 특성 상 어쩔 수 없을지도 모르지만 결국 여러 언어나 프레임워크를 다루게 된 것은 제 성향이 크지 않았나 싶습니다. 저에게 있어서 새로운 것을 다루고 배우는 것은 단순히 노는 것 이상으로 즐거웠으니까요.

그렇지만 정작 게임 개발 업계로 가지는 못했습니다. 너무 다른 커리어를 가지게 된 것도 있지만, 어느 순간 게임 개발이 아닌 그냥 개발을 하는 것 자체가 즐거워졌다는 것을 깨달았습니다. 이런 이유로 게임 개발자가 되지 못했지만, 많은 경험을 통해 다양한 분야에 대한 지식을 얻을 수 있었습니다. 그래서 결국 이상한 커리어지만 이런 경험이 지금에 와서는 큰 도움이 됐습니다. 다양한 지식을 익히고 다양한 직군에서 얻은 경험이 지금 업무를 수행하는데 있어 많은 문제를 해결해주고 있습니다.

앞으로 어떻게 살아야할까?

첫 취업을 한 이후로 몇 번의 회사를 거쳐 창업 멤버로서 스타트업에 합류할 기회가 있었습니다. 몇 년이 지났지만, 아직 살아남았습니다. 그 와중에 CTO 직무를 맡게 되고 그에 따라 다양한 고민을 하게 됐습니다. 이 때문인지 요즘 개발에 대한 열정이 많이 사라졌다는 것을 느꼈습니다. 다양한 개발 방법론, 아키텍처, 업무 프로세스에 대해 고민하는 것도 좋지만 최근에는 개발자 본연의 모습으로 돌아가 순수하게 개발에 대한 지식을 공부하고 기록하고 싶다는 생각이 많이 듭니다. 조금 고민해봤지만 앞으로 어떤 개발자가 되야겠다는 생각보다는 더 짧은 단기 목표를 여러 번 이뤄야겠다는 생각이 많이 들었고 당분간은 지식을 정리하는 것에 힘을 쓰고 싶습니다.

마치며

이 포스팅을 작성하며 조금 더 구체적이고 자세히 제 삶을 돌아봤습니다. 비록 포스팅에 남기지 못한 것들도 많지만 그건 언젠가 다시 기회가 될 때 정리하고 싶습니다.

Footnotes

  1. https://github.com/kciter/NNGameFramework