악의 평범성

현대의 소프트웨어 개발 프로젝트에서도 악의 평범성의 개념에 해당하는 사례를 쉽게 찾아볼 수 있습니다. 그들은 멀리 있지 않으며 우리와 같은 얼굴을 하고 있습니다.

악의 평범성

이 블로그에서는 종종 개함우월주의 처럼 실제 제목과 내용이 다른 글을 종종 작성할 때가 있습니다. 개함우월주의는 열강들의 해군군축조약에 발이 묶인 일본이 태평양에서 미국에 비해 군사력의 우위를 점하기 위해 궁여지책으로 생각해 낸 방법으로 이론적으로는 그럴듯했지만 실제로는 많은 사람들을 죽음으로 내 몬 결과를 가져왔습니다. 하지만 같은 제목을 한 저 글에서는 글 제목에 그 단어를 차용했을 뿐 실제로는 개함우월주의와는 동떨어진 이야기를 하고 있습니다. 커다란 게임 프로젝트 전체를 구성하는 각각의 시스템들이 서로가 어우러져 동작하기보다는 각자가 최대한 다양한 기능을 포함해 최대한의 자기주장을 가지는 모양으로 만들어지기 쉽다는 이야기와 그 결과 각각의 세부 기능은 적어도 문서 상으로는 그럴 듯 해 보이지만 실제 이들이 통합되어 동작하는 소프트웨어는 그렇지 않을 수 있다는 이야기를 하고 있습니다.

이 글 역시 ‘악의 평범성’이라는 제목을 선택했는데 이 말은 한나 아렌트가 1963년 공개한 ‘예루살렘의 아이히만’을 통해 소개한 개념으로 사람들이 스스로 어떤 악한 의도를 품지 않더라도 당연하고 평범하다고 여기며 행하는 일, 그리고 이런 일들이 모여 악이 될 수 있다는 개념입니다. 하지만 이번에도 제목과 달리 이 글은 ‘악의 평범성’의 개념에 빗대어 소프트웨어 개발 프로젝트를 운영하는 과정에서 일어날 수 있는 명백히 잘못된 관리 시도를 설명하는 글이 될 겁니다. 미리 이런 이야기를 하는 이유는 지난번 ‘개함우월주의’를 작성한 다음 완전히 잘못된 검색어를 통한 접근이 일어났기 때문인데 분명 이번에도 그럴 거라고 예상하기 때문입니다. 검색엔진이 충분히 똑똑하다면 분명 이 글은 악의 평범성에 대한 글이 아니라고 설명하며 시작했으니 사람들을 잘못된 검색 결과로 이끌지 않을 거라고 기대해 봅니다.

앞서 게임디자인 직군의 슬픈 점은 나머지 부서들과 목표가 다르다는데 있다는 점을 설명했습니다. 한 프로젝트에 서로 다른 직군을 합쳐 백 명 이상의 사람들이 모여도 딱히 이를 크다고 여기지 않는 분위기이지만 어지간한 소프트웨어 프로젝트 기준으로는 꽤 많은 사람들이 한 가지 목표를 위해 모여 일하는 것은 사실입니다. 다만 다른 소프트웨어 프로젝트에는 거의 대부분이 직접 코드를 작성하는 사람들인데 비해 게임 프로젝트에는 적어도 엔지니어, 아티스트, 게임디자이너의 세 가지 직군의 사람들이 수직계열화 되어 있곤 합니다. 여기에 더해 종종 프로젝트에 수직계열화 되어 있지 않은 조직으로는 사운드, 품질관리, 운영 같은 직군들도 있는데 일단 여기서는 주로 프로젝트에 일반적으로 수직계열화 되어 있는 직군들을 위주로 이야기를 이어 보겠습니다. 게임 소프트웨어 개발 프로젝트에 참여하는 여러 직군의 사람들은 적어도 표면적으로는 게임을 개발하고 출시해 고객들을 대면하고 라이브 서비스 경험을 획득하고 나아가 운이 좋다면 경제적 보상을 획득할 의도를 가지고 있을 거라고 예상합니다. 적어도 맨 마지막의 경제적 보상은 모든 사람들이 가지고 있을 법한 목표일 가능성이 아주 높습니다. 하지만 이를 제외한 나머지 목푯는 그렇지 않습니다. 어떤 직군의 사람들은 자신이 온라인에서 본 요즘 가장 힙한 기능을 프로젝트에 끼워 넣기 위해 여러 가지 무리수를 두기를 불사할 수 있습니다. 또 다른 직군의 사람들은 다음 이직에 사용할 포트폴리오를 제작하는데 집중할 수도 있는데 이는 단기적으로 프로젝트의 시각적인 퀄리티가 올라오는 결과로 이어지기 때문에 프로젝트 관점에서 아주 나쁘다고만 평가하기 어렵습니다.

