따라잡기

과연 저는 14년 전 어느 날 지난 25년에 걸쳐 이룩한 모든 곡을 순식간에 파악해낸 마이크 맨지니처럼 수 십 명이 짧지 않은 기간에 걸쳐 작성한 문서들을 모두 파악할 수 있을까요?

따라잡기

지난 주 45호 커버스토리 실패할 수 없는 목표와 어쩔 수 없는 개발 앞부분은 유년기의 끝이라고 정의한 커리어의 두 번째 챕터를 마무리하고 세 번째 챕터를 시작하기 전 잠깐 여러 가지 것들과 멀어지러 수도권과 멀어졌다는 이야기로 시작했고 드디어 지난 월요일부터 다시 일하기 시작했습니다. 작년 12월 초에 권고사직 된 다음 두 달이 조금 넘는 기간 동안을 보낸 다음이어서 그 사이에 일 하는 방법을 까먹었으면 어쩌나 하고 약간 걱정하며 보냈습니다. 또 웬만하면 쉬는 기간을 최소화하며 다음 일을 시작했던 이전과 달리 이번에는 기간을 좀 두기로 했는데 시간이 조금 지나자 이번에도 그냥 좀 더 일찍 간다고 이야기할 것을 그랬다는 후회를 하기도 했습니다. 하지만 정작 출근하기로 한 날 직전 주말이 되자 백수 생활에 익숙해졌기 때문인지 몰라도 갑자기 백수가 체질에 맞다는 확신을 가졌고 그런 저를 본 가족은 저에게 이런 그림을 보내주기도 합니다.

하지만 백수로 지낼 수 있는 기간은 끝났고 월요일 아침은 밝아왔으며 사람들로 가득한 출근 시간대의 지하철을 타고 이동한 다음 역에 내려 계단을 오릅니다. 아직 태양 고도가 낮은 계절이고 또 평소 같으면 자고 있을 시간이어서 그런지 출구 계단을 오를 때 마침 태양이 정확히 그 방향에 떠 있어 함께 계단을 오르는 다른 분들도 저와 마찬가지로 고개를 잠깐 들면 자신의 눈알을 뚫어 버릴 듯 비추는 태양에 공손하게 고개를 숙이고 있었습니다. 그렇잖아도 오늘은 가칭 데이원 팩을 들고 있어 한참 힘든 마당에 에스컬레이터도 없는 긴 계단을 오르며 고개마저 들 수 없는 상태가 되어 첫 출근길부터 만만찮다는 생각이 들었지만 이 계단만 끝까지 오르고 나면 다시 회사까지 완만한 내리막이라는 점을 알고 있어 무거운 손을 꾹 참고 계단을 끝까지 올랐습니다.

제가 임의로 이름 붙인 데이원 팩은 어딘가에 처음으로 출근할 때 항상 들고 가는 짐꾸러미를 말합니다. 오래 전에 한참 사용하던 쓱배송을 더 이상 사용하지 않게 된 다음 쓱배송에 사용되던 알비백을 수거해 가 달라고 아무리 애원해도 가져가지 않아 어쩔 수 없이 집 한 구석에 방치되어 있었는데 마침 이 가방이 큼직하고 또 내부가 뻥 뚫려 있어 커다란 짐을 쉽게 넣을 수 있어 데이원 팩으로 활용하고 있습니다. 안에는 오랜 세월 사용해 온 나무로 만든 모니터 받침대 두 개가 가장 큰 부피를 차지하며 들어있습니다. 그렇잖아도 시력이 변변찮아 모니터를 들여다보다가 모니터를 안 볼 때도 목이 튀어나와 있는 거북목이 심각해 이를 조금이라도 늦춰 보려고 모니터를 14cm 위로 올리는데 사용합니다. 요샌 접을 수도 있는 받침대가 나왔다는 걸 알고 있지만 그냥 나무판 세 개를 붙여 만들어진 단순한 가구가 마음에 들어 그 부피에도 불구하고 항상 들고 다닙니다. 다음으로는 오랫동안 사용해 손에 익은 키보드마우스가 들어있습니다. 항상 회사에서 키보드와 마우스를 지급해 주지만 출근해 장비를 받으면 제 키보드와 마우스를 장착한 다음 회사로부터 받은 장비는 반납합니다. 키보드와 마우스 양쪽 모두 이제 너무 오랫동안 사용한 나머지 다른 제품을 사용하기 쉽지 않은데 작년에 큰 맘 먹고 다른 키보드를 시도했다가 처참한 실패를 겪은 충격이 아직도 생생합니다.

