마지막 아르바이트의 유산

이전에 게임 업계의 고용 형태는 프로젝트 단위 계약직에 가까움 이야기를 하면서 지방에서 학교를 덜 마친 채 상경해서 게임 일을 시작하기 전에 했던 아르바이트 이야기를 잠깐 했었는데 이 경험은 제게 굉장히 난처한 가난을 선사한 채 그리 좋지 않게 끝났지만 시간이 흐른 다음 생각해보면 나쁜 점만 있었던 것 같지는 않습니다. 이쯤 되면 뇌절을 넘어 주접에 가까워지는 것 같은 불길한 예감이 들지만 어디 술자리에서 큰 목소리로 모두의 딴청을 유발하며 이야기하는 것은 아니니 이야기해봐도 되지 않을까 하는 생각이 듭니다.

이런 옛날 이야기이자 쓸데 없는 개인사 이야기에 관심이 없을 분들을 위해 이번에는 여기서 결론을 말해 두자면 상경 후 마지막 아르바이트는 꽤 파멸적이었지만 어쨌든 코드를 사용해 서비스를 만들고 돈을 받는 역할을 해 억지로 갖다 붙이면 나름 프로그램을 만드는 일을 했던 것과 비슷해 더 이상 코드를 작성하지 않는 직업을 가지고 나서 시간이 꽤 흐른 다음에도 여전히 도움을 받고 있습니다. 끝.

학교에서는 주로 자바와 JSP에 기반해 웹서비스를 만드는 걸 배웠는데 이런 지식은 제가 일상 생활에서 겪는 문제를 전혀 해결해 주지 못했습니다. 그때 일상 생활에서 겪던 문제는 제로보드를 개인적인 요구사항에 맞게 수정하거나 이 게시판의 스킨을 받아 설치했는데 예상대로 동작하지 않는 상황, 당시 널리 사용되던 포럼 소프트웨어인 phpbb를 개조해 비공개 개인 기록을 인터넷 상에 쉽게 남길 수 있도록 만들며 생기는 문제, 또 비슷한 시대에 유행하던 태터툴즈라는 블로그 도구를 사용하며 생기는 문제를 해결하고 비슷한 시대에 유명한 블로그 서비스인 이글루스에서 제공하던 PDF 만드는 기능을 따라 만들며 겪는 문제들이 있었습니다.

학교에서 배우는 건 어쨌든 학점을 받아야 했으니 재미도 없고 감동도 없었지만 배워 책에 나오는 그저 그런 뭔가를 오류 없이 동작하게 만드는 수준을 달성하긴 했습니다. 하지만 당장 일상에서 겪는 문제를 해결하는데는 말 그대로 아무런 도움도 되지 않았기 때문에 학교에서 이런 것을 왜 가르치는지 이해할 수 없었습니다. 한편 나중에서야 학교에서 배운 개발 환경이 학교 바깥에서 아주 널리 사용된다는 사실을 알게 됐지만 심지어 그걸 알게 된 시점에도 학교에서 배운 지식에 기반해 학교 바깥에서 이를 활용할 기회가 나타나지는 않았습니다.

한편 학교의 교육 과정과는 아무 상관 없이 순전히 일상에서 매일같이 겪는 온갖 문제를 해결하려고 보니 이 모든 문제는 LAMP라는 소프트웨어에 기반한 환경에서 일어나는 것들이었고 우연히 문제를 겪게 만든 모든 소프트웨어와 서비스가 이 환경에서 동작하는 것들이어서 어쩌다 보니 이 환경에 조금 익숙해졌습니다. 또 학교에서 배운 여러 쓸 일이 없는 과목 중에 데이터베이스만은 독보적으로 쓸모가 있었는데 특히 관계형 데이터베이스 개념과 데이터베이스 정규화 개념은 눈 앞에 닥친 일상의 문제를 이해하는데 큰 도움이 되었습니다.

처음에는 깨작깨작 누군가 이미 만들어 놓은 스킨이 예상대로 동작하지 않는 문제를 해결하며 스킨 제작자가 예상하지 않은 환경에서 동작할 때 일어나는 문제를 해결하는 선에서 시작했는데 조금 더 하다 보니 인터넷 상에 개인적으로 사용할 비공개 데이터를 쌓고 검색하고 연결하는 시스템을 구축하게 됐는데 지금에 와서 생각하면 그냥 대강 조금 늦게 처음으로 세상에 나타난 컨플루언스 위키를 사용했으면 오랜 세월에 걸쳐 비공개 데이터 시스템을 찾아 헤매느라 시간을 낭비할 일이 없었겠다 싶기도 합니다.