한편 게임디자인 직군은 다른 직군에 비해 게임을 완성해 런칭하는 것 말고는 다른 목적을 가지고 일하기가 거의 불가능합니다. 이들은 직접 코드를 작성하거나 온라인에서 알게 된 아직 검증되지는 않았지만 획기적이어 보이는 기술을 프로젝트에 적용할 기회를 얻을 일이 없습니다. 또한 이들 중에는 종종 그림을 그리는 재주를 가진 사람들도 없지 않지만 이들의 작업 결과물이 프로덕션에 적용되는 일도 거의 일어나지 않습니다. ‘거의’라고 말한 이유는 종종 그런 사례가 있기 때문인데 이는 나중에 기회가 되면 별도로 이야기해 보겠습니다. 이들의 핵심 작업물인 소위 ‘기획서’는 대체로 회사의 영업 비밀로 취급되며 합법적인 절차를 통해서는 회사 밖으로 나갈 수 없고 설사 회사 밖으로 나간다 하더라도 이 문서만 가지고는 같은 제품을 만들거나 적어도 제품을 만드는데 도움을 받기도 어렵습니다. 게임디자이너들이 프로젝트 수행을 통해 생산한 결과물은 그 자체로 아름답지도 않고 어떤 기술을 대표하지도 않으며 보여줄 수 있는 모양으로 동작하지도 않기 때문에 이 상태 그대로는 이 프로젝트 이외에는 어디에도 사용할 수 없습니다. 프로젝트 바깥으로 단 한 발자국만 벗어나면 거의 쓰레기와 비슷해지는데 이는 여러 게임디자이너들이 이직을 준비할 때 이전에 참여했던 프로젝트 문서에 기반해 포트폴리오를 작성하려 할 때 완전히 막막해지는 핵심 원인이기도 합니다. 게임디자이너들은 오직 게임을 완성해 런칭하고 이 사실이 인터넷 상에 널리 퍼져 회사의 영업비밀을 누설하지 않고서도 합법적으로 접근할 수 있는 정보에 기반할 때 비로소 자신의 업적을 증명할 수 있습니다. 이런 이유로 게임디자이너들은 프로젝트의 런칭이 가장 큭 목표이지만 다른 직군은 그렇지 않기에 개발하며 겪는 여러 상황들로부터 가장 절박하게 굴 수밖에 없고 이 점이 우리 직군을 가장 슬프게 만드는 원인이라고 생각한다는 이야기를 했습니다.

우리 직군은 게임이 런칭 단계에 도달하지 않으면 그 이전에 했던 모든 노력에 대한 정당한 평가를 받지 못하고 이를 증명할 방법도 거의 없어지기 때문에 프로젝트의 흥망성쇠에 자신의 커리어가 완전히 갈려 있지만 다른 직군들은 상대적으로 훨씬 덜 그렇거나 거의 그렇지 않기에 여러 협업 상황에서 우리 직군에 비해 훨씬 더 유보적인 입장을 쉽게 취할 수 있고 또 우리들의 생산성에 직접적인 영향을 주는 어떤 결정을 상대적으로 쉽게 하고 이 결정에 의한 결과를 완전히 무시할 수도 있습니다. 하지만 이런 과정을 살펴보며 이들이 기본적으로 프로젝트의 런칭을 굳이 가로막을 생각은 없으며 또한 자신들의 유보적인 행동을 통해 장기적으로 함께 일하는 게임디자이너들의 커리어에 문제를 일으켜 이들의 직업 안정성과 이에 기반한 생애소득에 근본적인 문제를 일으킬 의도를 가지고 그런 행동을 하는 것은 아닙니다. 아마 그런 수준까지 영향을 준다는 사실 자체를 생각해본 적도 없을 겁니다. 어떤 규모가 큰 사양을 개발하기 위해 넓은 범위에 걸친 다양한 요구사항을 포함한 기획서를 작성하고 이를 협업 부서들에 리뷰하는 회의 자리를 상상해봅시다. 이 요구사항이 충분히 규모가 크고 개발 중인 제품의 여러 부분에 영향을 끼칠 예정이기 때문에 이에 연관이 있는 여러 부서들의 사람들이 모인 가운데 이야기를 시작하지만 이들 중 소수만이 미리 공유한 문서를 살펴보고 회의실에 들어옵니다. 회의 전에 문서를 공유하더라도 최소한 문서에 접근이라도 해 보는 사람들은 거의 라이브 중인 게임에 전체 고객 중 단 한 번이라도 결제한 고객의 비율과도 비슷합니다. 비유가 아니라 실제로 그 정도 비율의 사람들만이 문서를 적어도 열어보기는 합니다. 회사에서 사용하는 문서 도구에는 최근 30일 동안 이 문서에 방문한 사람들의 목록을 볼 수 있어 이를 활용해 회의를 시작할 때 ‘문서는 며칠 전에 공유 드렸는데 미리 읽어 보셨어요?’라고 물으면 아무도 뚜렷하게 대답하지 않지만 ‘그럼 어디 한번 볼까요?’라고 말하며 문서에 방문이라도 했던 사람들의 목록을 열면 다들 어이 없다는 듯 서로를 바라보며 피식 거릴 뿐입니다.