그 밖에 사무실에서 아무렇게나 걸칠 다른 게임 로고가 등에 박혀 있는 집업 후드, 여러 전자제품을 충전할 포트가 10개인 USB 충전기와 여러 가지 케이블, 금속으로 만들어져 있고 또 서버 랙에 장착할 나사 구멍과 덮개가 달린 스위치가 있는 또 다른 포트가 10개인 멀티탭, XBox 게임패드, 우산, 팔걸이 따위가 들어 있습니다. 그래서 데이원 팩을 가지고 있으면 이론적으로 출근 첫 날부터 출근 5년차 같은 업무 환경을 몇 분 안에 갖출 수 있어 첫 날부터 이마트 배송기사처럼 커다란 가방을 낑낑대며 들고 가게 됐습니다. 하지만 이 날의 가장 큰 실수는 데이원 팩에서 가장 중요한 물품인 슬리퍼를 챙기지 않았다는 점입니다. 회사에 도착해 간단한 교육을 마치고 몇 가지 서류에 서명한 다음 커다란 알비백을 들고 낑낑대며 자리에 가서 간단히 인사를 한 다음 가방에서 온갖 물건을 끄집어내 마치 출근 5년차인 것 마냥 늘어놓기 시작했는데 가방이 텅 빌 때까지 모든 물건을 꺼냈는데도 슬리퍼가 튀어나오지 않자 발에서 뜨끈한 신호가 오며 오늘 하루는 쉽지 않겠다는 생각이 들었습니다.

감사하게도 제가 사용할 기계는 이미 잘 설정되어 있었고 그저 로그인 해서 팀 마다 서로 다른 개발환경을 구축하고 그 사이사이에 이미 권한을 부여 받은 위키로부터 온갖 문서를 읽기 시작하기만 하면 됐습니다. 형상관리도구를 통해 거대한 파일 뭉치를 다운로드 하는 동안 페이지 뷰가 몇 만 단위인 위키 첫 페이지로부터 시작하는 온갖 문서 뭉치를 훑어보기 시작했는데 이미 개발을 한창 진행 중인 프로젝트에 참여할 때 형상관리도구로 프로젝트 파일을 다운로드 하기 시작하면 그 날 안에 끝나지 않을 때가 있습니다. 그런데 문서의 양을 살펴보니 프로젝트 파일 다운로드가 제가 당장 필요한 모든 문서를 읽기보다 더 빨리 끝날 것 같아 보입니다. 다만 아무리 서둘러도 첫 날 예정되어 있던 팀 테스트에 참여하기는 어려워 보입니다. 프로젝트는 한참 전부터 여러 사람들에 의해 진행 되어 왔고 그 과정에서 수많은 문서가 생산되었으며 이들은 분명 이 위키 안에 모두 보관되어 있지만 그 문서들이 읽는 사람을 위해 일정한 체계와 연결을 갖추고 있지는 않습니다. 어떤 주제에 대한 문서는 잘 정리되어 있어 그저 문서와 링크를 차례로 따라가기만 하면 될 때도 있지만 다른 주제는 이 주제에 대한 문서가 서로 다른 트리에 있고 또 서로는 연결되어 있지 않으며 종종 위키가 아닌 다른 수단을 통해 여러 문서 사이의 연결을 파악해야만 할 수도 있습니다.