학교를 덜 마친 상태로 상경해 살다 보니 이전에 매일 겪던 일상의 문제를 해결하는데 사용한 여러 꼼수에 기반한 일자리를 찾을 수 있었는데 이제는 작은 제조 회사의 고객용 주문 시스템, 제조 관리 시스템을 비슷한 기술에 기반해서 만들었습니다. 실은 이런 허술한 물건이 제 역할을 할 수 있을지 스스로도 의심스러웠는데 이 시스템을 허술하게 본 것은 고객용 주문 시스템을 사용하는 여러 고객들도 마찬가지였던 것 같습니다. 종종 주문 시스템이 제대로 동작하지 않는다고 회사로 전화를 걸어 온 고객들을 응대해 문제를 해결하곤 했는데 이 시스템을 실제로 사용하는 누군가가 있다는 사실이 신기하기도 했지만 다른 한 편으로는 그 시스템이 멍청하게 동작해 지금 이 고객의 시간을 낭비하게 하고 있다는 사실이 되게 쪽팔렸습니다.

어쩌다 보니 이 일이 그리 좋지 않은 결말로 마무리되고 게임 만드는 일을 하기 시작했는데 한 프로젝트에서 게임의 베타 서비스를 하며 거대한 텍스트 로그를 남겼지만 로그는 그저 수 기가 짜리 텍스트 덩어리였을 뿐 아무 것도 할 수 없었습니다. 그런데 찾아보니 로그파서라는 소프트웨어를 사용하면 일관된 구조로 생성된 거대한 텍스트 덩어리 자체에 이전에 일상의 문제를 해결하는데 사용하던 SQL 문법으로 질의할 수 있다는 것을 알게 됩니다. 썩 빠르지도 않았고 썩 편안하지도 않았지만 이전에는 그저 거대한 텍스트 덩어리였을 뿐인 데이터로부터 최소한의 의미를 가진 통계를 얻었습니다.

사실 이 통계들은 그냥 사용자들의 행동을 거시적으로 이해할 수 있게 도왔을 뿐 개발에 실질적인 영향을 주지는 못합니다. 다음 마일스톤 기획서를 미리 쓰는 계획은 왜 항상 실패할까에서 이야기한 적 있듯 이미 우리들에게는 빡빡한 개발 계획이 잡혀 있었고 기초적인 통계를 보고 여러 의문이 생겼지만 그런 의문을 해결하기 위해 본격적으로 시간을 투입할 여지는 없었습니다. 하지만 학교에서 배운 것과 일상 생활을 하며 알게 된 것이 이런 식으로 활용될 여지가 있음을 깨달았습니다.

한편 같은 프로젝트를 런칭하기 직전에 다다랐지만 회사의 도움을 받아 운영툴을 붙일 수 있는 상황이 아니었습니다. 다른 부서의 이미 서비스 중인 프로젝트에서 사용하는 도구가 있었지만 이 도구는 오직 그 프로젝트를 위해 개발되어 당장 그걸 받아다가 우리 프로젝트에 맞춰 개선하기에는 시간이 부족했습니다. 게다가 모든 엔지니어들은 런칭 준비에 모든 시간을 투입하고 있었기 때문에 운영자가 사용할 최소한의 제어 도구와 통계 도구를 준비할 수 없었는데 별 수 없이 이전에 일상의 문제를 해결하던 기술에 기반해 게임 데이터베이스에 접근해 통계를 가져오고 엔지니어가 준비한 최소한의 엔드포인트에 접근해 게임을 제어하는 기능을 하는 너덜너덜한 운영 웹사이트를 런칭 직전에 맞춰 만들 수 있었습니다. 이 웹사이트는 그 너덜너덜함에도 불구하고 어쨌든 맡은 역할을 수행했고 회사에 보고할 기초 통계를 제공했으며 이후 회사의 도움을 받아 제대로 된 도구로 바뀔 때까지 겉으로는 멀쩡하게 돌아가고 있는 것 같은 게임 뒤편에서 아슬아슬하게 고장 나지 않고 돌아갔습니다.