게임디자이너 입장에서 이 요구사항은 분명 규모가 크고 여러 기능에 영향을 끼치기에 분명 한번에 말로만 설명하기 쉽지 않을 거라고 예상했기 때문에 적어도 자신이 관심 있거나 자신이 해야 할 거라고 예상되는 문서 전체의 어느 한 부분 만이라도 살펴보고 들어오기를 원했고 그래야만 장차 실제 개발이 시작되었을 때 최소한 중간 수준의 생산성을 발휘할 수 있을 거라고 예상합니다. 하지만 지금까지 참여해 본 여러 프로젝트에 걸쳐 실제로 문서를 살펴보고 첫 회의 때 당연히 그 정도는 필요할 거라고 생각하는 전문성을 가진 채 회의에 참여하는 사람은 앞서 설명한 대로 단 한 번이라도 결제한 고객의 비율에 한없이 가까운 수일 뿐이어서 회의 내내 저는 이 요구사항을 달성하기 위한 각 협업 부서들의 구체적인 행동 방침과 계획을 협의하는 대신 마치 한글을 읽을 줄 모르는 사람들에게 문서의 내용을 설명하는 것처럼 그 자리에서 모든 내용을 브리핑하고 방금 이 모든 내용을 처음 전달 받은 사람들이 가질 법한 지극히 기초적인 질문에 반사적으로 대응하며 시간을 낭비하고 맙니다. 그래서 지난 '게임디자인 직군의 슬픈 점은 나머지 부서들과 목표가 다르다는데 있다'에서 이런 개인적으로는 답답하고 무책임하다고 여기는 현상이 아무렇지도 않게 일어나고 이런 행동들이 결코 견제 되지 않고 나아가 처벌 받지 않는 이유는 그 회의실에 모인 서로 다른 직군의 사람들이 가진 이 프로젝트를 통한 목표가 서로 다르기 때문이라는 결론에 도달합니다. 유일하지는 않을 수도 있지만 거의 유일하게 프로젝트 전체에 걸쳐 게임디자이너 직군의 사람들은 게임의 출시를 포함한 프로젝트의 흥망성쇠에 자신의 커리어와 직업 안정성, 다음 직장을 구하는 난이도, 생애소득 따위가 완전히 연결되어 있어 개발이 온전히 진행되는데 가장 절실한 요구를 가지지만 다른 직군들은 상대적으로 그렇지 않으며 특히 프로젝트의 런칭에 관계 없이 직업 안정성을 유지하거나 다음 직장을 구하거나 커리어를 유지해 생애소득을 관리하는데 별 지장이 없기 때문에 의심스럽거나 마음에 안 드는 항목에 대해 적극적으로 문제를 해결하는 관점보다는 게임디자이너가 문제를 해결해 올 때까지 기다리는 유보적인 자세를 쉽게 취할 수 있고 이 점이 바로 게임디자이너가 프로젝트를 수행해 나감에 따라 점점 더 우울해지는 이유라고 생각합니다.

그럼 이번에는 여기서 한 발작 더 나아가 프로젝트가 침몰할 때 함께 수장 될 운명이 확실한 게임디자이너 직군과 그렇지 않은 직군들이 모여 게임 소프트웨어 개발 프로젝트를 수행할 때 앞서 설명한 자신의 전문성을 활용한 적극적인 문제해결 보다는 유보적인 자세를 취해 굳이 어려운 일에 참여하지 않고 소극적인 자세를 취함으로써 자신의 목적을 관철하고 이런 행동에 어떠한 제약도 없는 환경에서 이들의 행동이 궁극적으로 이 글의 제목이기도 한 ‘악의 평범성’으로 해석될 수 있다는 가정을 해 볼 작정입니다. 결국 회사에 속해 일하며 급여를 받아 생활하는 사람들이라는 관점에서 모두 다 똑같은 사람들일 뿐이지만 그들 중 일부는 자신들이 수행하는 업무의 큰 결과에 더 강하게 바인딩 되어 있거나 그렇지 않은 차이가 있을 뿐이어서 이를 거창하게 ‘악의 평범성’ 같은 유명하고 또 논쟁적인 주제를 시작할 수 있는 단어에 빗대어 설명하는 것이 과연 올바른가 하는 걱정이 들기도 합니다. 하지만 다른 한편으로는 앞서 조금씩 설명한 자신들이 수행해야 하는 업무를 설명하는 문서를 읽지 않고 회의에 들어와 그 자리에서 처음 내용을 접한 다음 방금 획득한 아주 낮은 수준의 이해에 기반한 거의 의미 없는 질문을 통해 그 자리에 모인 여러 사람들의 긴 시간을 낭비하게 만들면서도 아무런 감정을 느끼지 않는 행동은 이 행동을 하는 각각의 사람들 입장에서는 그저 아무 일도 아니고 평소와 똑같이 아무 준비 없이 그저 지정된 회의실에 들어가 테이블 뒷자리에 앉아 소극적으로 눈만 깜빡이다가 자신이 아는 것 같은 분야가 튀어나오면 갑자기 공격적으로 변해 수준 낮은 질문을 자랑스레 투척해 대는 사람들의 모습을 그 정도는 되는 단어를 통하지 않으면 설명하기 거의 불가능하다는 점에서 그런 단어를 선택할 수밖에 없게 만듭니다. 과연 이들이 처음부터 겸업금지조항을 무시하고 경쟁사에 고용된 채 이 회사에 출근해 프로젝트에 참여하며 자신이 할 수 있는 한 개발 진행을 늦추고 잘못된 의사결정을 통해 비용을 낭비하게 만들며 극도로 소극적인 행동을 통해 상대적으로 각각의 분야에 전문성이 부족한 게임디자인 직군이 여러 번에 걸쳐 요구사항을 변경하고 이를 반복해서 문서를 읽지도 않고 나타난 사람들에게 설명하는 과정을 반복하게 만들어 궁극적으로 자신을 고용한 경쟁사에 이익을 줄 목적으로 그 자리에 앉아 그런 행동을 하고 있지는 않을 겁니다.