한편 쉬는 동안 Six Degrees of Inner Turbulence 같은 글을 만들며 시간 날 때마다 제가 좋아하는 오래된 밴드 드림씨어터의 비슷한 방식으로 정리해볼 수 있는 곡들에 기반해 비슷한 주제로 글을 만들어 보겠다고 했지만 결국 두 번째 글을 만들지 못한 채 백수 생활이 끝나 버렸습니다. 그런데 출근 첫 날부터 지금까지 개발환경을 구축한 다음 빌드를 실행해 살펴보고 온갖 문서를 읽으며 마치 이 상황이 지난 2010년에서 2011년 사이 밴드를 처음 만드는데 참여한 드러머 마이크 포트노이가 밴드를 떠난 다음 새 드러머로 마이크 맨지니가 참여하는 과정의 일부와 비슷하다는 생각이 들었습니다. 이미 프로젝트는 한참 진행되어 왔고 계획은 여러 가지 이유로 변경되었으며 이를 개발팀이 소화하기 위해 여러 가지 새로운 세부 계획이 수립되고 또 이전 계획이 파기 되기를 반복한 끝에 위키에 쌓인 문서는 잘 정리되기 어려운 상태가 되어 있습니다. 이상적으로는 이 모든 문서를 누군가 풀타임으로 체계에 따라 정리할 수 있겠지만 문서를 작성하는 사람이 이 문서에 따른 개발을 관리하고 또 조립해 컨텐츠로 만들어내기를 모두 담당하는 당연한 개발 스타일 속에서는 오직 문서를 만들어 앞으로 나아가기만 반복할 뿐 그 뒤에 남겨진 문서를 정리할 여유는 보통 없습니다. 그리고 이 상태는 이어서 온보딩 하는 사람에게 즐겁고 흥미로운 고통을 선사합니다.

이 ‘Take This For The Pain’은 마이크 맨지니가 이미 시작한지 25년쯤 된 밴드에 새로운 드러머로 참여하는 과정을 보여줍니다. 농담이 아니라 정말 1985년부터 시작한 이 밴드는 이 시점에 지난 25년에 걸쳐 여러 엘범을 발매했고 사람들의 기억을 시험하는 길고 복잡한 곡들을 여럿 만들었으며 라이브 연주와 스튜디오 연주 사이에 연주 시간이 거의 같은 괴물같은 퍼포먼스를 보여 왔습니다. 또 이 밴드를 처음 본 분들이 이전 드러머인 마이크 포트노이의 드럼셋을 보고 이건 시각적 효과를 위해 꾸며 놓은 것일 뿐 실제 이렇게 많은 소리를 내기 위한 도구가 필요하지는 않을 거라고 이야기하곤 했지만 실제 라이브나 드럼캠을 보면 그 많은 도구들을 하나하나 두들기고 있을 뿐 아니라 라이브에 해당하는 엘범에 따라 새로운 악기가 추가되곤 합니다. 가령 이전에 소개한 Six Degrees of Inner Turbulence는 곡이 끝날 때 커다란 심벌을 쾅! 하고 울리는 소리가 들어있는데 라이브에서는 아예 드럼셋 옆에 커다란 심벌을 매달아 놓고 악보에서 마지막 심벌 한 방을 남겨 놓은 순간까지 연주한 다음 의자에서 일어나 심벌까지 달려가 스틱을 힘껏 휘둘러 심벌을 울리며 곡을 마무리하기도 했합니다. 그러니까 이 25년 된 밴드에 드러머로 참여하기 위해서는 음악적인 창의력을 발휘해 앞으로 이들과 함께 음악을 만들어 나가야 함과 동시에 그들이 지난 세월 동안 만들어 온 곡들을 모두 암기하고 심지어 이 곡들을 만드는데 직접 참여한 전임자만큼 곡을 이해해야만 함을 의미합니다.