어떤 중단된 MMO 프로젝트에서는 전투에 뜻을 가진 분들이 전투 경험을 만드는데 집중하는 사이에 MMO 게임에 당연히 필요할 것 같은 메타 플레이를 설계했는데 복잡하지 않았기 때문에 설계한 메타 플레이를 간단한 웹 게임 모양으로 만들어 팀에서 플레이 할 수 있게 만들었는데 실제로 웹 게임이 동작하면서 메타 플레이 설계 상의 큰 결함을 미리 예측해 수정하거나 사람들의 순위에 따라 작은 보상을 주는 이벤트를 하는 식으로 개발 중인 게임의 메타 플레이를 미리 구동해볼 수 있다는 것을 배웁니다. 하지만 이 프로젝트는 예상할 수 있듯 어른들의 사정으로 인해 취소됐고 설계했을 뿐 아니라 실제로 구동 시켜 보기도 한 메타 게임은 쓸모 없게 되었습니다.

최근에는 이전 MMO 게임을 만들면서 잘 사용하지 않던 여러 환경을 적극적으로 도입해 개발 기간을 줄이려는 노력을 하고 있는데 그 중 하나는 이전에는 텍스트 파일을 사용하거나 관계형 데이터베이스에 적제하던 로그를 오픈서치에 연동해 적재 하는 것이었습니다. 이전에는 남기고 싶은 로그 정보와 그 의도를 정해진 문서 포멧에 맞춰 잘 기술해서 다른 부서로 보내면 그쪽에서 구현해 줬고 나중에 이 정보가 포함된 로그에 기반한 보고서를 받을 수 있는 것이 고작이었지만 이제는 오픈서치 환경에서 자유롭게 질의할 수 있는 모양으로 준비되었습니다.

작은 문제가 있다면 오픈서치 대시보드에서 질의하는데 사용하는 명령어 체계를 전혀 몰라서 완전히 새로 배워야 하는 상황이었는데 이전에 편안하게 사용하던 SQL과는 상당히 다른 모양이어서 과연 빠른 시간 안에 준비할 수 있을지 걱정했습니다. 새로 배워야 할 질의 언어는 현대적인 데이터베이스 환경과 현대적인 자바스크립트 개발환경을 기준으로 익숙한 모양이었던 것 같지만 먼 옛날 일상의 문제를 해결하기 위해 배운 기술들과는 궤가 완전히 달랐습니다. 그런데 오픈서치 기능을 찾다 보니 전통적인 SQL 문법으로도 똑같이 질의할 수 있다는 사실을 알게 되면서 스트레스가 한 방에 사라지고 새로운 질의 환경을 습득하는 대신 바로 전통적인 질의 환경에 기반해 통계를 만들 수 있었습니다.

하지만 단기적으로만 이렇게 할 수 있을 테고 중장기적으로 이 환경을 계속해서 사용하려면 이 환경에 중간 번역 과정 없이 직접 접근할 수 있는 환경을 습득하기는 해야 한다고 생각합니다. 이전에 익숙하게 사용하던 환경으로는 당장의 일을 처리할 수는 있겠지만 천천히 새로운 환경을 공부할 시간을 벌었다고 생각하는 편이 나을 거라는 생각입니다.

결국 학교 다니며 배운 지식은 그들 중 일부가 아주 큰 역할을 했고 일상에서 겪던 문제를 해결하기 위해 대강 배웠던 기술 기반은 이후 오랜 세월이 흐르는 동안 일하며 겪던 문제를 해결하는데 직간접적으로 도움을 주었을 뿐 아니라 가장 최근에는 새로운 환경을 학습하는 시간을 벌어주기까지 했습니다. 사실 마지막 아르바이트를 그만 두고 첫 직장에 다니기 시작하면서 이럴 줄 알았으면 뻘짓 하지 말고 바로 첫 직장의 분야에 이력서를 냈어야 옳지 않았나 싶지만 한편으로는 그 때 삽질하던 것이 아예 의미 없지는 않았을지도 모르겠다는 생각이 들기도 합니다. 이제 주접은 진짜 끝!