이들이 경쟁사에 고용되어 이 회사의 겸업금지조항을 어기고 있지 않다고 가정하면 이들은 그저 현대를 살아가는 뻔한 회사원일 뿐입니다. 이들 역시 아침에 일어나 늙고 지친 몸을 이끌고 사람들로 가득해 조금만 더 있으면 온몸이 압박 되어 쓰러질 것 같은 지하철에 실려 정신을 잃기 직전에 회사가 있는 역에 도착해 지하철에서 내려 역 출구에서 회사까지 이어지는 오르막을 숨 차 하며 올라 출근하고 아직 덜 깬 잠을 몰아내기 위해 커피를 마시지만 커피를 가지러 간 시간이 15분을 넘기면 이 시간을 비용을 지불해 마땅한 업무시간으로부터 제외하기 위해 호시탐탐 우리들을 감시하는 인사 부서의 횡포에 시달리는 우리들과 똑같은 사람들일 겁니다. 이들 역시 자신에게 할당된 지라에 자신들의 현재 상황과 일상적인 업무 퍼포먼스, 그리고 요즘의 개인적 사정에 의한 퍼포먼스의 변화를 고려하지 않고 표시된 마감 날짜에 맞춰 업무를 완료하기 위해 이런 상황을 개선하는데는 아무런 관심 없는 상사를 욕하지만 차마 그 사람을 마주하고는 그럴 수 없어 일하는 내내 깊은 한숨을 내 쉴 뿐인 우리들과 똑같은 사람들입니다. 또한 이들 역시 퇴근 시간이 가까워 오면 지금 퇴근할지 아니면 아침과 마찬가지로 그 안에 실려 있으면 거의 혼절하기 직전에서야 목적지에 도착하는 지하철에 지금 이 시간에 들어가 자신의 한계를 시험하며 퇴근하거나 아무 것도 할 수 없이 회사에서 남은 일을 좀 더 수행하다가 집에 갈 지 고민하고 또 집에 가면 자신을 기다리고 있을 컴퓨터나 고양이, 사람 가족을 마주하고 이들과 회사에서와는 아주 다른 모습으로 남은 시간을 보내고 잠자리에 들어 다음 날 출근을 준비하는 그런 우리들과 똑같은 그런 평범한 사람들일 것입니다. 이들 역시 월급날이 되면 회사에서 입금된 돈이 눈 깜짝할 사이에 수많은 주체들로부터 알아서 빠져나가는 모습을 실시간으로 지켜보며 계좌에 입금되어 있는 돈의 총액이 아주 잠깐 동안 급격히 늘어났다가 다시 급격히 감소하는 모습을 보며 이 생활이 결코 영원히 끝나지 않을 거라는 사실에 절망하고 그나마 그 안에서 어떻게든 쪼개 모은 돈으로 자신이 원하는 일에 조금이라도 쓸 수 있다면 그 작은 순간에 아주 작은 행복을 느끼는 아주 보통 사람들일 겁니다.

그렇기에 이들이 우리들과 같은 배를 타고 먼 바다를 항해하는 도중 배에 묶여 있는 우리들에게 의도하지 않고 행하는 여러 가지 행동들은 너무나 평범한 사람들에 의해 일어나는 악의 평범성이라고밖에 설명할 수가 없습니다. 일을 처음 시작하던 시대에는 우리들이 개발하는 소프트웨어가 얼마나 복잡한지 잘 몰랐고 그 복잡도를 통제하기 위해 상당한 개발 외적인 자원이 필요하다는 사실을 잘 몰랐습니다. 앞서 프로젝트에 수직계열화된 세 가지 직군에 대해 설명했는데 사실 이 세 가지 직군만으로는 어느 시대에는 제품을 완성하고 출시할 수 있었으나 현대에는 더 이상 그렇지 않습니다. 흔해 빠진 양산형 MMO 게임이라도 캐릭터가 세계를 단 한 발짝이라도 걸을라 치면 내비게이션 메시에 기반해 현재 위치와 목적지 사이에 경로를 계산해 이 경로에 따라 움직여야 하고 이 과정에 다른 플레이어나 몬스터와 만나면 이들 사이를 자연스럽게 피해 이동하기 위해 다양한 로직이 필요합니다. 겉보기에는 아주 간단해 보이는 모바일 게임이라도 그 뒤에서는 온갖 복잡한 요구사항에 기반해 빌드를 개발하는 개발팀이 있고 이를 서비스 모양으로 동작하게 만드는 엔지니어와 사업 부서들이 있으며 고객들의 요구사항을 수집해 이를 직접 해결하거나 개발팀에 전달하는 역할을 하는 운영 부서들도 있습니다. 현대 게임 소프트웨어의 복잡도가 증가함에 따라 프로젝트에 이 복잡도 관리를 분산하고 나머지 직군 사람들이 자신의 업무에 조금 더 집중할 수 있도록 사람과 사람 사이, 사람과 자원 사이, 그리고 자원과 회사 사이를 연결하는 역할을 하는 관리 직군을 프로젝트에 수직계열화 한 사례들이 나타났고 이런 시도는 처음에는 이들 자신이 뭘 해야 하는지 잘 모르는 사람들이 채용되었기에 아주 쉽게 실패하곤 했지만 시간이 지나면서 이들이 자신의 임무를 인식하고 자신들의 전문성을 발휘하기 시작하자 이런 관리 조직의 도움을 받는 프로젝트와 그렇지 않은 프로젝트 사이에 생산성의 차이가 발생하기 시작합니다.