영상은 당시 여러 드러머를 대상으로 오디션을 보는 과정 중 최종 발탁된 마이크 맨지니를 위주로 여러 가지 합주 테스트를 하는 장면으로 구성되어 있는데 영상의 앞부분에는 마이크 맨지니가 매니저로부터 연락을 받고 드림씨어터와 오디션을 보기 위해 준비한 다음 뉴욕으로 이동해 오는 장면이 담겨 있습니다. 그런데 뉴욕으로 이동하기 전에 합을 맞춰보기 위해 외워야 할 것이 아주 많다는 이야기를 하는데 그도 그럴 것이 오디션에 연주할 곡은 'A Nightmare to Remember'이지만 이 곡 하나만을 완벽하게 연주한다고 해서 오디션에 통과할 수 있지는 않기 때문입니다. 아마도 마이크 맨지니는 지난 25년에 걸쳐 이 밴드가 만들어 온 수많은 곡들을 모두 암기해야만 할 수도 있습니다. 하지만 그건 그 곡들을 직접 창조해 낸 본인들이라 해도 거의 불가능할 겁니다.. 하지만 정확히 한 곡을 공유했다 하더라도 그 곡 하나를 암기하는 것만 해도 분명 보통 일은 아닐 겁니다. 특히 이 밴드는 드러머를 정말 지독할 정도로 혹사시키는데 영화 백 투더 퓨처에서 주인공 마티가 고등학교 댄스 파티 무대에서 밴드에게 코드만 알려주고 바로 연주를 시작할 수 있는 것과는 달리 음악적인 의도와 학문적 배경을 공유하지 않고는 도저히 코드만으로는 공유할 수 없는 지독하게 복잡한 연주를 해야 합니다. 마이크 맨지니 스스로가 대단한 드러머임에 분명하지만 겨우 주말 동안 곡을 암기해 바로 다음 주 초에 무려 드림씨어터와 테스트 연주를 어떻게 해낼 수 있었을지 그저 음악을 듣기만 하는 사람 입장에서는 상상하기조차 힘듭니다.

이런 굉장한 사례가 생각나긴 했지만 저는 그 정도로 굉장한 상황에 처해 있지는 않습니다. 팀은 그 동안 짧지는 않은 기간에 걸쳐 개발을 계속하며 여러 문서를 남겨 왔습니다. 그 문서들은 모두 컨플루언스에 잘 모여 있고 분명 그 동안의 개발 과정을 통해 생산된 거의 모든 문서가 이곳에 있을 것이 확실합니다. 하지만 개발팀은 항상 앞으로 나아갈 뿐 뒤를 돌아보지 않기에 그때그때 달라지는 요구사항에 맞춘 개발에 사용한 문서는 뒤에 남겨지고 미래에 비슷한 부분에 대한 다른 요구사항은 또 다른 문서로 만들어져 컨플루언스 스페이스의 엔트로피는 계속해서 증가할 뿐 프로젝트가 마무리되고 모두로부터 접근 권한이 제거되는 그 순간까지 절대 수렴하지 않습니다. 하지만 그래도 괜찮습니다. 프로젝트를 처음부터 시작하거나 초반에 참여해 컨플루언스의 엔트로피가 증가해 가는 모든 기간을 함께했다면 터무니없는 복잡도에도 불구하고 이 사이트의 모든 문서가 그리 복잡하지 않다고 느낄 겁니다. 지난 25년에 걸쳐 수많은 곡을 써 온 밴드 역시 그들이 지난 세월 동안 써 온 온갖 곡들을 그리 복잡하다거나 그리 많다고 생각하지 않을 수 있습니다. 문제는 중간에 참여할 때 일어납니다. 중간에 참여하는 사람은 단기간 안에 이 모든 것을 따라 잡아야만 합니다.

일단 거대한 컨플루언스 스페이스 첫 페이지에서 파악을 시작하는 적당한 방법은 만약 팀이나 파트 같은 좀 더 작은 부서 단위로 문서를 정리한다면 제가 속한 가장 작은 단위 부서가 작성한 문서 집합의 가장 최신 문서부터 읽기 시작하는 것입니다. 시간 순서에 따라 프로젝트가 탄생한 그 순간부터 시간 순서에 따라 문서를 읽는 것도 유효한 방법이기는 하지만 상당한 위험성을 동반합니다. 프로젝트에 따라 중간에 여러 가지 이유로 요구사항이 크게 바뀌고 사람들이 바뀌곤 하는데 이에 따라 시간 순서대로 문서를 읽다 보면 종종 현재에 더 이상 유효하지 않을 뿐 아니라 이미 오래 전 폐기된 내용을 읽느라 시간을 낭비할 수 있습니다. 한참 문서를 읽고 있을 때 누군가 뒤에 지나가다가 ‘어. 우진님. 그건 현재 유효하지 않은 부분이에요’ 라고 말한다면 분명 김 빠질 겁니다. 하다못해 스타워즈 시리즈도 시간 순서에 따라 1편부터 보기 시작하면 스타워즈 경험을 완전히 망치는 마당에 시간 순서대로 문서를 파악하는 방법은 적절하지 않습니다. 하지만 시간 역순으로, 그리고 제가 속한 가장 작은 단위 부서가 작성한 문서를 읽기 시작하면 종종 그게 무슨 말인지, 또 무슨 맥락으로부터 나온 말인지 즉시 이해하지 못할 수도 있지만 일단 유효한 내용으로부터 시작할 수 있어 엉뚱한 내용에 시간을 소비하지 않을 수 있습니다.