이런 관리 부서가 처음 프로젝트에 수직계열화 되던 시대에는 이 관리 조직에 포함된 사람들을 개발팀에서 일해본 적 없는 사람들을 데려다 앉혀 놓은 덕분에 자신들의 위치와 역할을 잘 인지하지 못하는 경우가 많았습니다. 처음 경험해본 관리 부서는 마치 자신들이 프로덕트 오너인 것처럼 행동해 여러 회의에 참여하며 마치 디렉터가 그러는 것처럼 스스로 요구사항에 영향을 끼치고 의사결정에 참여하기도 했습니다. 예상할 수 있듯 이들의 개발에 대한 전문성은 없는 것을 넘어 음수 영역으로 넘어갈 지경이었지만 이들이 프로젝트에 미칠 수 있는 영향력은 그렇지 않았기 때문에 이들에게 자신의 임무를 인지시키는데 아주 큰 시행착오를 거쳐야만 했고 그 후에도 만족할 만한 수준에 도달하지 못한 적도 있습니다. 또한 이들이 자신들의 임무를 인지하더라도 시간이 지나면 이들의 판단과 이들이 수립한 정책에 의해 프로젝트 전체에 정보가 오가는 방식, 일이 진행되는 방식, 사람이나 자원이 서로 연결되는 방식에 큰 영향을 끼치게 되는데 이 과정에서 자신들이 프로젝트 전체에 얼마나 큰 영향을 끼치고 이에 따라 생산성이 크게 오르내린다는 사실을 인지하지 못해 얕은 생각에 기반한 영향이 큰 정책 변경을 아무렇지 않게 수행해 프로젝트 전체의 생산성이 악영향을 끼치면서도 정작 자신들이 얼마나 이상한 행동을 하고 있는지 인지하지 못하기도 합니다. 한번은 업무용 메신저에 마일스톤 핵심 목표 몇 가지에 대해 주로 이야기할 각각의 채널을 생성했는데 여기까지는 여느 프로젝트라도 비슷한 정책을 취해 왔기에 전혀 이상하지 않았습니다. 서로 다른 커다란 주제들이 같은 채널에서 진행될 경우 이 채팅창은 순식간에 아수라장이 될 수도 있었고 실제로 업무용 메신저 중 하나인 슬랙이 초기에 스레드 기능이 없었을 때 한 채널에서 여러 가지 이야기를 하다 보면 실제로 종종 그런 아수라장이 벌어지곤 했습니다. 이에 따라 업무를 큰 카테고리 별로 구분해 이에 따른 채널을 만들어 이야기하기 시작했는데 이는 어느 정도 한 채널에서 온갖 종류의 업무 대화가 이어져 난리가 나는 상황을 줄여 주었습니다. 또한 시간이 지나며 모든 채팅마다 그 채팅에 답글을 붙여 한 채널의 이어지는 채팅으로부터 단 한 번만 분리될 수 있는 스레드 기능이 추가되면서 이전에 한 채널에러 여러 가지 주제에 대해 말하며 벌어지던 아수라장은 잘 일어나지 않게 되었습니다. 슬랙 스스로가 한 채널에서 일어나는 더 강한 복잡도를 그 스스로 감당할 수 있는 모양으로 개선됩니다.

그런데 이런 도구의 변화를 잘 지켜보고 각 변화가 가지는 의미를 이해하지 못하면 그저 과거의 경험에 기반해 완전히 이상한 정책을 수립하게 될 수도 있습니다. 마일스톤의 핵심 목표를 구분하는 몇 가지 카테고리에 대해 주로 이야기할 각각의 채널을 만드는데 까지는 괜찮았지만 이 다음의 정책은 아무리 생각해도 이상하다고 느낄 수밖에 없었는데 각 카테고리 별로 만들어진 채널에는 관리자가 미리 카테고리에 해당하는 각각의 업무를 시작하는 글을 하나 씩 만들어 놓았습니다. 여기까지도 어쩌면 채널을 맨 처음 시작할 때 그 채널의 목적을 채널 맨 위에 선언해 놓음으로써 나중에 온보딩 하는 사람들이 채널을 맨 처음부터 읽어 내려오더라도 이 카테고리에 해당하는 맥락을 이해한 다음 이어지는 대화를 따라갈 수 있는 여지를 줄 수 있기에 나쁘지 않은 접근이라고 생각했습니다. 그런데 그 다음에 이어지는 정책은 제가 제대로 이해한 것인지 의심하게 만들었는데 이제부터 이 채널에는 새로운 대화를 만들 수 없으며 어떤 말이든 업무에 관련된 말을 하고 싶으면 미리 관리자가 채널 맨 위에 만들어 놓은 대화에 스레드를 통해서만 말할 수 있다는 것이었습니다. 가령 마일스톤의 한 가지 카테고리가 있고 이 카테고리에 해당하는 다섯 가지 세부 업무가 있다 칩시다. 물론 이 각각의 세부 업무 역시 규모가 그리 작지 않으며 이 각각의 바운더리를 확정하기도 쉽지 않은 모양입니다. 이를 더 잘 나눌 수 있었더라면 좋았겠지만 게임디자이너로써 제 역량의 한계, 시간 부족, 그리고 여러 기능이 멧돌에 사정없이 갈려 돌아가는 현대 게임의 복잡도 등 여러 가지 이유로 인해 각각의 요구사항은 나머지로부터 잘 분리되지 않은 상태입니다. 그런데 어느 주제에 대해서든 업무 관련으로 이 채널에 말을 하기 위해서는 먼저 자신이 할 예정인 말의 카테고리를 잘 선택한 다음 미리 생성된 올바른 말의 답글로만 말할 수 있다는 것입니다. 멀쩡히 채널을 만들고 그 채널 밑에는 너무나 자연스럽게 말하는 인터페이스가 있지만 우리는 그 말하는 인터페이스를 사용하면 안됐습니다.

현대의 온라인 게임 소프트웨어는 이를 개발하는 평범한 우리들의 지능을 봐 주지 않고 인정사정없이 복잡하며 이를 지탱하기 위해 우리들은 지라나 컨플루언스 같은 강력한 정보시스템을 사용합니다. 그럼에도 개발하며 일어나는 온갖 예외상황과 의사결정, 요구사항의 변화 따위를 정보시스템에 깔끔한 모양으로 반영하는 것이 결코 쉽지 않음을 알기에 이전까지 프로젝트를 수행하며 집중했던 것 중 하나는 모든 사람들에게 업무를 수행하며 일어난 예외상황, 의사결정, 요구사항의 변화, 새로운 정보 따위를 최대한 정보시스템에 적재하도록 요구하되 이 과정을 최대한 단순하고 쉽게 만들어 정보를 기록하는데 부담을 느끼지 않도록 만드는 것입니다. 비교적 잘 훈련된 게임디자인 직군 조차 자신들이 편하게 협업 부서 사람들과 이야기를 주고 받은 다음 그 결과에 따라 업무 진행에 영향을 받은 상태이지만 이를 너무 쉽게 문서화 하지 않곤 합니다. 하지만 여기에 무턱대로 모든 대화를 문서화 하라고 말하면 사람들은 문서화 대신 문서화 필요를 주변이 눈치 채지 못하도록 보이지 않는 곳에서 의사결정을 하기 시작하며 그 결과 이전과 똑같이 개발되는 것처럼 보이지만 이전과 달리 의사소통이 일어나지 않는 것처럼 보일 수 있습니다. 당연히 개발이 진행되고 있다는 것은 의사소통이 일어나고 있다는 말인데 개발만 일어나고 의사소통이 일어나지 않는 것처럼 보인다면 잘못된 정책에 의해 사람들이 의사소통 사실을 숨기고 있다고 평가해야 합니다. 이런 잘못된 상황을 완화하기 위해 정보를 기록하는 행동을 훈련 시킬 때는 최대한 이 과정에 장애물을 없애고 생각하지 않고 바로 기록할 수 있도록 가이드해야 합니다. 가령 회의록을 작성할 때 특정 폼에 반드시 채워야만 하는 정보가 있고 또 회의록을 위치 시켜야 하는 정확한 위치와 규칙이 있으며 이를 지키지 않을 때 처벌 받는다면 숨 쉬듯 일어나는 의사소통 결과를 회의록에 남길 생각을 했다가도 이내 귀찮아지기 쉽기 때문에 이런 절차를 최대한 제거해야 합니다. 더욱이 회의록은 회의록끼리 모아 둬선 안되기도 합니다.