비슷한 기능이 시간의 흐름에 따라 바뀌어 갈 경우 컨플루언스 전체의 어떤 문서도 특정 기능의 현재 상태를 정확히 표현하지 않을 수 있습니다. 가령 보스 레이드 컨텐츠를 여러 마일스톤에 걸쳐 개발했다 쳐 봅시다. 분명 처음에는 상상 속에 그럴듯하고 재미있는 플레이를 문서로 만들어 개발을 시작하지만 진행에 따라 플레이가 별로 재미있지 않거나 기술적으로 난처한 상황에 도달하거나 외부로부터 새로운 요구사항이 나타나거나 비슷한 장르에 다른 게임이 훨씬 나은 고민의 결과를 출시해 버리는 등 다양한 이유에 의해 기능을 한 번 완성하더라도 이어지는 마일스톤에 계속해서 기능을 고칠 수 있습니다. 그러면 그럴 때마다 각 마일스톤에 해당하는 이 기능의 전체를 설명하는 요구사항을 문서로 작성하기 보다는 그 마일스톤에 변경될 요구사항만 작성하는데 이런 일이 반복될 때마다 한 가지 기능의 현재 상태를 파악하기 위해서는 여러 시간대에 따라 분리된 서로 다른 문서를 시간 순, 혹은 시간 역순으로 읽은 다음 이들을 머릿속에서 시간을 초월해 모두 이어 붙인 최종 결과를 상상해 내야 합니다. 이 과정에서 서로 다른 시점에 같은 기능의 서로 다른 부분을 설명한 문서들로부터 이 작업이 계속된 맥락을 발견한다면 시간을 초월해 이들을 이어 붙이기는 생각보다 쉬워질 수 있습니다. 특히 기획서 뿐 아니라 보통 다른 곳에 분리되어 있고 또 다른 문서로부터 연결이 드문 편일 때가 많은 회의록을 잘 찾아보면 이 곳으로부터 의외의 맥락을 발견해 이후 읽을 문서들의 유효한 부분과 그렇지 않은 부분을 예측하는 행운이 찾아올 때도 있습니다.

현재 시점으로부터, 자신이 소속된 가장 작은 단위 조직으로부터 문서를 읽기 시작하는 방법 뿐 아니라 지금 진행 중인 마일스톤의 핵심 기능을 살펴본 다음 이 기능 각각을 파악하는 것도 나쁘지 않은 접근입니다. 이전에는 단위 부서가 생산한 문서를 시간 역순으로 살펴봤다면 이번에는 최신 마일스톤의 요구사항, 즉 부서에 관계 없이 가장 최신 요구사항들을 모두 파악한 다음 이번에는 부서들의 공간을 초월해 머릿속에서 이들을 모두 연결하면 만들어지는 가상의 빌드를 플레이 할 때 경험할 수 있을 가상의 플레이시나리오를 상상합니다. 최신 요구사항들로부터 게임 전체를 파악하기는 어렵겠지만 당장 이번 마일스톤이 계획대로 진행될 때 만들어질 결과에 기반한 상상 속 플레이시나리오는 이후 이 시나리오를 이전에 작성한 문서를 통해 검증하거나 이번 마일스톤 요구사항에는 정확히 언급되지 않았지만 반드시 필요할 것 같은 기능은 검색을 통해 시간이나 공간에 관계 없이 직접 접근해 머릿속에 완성된 가상의 게임에 빈 공간을 채워 나가면 문서를 파악할 수도 있고 머리 속에 이 모든 문서들에 기반해 이미 완성된 게임의 시각적인 모습을 플레이해볼 수 있어 ‘모든 것을 아는 것처럼 행동’할 수 있기도 합니다.