사실 컨플루언스 같은 정보시스템의 여러 특성은 이런 상황에 적용하기 좋은데 한 번 페이지를 만들면 이 페이지가 페이지 트리 상 어느 위치에 있든 주소가 변하지 않는 점은 일단 아무 위치에나 문서를 만든 다음 나중에 올바른 위치로 옮기더라도 아무런 문제를 일으키지 않습니다. 또 회의록에 굳이 쓸모없는 정보를 기입하지 않도록 자유롭게 빈 페이지에 작성하게 하고 회의록 템플릿을 만들어 당장 정보를 기록하려 할 때 어느 템플릿을 선택할지 고민하게 만들거나 어느 위치에 문서를 생성할지 고민하게 만들지 않아야 합니다. 특히 회의록에 회의 시각, 장소 따위를 기입하게 만드는 경우도 있는데 긴 세월에 걸쳐 고민해 봤지만 날짜 정도만 있으면 충분한데 굳이 시각이나 장소를 기입해야만 하는 명백한 이유를 납득하지 못했고 이런 정보를 기록하고 있었다면 기록하지 않도록 해 누구나 부담 없이 아무데나 일단 정보를 기록해 저장하고 위치 수정, 추가 정보 기입 따위는 나중에 천천히 하도록 해 왔습니다. 사실 저 자신은 그런 문서를 만드는데 꽤 잘 훈련되어 있어 거의 저와 스치고 지나가기만 해도 문서가 만들어지고 이 문서의 액션 플랜이 잘 추적되도록 행동하는 것은 사실이지만 모든 사람들에게 똑같은 행동을 결코 요구할 수 없다는 사실을 잘 이해하기에 최대한 아무렇게나 만들어도 좋으니 일단 문서를 만들고 나머지 규칙은 지키지 않아도 되고 나중에 지켜도 된다는 식으로 정책을 관리하고 있습니다. 그런데 앞서 설명한 업무용 메신저의 특정 채널에서 특정 카테고리의 업무에 해당하는 말을 하려고 할 때 말 하기 전에 어떤 채널에 말해야 하는지, 그리고 어떤 스레드에 말해야 하는지 고민하게 만드는 절차를 추가한 행동은 마치 방금 일어나느 의사결정을 빠르게 정보시스템에 추가하려고 할 때 어느 위치에 문서를 생성해야 할 지, 또 어느 템플릿을 사용해야 하는지, 그리고 템플릿에 어떤 정보를 채워야 하는지 고민하게 만드는 것과 비슷합니다. 어떤 순응적인 사람들은 좀 느리게 행동하기는 하겠지만 이 절차를 모두 따를 겁니다. 하지만 저와 비슷한 충분히 똑똑하지 않은 사람들은 그런 사전 절차를 수행하다가 막상 자신이 기록하려 했던 정보를 잊어버리기도 하고 또 저와 비슷한 지독하게 게으른 사람들은 그런 귀찮은 절차를 통해 정보를 기록하고 또 업무용 메신저에 말하느니 그냥 조용히 방금 획득한 정보에 기반에 업무 방식을 변경하기는 하겠지만 이를 결코 정보시스템에 기록해 미래의 자기 자신을 포함한 프로젝트 전체에 기여하지 않는 방식으로 행동하게 됩니다.

어쩌면 제가 작은 일을 너무 심각하게 말하는 것이 아닐지 의심이 드실 수 있습니다. 깊이 이해합니다. 하지만 현대의 소프트웨어 프로젝트는 그 지독한 복잡성 때문에 소프트웨어를 완성해 런칭에 도달하고 라이브 서비스를 이어가기가 정말 어렵습니다. 지하철에 나오는 그 수많은 게임 광고를 보고 이런 소프트웨어들이 꽤 간단히 만들어진다고 생각할 수 있지만 실제로 지하철에 광고할 정도로 준비된 게임 소프트웨어는 회사들이 개발을 시도하는 전체 게임 소프트웨어의 아주 작은 비율에 지나지 않습니다. 이런 비율 역시 전체 고객 중 단 한 번이라도 결제한 고객의 비율과 비슷하거나 이에 미치지 못할 가능성이 있습니다. 이런 상황에서 최소한의 인디비주얼 컨트리뷰터 단계를 넘어선 누군가라면 프로젝트 전체의 필요 없는 비용을 줄이고 생산성을 올릴 수 있는 방법들을 진지하게 고민해 아무리 작은 일이라도 실천해야만 합니다. 이런 실천들이 모여 프로젝트를 기한 내에 완수하게 만들어 배에 묶여 있는 불쌍한 게임디자이너들이 물에 빠져 죽지 않게 만들 수 있습니다. 하지만 반대로 이런 작은 낭비들이 오랜 기간에 걸쳐 켜켜이 쌓이면 뭔가 개발이 일어나고는 있지만 팀 사이에 도통 의사소통을 하는 것 같지 않고 회의실에 모인 사람들은 여전히 그 누구도 문서를 살펴보지 않고 들어왔으면서도 당당하게 행동하며 분명 여러 의사결정이 일어나고 있는 것 같지만 비싼 사용요금을 지불해 운영하고 있는 정보시스템에는 아무런 정보도 추가되지 않으면서도 그나마 정보시스템에 남아 있는 최신 문서와 실제 빌드 사이에 차이가 점점 더 벌어지는 흔한 상황에 쉽게 처하게 됩니다. 때문에 이런 각각의 참여자들이 프로젝트에 기여하기 위해 수행해야 하는 행동을 최대한 단순하게 만들고 이 과정에 일어나는 낭비를 적극적으로 줄여야만 합니다. 만약 의도적으로 이런 행동을 더 복잡하게 만들어 실천하기를 요구하고 명백히 생산성을 떨어뜨리는 이상한 규칙을 지키도록 요구하며 이에 따른 처벌 규칙을 만드는 누군가들이 있다면 프로젝트에 발이 묶여 프로젝트의 침몰과 제 커리어, 직업안정성, 생애소득이 연결된 입장에서 이들의 행동을 악의 평범성이라고 정의할 수밖에 없습니다.

이들이 악의 없이 프로젝트에 기여하기 위해 수행한 의사결정과 이에 기반해 수립된 복잡하고 불편한 규칙, 이 규칙을 지키지 않을 때 주어지는 패널티 등은 이들에 대해 건조한 설명을 듣거나 문서로 상황을 파악한다면 아무런 문제도 없어 보일 수 있습니다. 이들은 악의가 없고 그저 순수하게 상황을 개선하려는 의도를 가지고 이런 규칙을 만들었을 수 있습니다. 하지만 결과적으로 이들은 개발 속도를 느리게 만들고 사람들 사이에 의사소통을 차단하거나 의사소통이 눈에 보이지 않는 곳에서 일어나고 기록을 남기지 않는 모양으로 수행되게 만들어 결과적으로 회사의 비용을 낭비하게 만듭니다. 1년 더 빨리 런칭할 수 있었던 프로젝트를 1년 더 걸려 개발하게 만들었다면 이들의 프로젝트에 기여하려는 악의 없는 순수하고 또 순진하기 짝이 없는 행동은 분명 악의는 없었지만 회사에 수백억원에 달하는 손해를 입히고 또 그 배에 발목이 묶여 함께 가라앉을 운명인 사람들의 생애소득을 망가뜨리는 결과를 가져옵니다.

분명 이들의 행동에는 악의가 없을 겁니다. 적어도 그렇게 믿고 싶습니다. 하지만 이들의 프로젝트를 위한 순수한 열정에 기반한 행동은 악의적인 결과를 가져오며 이는 그런 행동을 하는 사람들을 적어도 시각적으로는 나머지 사람들과 구분할 수 없을 정도로 평범한 사람들이 수행하는 평범한 행동일 뿐이라는 사실로부터 감히 악의 평범성이라고 부를 만한 일이라고 생각합니다. 프로젝트에 발목이 묶인 채 우리들을 깊고 차가운 바닷속으로 끌어들여 허파에 물을 가득 머금은 채 죽게 만들 수도 있는 이런 악의 없는 순수한 행동에 어떻게 대항해야 할까요? 최근 이 주제에 대해서 어른스러운 방법과 어른스럽지 못한 방법이라는 관점으로 생각해 보고 있습니다. 제가 깊은 바닷속에서 허파에 공기 대신 물이 가득 찬 채 죽어가고 있지 않다면 이 주제에 대해 이야기할 기회가 아마도 찾아올 겁니다. 그렇지 않다면 저는 바다 속에 있을 겁니다.

이번 70호에도 지난 2주간 공유한 이야기를 함께 보내 드립니다.


팰월드 서버 운영과 라이브 서비스 운영
한동안 팰월드 서버를 운영했는데요, 이전에 다른 게임 서버를 운영할 때에 비해 재미있는 점이 많았습니다.
마스토돈에서 중요한 것은 오직 소셜그래프 뿐이다
마스토돈을 사용하기 시작한지 2년 정도가 지났습니다. 고민 끝에 개인 도메인 이름을 사용하는 서버 대신 kono.pub 서버로 이전하기로 했습니다.
게임디자이너가 블로그 쓰는 방법
요즘 세상에도 블로그를 쓸 작정이라면 게임디자이너들도 글 쓸 거리가 많습니다.
2024년 회고
매년 점점 더 쪽팔려지는 자신을 대면해 봅시다.

어쩌다 보니 글이 공유되는 시점에 제가 실제 세계에서 겪은 것과 관련이 있을 것처럼 보이는 일이 일어나 마치 제가 실제 세계에서 겪은 일을 바로 그 시점에 글로 만든다는 오해를 받을 일이 있었습니다. 그런데 실은 제가 공유하고 있는 글들은 약 4개월 전에 미리 작성해 놓은 것들입니다.

미리 작성해 둔 글과 글에 사용한 이미지와 기타 자료들을 퍼포스를 사용해 관리하고 있는데요, 2025년 1월 10일 금요일 기준 5월 2일에 보낼 78호 레터의 글 다섯 개 중 네 개를 작성해 놓은 상태입니다. 중간에 작성해서 끼워 넣은 2024년 회고 같은 특별한 경우가 아니면 대략 넉 달 전에 작성한 글을 각 주에 공유하고 있습니다. 그래서 만약 제가 실제 세계에서 한 행동이나 겪은 일과 그 주에 공유하는 글에 어떤 관련이 있다고 느끼시더라도 이는 넉 달 전에 작성한 글과 현재의 사건이 비슷해 보이는 우연입니다. 목표는 곽재식 작가님이 과거에 연재하실 때 그러셨다는 전설처럼 대략 반 년 치 글을 미리 확보해 놓는 것입니다. 😏

실은 미리 작성해 둔 글을 넉 달 뒤에 보시는 대신 그 주에 시의 적절하게 보실 방법도 있습니다. ☕Buy me a Coffee에 만들어 둔 멤버십을 사용하시면 좀 더 현재에 가까운 시점에 작성한 글을 보실 수도 있습니다.

그럼 다음 2주가 지나고 다시 뵙겠습니다.