이 이야기를 보낼 금요일 오전에는 이제 출근하기 시작한 지 다섯 번째 날이 되어 현재에서 과거에 이르는 어지간한 문서를 읽고 이에 기반해 그 동안의 요구사항 변화와 이 변화를 관통하는 맥락을 파악하고 있을 가능성이 높습니다. 그러면 프로젝트의 현재 상태를 어느 정도 따라잡았다고 감히 선언하고 보스와 면담을 통해 제가 이해한 것을 기반으로 저를 어떤 일에 할당하실 계획인지 의견을 듣고 최초의 업무를 조율할 겁니다. 만약 이 시간을 잘 넘긴다면 출근 첫 주는 웬만해선 접근할 수 없는 대규모 상업 게임 프로젝트의 기획서 뭉치에 자유롭게 잡근하며 심지어 문서를 읽는 동안 돈도 받을 수 있는 생각할수록 신기한 경험을 뒤로 하고 본격적으로 프로젝트에 기여하기 시작하며 수습 탈락으로 끝나지 않도록 프로젝트에 기여할 기회를 얻게 될 겁니다.

지금 제 상태는 드러머 마이크 맨지니가 드림씨어터와 테스트 플레이를 하러 뉴욕으로 떠나기 전에 지난 25년에 걸쳐 그들이 써 온 그 모든 곡들을 암기하고 여러 곡들을 관통하는 맥락과 의사결정을 이해하기 위해 노력하며 ‘외워야 할 것이 너무나도 많다’고 이야기하는 것과 비슷합니다. 다만 제가 더 유리한 점이 있다면 마이크 맨지니는 지난 25년 동안의 정보를 습득해야 하지만 저는 그보다는 훨씬 짧은 기간 동안의 정보를 습득해야 한다는 점입니다. 또한 반대로 제가 불리한 점은 드러머를 제외한 무대에 오르는 밴드 멤버는 네 명이지만 제가 읽고 있는 문서를 생산한 사람들은 수 십 명이라는 점입니다.

이 글을 받으실 시점에 저는 문서를 읽었을 뿐 아직 프로젝트에 본격적으로 기여할 기회를 얻기 전일 가능성이 높은데 과연 다섯 번째 출근일에 보스와 면담을 통해 적절한 기회를 얻을 수 있을지 예상해 보시는 것도 나름 재미있을 것 같습니다. 저는 과연 무사할 수 있을까요?

이번 46호에도 다섯 가지 다른 이야기를 준비했습니다.


오픈월드를 만들려면 무엇을 해야 할까
오픈월드 게임을 바닥부터 개발하려면 기획적으로 어떤 준비를 해야 할까요?
말을 조금 덜 못하는 방법
말하던 중 갑자기 단어나 문장이 기억나지 않아 당황한 적이 있나요? 저도 그렇습니다. 조금이라도 완화할 방법을 찾고 있습니다.
불필요한 위험을 감수해야만 하는 규칙
은행에서 대출 받던 경험, 그리고 고용보험에 실업 인정 받는 경험 양쪽 모두 저에게 필요 없는 위험을 감수하게 만듭니다.
퍼포스 아카이브 디팟의 오브젝트 스토리지 지원에 유감
퍼포스 아카이브 디팟의 오브젝트 스토리지 지원은 그럴싸해 보이지만 오브젝트 스토리지에 대해 잘 이해하고 만든 것 같지는 않습니다.
암흑의 숲
페르미의 역설을 설명하는 방법 중 암흑의 숲 이론에 가장 큰 매력을 느낍니다.

몇 주 전 39호 커버스토리 지원 동기: 현대 MMO 디자인에 대한 갈증 끄트머리에 이 글을 받으셨을 금요일 오전에는 어딘가의 오피스 빌딩 안에 있는 작은 회의실에서 이런 저런 질문을 받고 있을 거라고 했었습니다. 몇 주가 지난 이번 금요일 오후에 이 글을 받아 보셨을 즈음에 저는 제 새로운 보스와 제가 앞으로 할 일에 대해 이야기를 하고 있을 겁니다. 일단 앞으로 한동안 제 가장 큰 목표는 수습 탈락 하지 않는 것입니다. 그런 일이 드물다고는 하지만 가능성이 없지 않으니까요. 부디 수많은 문서를 적당한 수준으로 올바르게 파악한 다음 적절한 업무를 할당 받거나 제가 제안해 업무를 무사히 시작할 수 있기를 바래 봅니다.

그럼 또 다음 주에 뵙겠습니다. :)