★ 이 책에서 다루는 내용 ★
■ 게임 개발 맥락에서의 스크럼 목표, 역할, 실천방안에 대한 이해
■ 게임의 비전, 피처, 진행 계획과 의사소통
■ 격주마다, 심지어는 날마다 게임을 실행 가능한 상태로 유지하는 반복 기술 사용
■ 모든 팀 구성원이 자신의 역할을 성공적으로 수행하기 위한 지원
■ 개발 과정에 대한 안정성과 예측 가능성 개선
■ 유동적인 시장의 모호한 요구사항에 대한 관리
■ 스크럼을 지리적으로 분산된 개발 팀으로 크게 확장
■ 스크럼 시작하기: 관성을 극복하고 조직의 현재 프로세스에 스크럼을 통합
★ 이 책의 대상 독자 ★
이 책은 프로그래머, 프로듀서, 아티스트, 테스터, 기획자로 구성된 애자일 팀을 구성하고, 팀 안팎으로 효율적인 협력을 촉진하는 전 과정을 다룬다. 또한 장기적인 계획에서부터 진척에 대한 추적과 지속적인 통합까지, 저자가 현실에서 어렵게 얻은 경험을 바탕으로 수많은 팁과 트릭, 해결책을 제시한다.
★ 이 책의 구성 ★
1부, '문제와 해결책'은 게임 산업의 역사로부터 시작한다. 게임 산업의 상품과 개발 방법론이 어떻게 변화되어 왔는가? 무엇이 우리를 비대한 예산, 절대로 맞출 수 없는 일정, 프로젝트 초과근무, 죽음의 행진으로 이끌었는가? 이어서 애자일에 대한 개요를 소개하고 애자일 가치가 어떻게 게임 개발 관리의 문제에 도움을 줄 수 있는지 이야기한다.
2부, '스크럼과 애자일 계획'에서는 스크럼, 스크럼의 역할과 실천방안, 스크럼을 게임 개발에 적용하는 방법에 대해 살펴본다. 또 게임의 비전, 피처, 진척에 대해 의사 소통하고, 계획하고, 단기 및 장기적으로 반복하는 방법을 설명한다.
3부, '애자일 게임 개발'에서는 일부 스크럼 실천방안에 프로덕션을 위한 린 실천방안 및 칸반 실천방안을 보강할 수 있는 것을 포함해, 게임 개발 프로젝트 전반에 걸쳐 애자일을 사용하는 방법을 설명한다. 또한 애자일 팀과 전 세계에 걸쳐 분포되어 있는 대규모 직원들에게 스크럼을 확장하는 방법을 알아본다. 또한, 팀이 게임을 구축하는 모든 사항을 반복하는 데 필요한 시간을 줄임으로써 지속적으로 자신의 개발속도를 향상시키는 방법에 대해 검토한다.
4부, '애자일 관심 분야'에서는 광범위하고 다양한 각각의 분야가 한 애자일 팀에서 함께 일하는 방법에 대해 살펴본다. 또한 각 분야 리더의 역할과 리더를 스크럼 역할에 매칭시키는 방법을 설명한다.
5부, '시작하기'에서는 당신의 스튜디오와 게임회사에 애자일 실천방안을 도입하는데 따르는 어려움과 해결책을 상세히 알아본다. 문화적 관성을 극복하고 애자일 원칙의 훼손 없이 스튜디오 고유의 프로세스에 통합시키는 것은 시간이 걸릴 수 있고 도중에 많은 어려움이 생긴다. 5부를 구성하고 있는 내용은 이런 어려움을 헤쳐나갈 수 있도록 안내해준다.
이 책은 애자일 게임 개발을 위한 출발점이지 결코 종착점이 아니다. 스크럼, XP, 린, 칸반, 사용자 스토리, 애자일 계획 등 게임 개발에 대한 좋은 책들이 있다. 이런 책들은 지속적인 향상으로 가는 길에 필요한 모든 세부사항을 제공해준다.
아이폰, PC, 대규모 멀티플레이어 온라인 게임 개발자는 여기에 설명한 실천 방안들을 사용한다. 나는 기술적 배경을 바탕으로 한 많은 이야기를 공유했고 이중에는 애자일 프로그래머를 위한 실천방안들이 많지만, 이 책은 전체 산업에 적용할 수도 있다. 다양한 분야, 장르, 플랫폼에 관계된 많은 사람들로부터 얻은 이야기와 경험들도 이 책에 모두 담았다.
★ 옮긴이의 말 ★
내가 처음 애자일을 접한 것은 1999년이다. 개발자, 설계자, 프로젝트 관리자 등으로 활동했던 나는 당시 수백억 원을 들여 많은 외국인들과 함께 웹 기반 투자 시스템을 만드는 회사에 신용분석(CreditAnalytics) 팀장으로 합류했었고, 쉽지 않은프로젝트 상황을 잘 이끌어가려고 고군분투하고 있었다. 여러 명의 인도 출신 개발자들이 풀(Pool) 형태로 존재했고, 새로운 일이 내게 주어질 때마다 개발자 풀에서 협업을 해본 경험이 없는 사람을 데려와서 매우 생소한 개발 업무를 맡겨야만 했다. 업무를 가르쳐주기도 어려웠고, 전체 아키텍처 및 관련 모델, 개발 환경 등을 짧은 시간 내에 전달하는 것도 쉽지 않았으며, 이전 프로젝트 결과들과 지속적인 통합을 하면서 일관성을 유지하는 것도 쉽지 않았다.
이때 XP를 알게 되었다. 풀로부터 데려온 개발자에게, 비즈니스 전문가들과 논의해 만들었던 스펙 내용을 보면서 코딩하는 것을 한 시간쯤 시범적으로 보여주었고, 한 시간은 직접 코딩하도록 시키면서 업무, 공통 모듈, 프로그래밍 스타일 등에 대한 개발 관련 코칭을 수행했다. 그렇게 P C 한 대로 일주일쯤 함께 짝 프로그래밍(Pair Programming)을 진행하면, 이후에 필요한 일은 스펙을 통해 적절하게 협업할 수 있는 상황이 되었다. 이전 프로그램이나 다른 사람들이 작성한 프로그램들을 개발자가 직접 개선하기 위해 코드 소유권을 공유할 수밖에 없었고, 프로그램 대부분이 기업 회계를 위한 계산과 각종 금융 상품 처리 등에 관한 것이다 보니 계속 회귀 테스트를 할 수밖에 없는 상황이어서, 항상 테스트를 염두에 두고 개발해야만 했다.
회사 전체의 개발/관리 프로세스를 따르면서 우리 팀은 UP(Unified Process) 방법론을 관리의 틀로 활용하며 로즈(Rose)라는 모델링 도구로 UML 모델을 만들고, 로직이 없는 스켈레톤 코드(Skeleton Code)를 생성해 개발자에게 배포했으며, XP를 통해 개발자들과 의사소통했다. 그 당시 빌드를 전담하는 전문 빌드 마스터가 있어서, 지속적 통합 빌드 체계도 유지할 수 있었다. 프로젝트 관리자는 미국인 여성으로 MBA 출신이었고, 소프트웨어 아키텍트는 중국계 캐나다 사람이었으며, 영국이나 홍콩 등 다양한 출신의 영업 및 국제법 전문가 등도 있었다. 그리고 투자사들은 항상 우리들의 성과에 대해 관심을 표명하고 있었다. 우리는 급변하는 금융 상황에 대처할 수 있는 빠른 피드백이 필요했고, 내게 XP는 그 당시의 어려운 상황을 타개할 수 있는 유일한 탈출구였다.
모델링 및 프로그래밍 관련 저서를 출간했던 나는 저술 경험을 살려 XP에 대한 좋은 경험을 공유하고자 번역서인 『XP 도입을 위한 실전 입문: Extreme Programming Installed』를 2002년 출간했다.
이후 삼성생명 비전속 등 다양한 프로젝트들을 수행하면서 팀 활동에 XP를 적용해 빠른 피드백을 만들어낼 수 있었고, 2007년에는 증권사의 차세대 프로젝트에 스크럼(Scrum)을 적용해서 프로젝트 성공에 크게 기여할 수 있었다.
2007년 7월부터 2009년 5월까지 증권사 차세대 프로젝트에서 내가 맡았던 역할은 소프트웨어 아키텍트(Software Architect)이자 변화관리자(Change Agent)였다. 프로젝트 진행 중에 증권사 CIO 및 현업과 전산 리더들, 수행사였던 삼성SDS의 PM, PL, QA 등 주요 리더들, PMO를 모두 포함한 스크럼 조직을 구성했고, 나는 스크럼마스터(ScrumMaster)가 되어 매일 스크럼 미팅(Daily Scrum Meeting)을 진행했다. 또한, 매일 진행된 미팅을 뉴스페이퍼(Daily News Paper)로 만들고 인쇄해서 프로젝트 관련 전체 인원(250여명)에게 배포했다.
20년이 넘는 나의 IT 경력에서 가장 값진 경험을 바로 이때 얻었다. 스크럼마스터로서 전사 프로젝트의 의사소통 메커니즘을 이끌어냈고, 날마다의 대면 이슈 관리를 통해 빠른 상황 대처를 할 수 있었다. 그리고 필요한 정보 공유를 통해 전체 프로젝트의 이해 공유(Shared Understanding)를 향상시킬 수 있었다. 비록 전체 프로젝트의 공식 방법론이 정보공학 방법론이었고 C 언어가 주 언어였지만, 스크럼과 같은 애자일 방식이 전사 차원의 프로젝트 성공에도 일조할 수 있다는 확신을 갖게 해주는 사례를 만들 수 있었다.
크고 작은 프로젝트 수행이 끝날 때마다 프로젝트 경험을 정리하면서 모델링이나 프로젝트 관리 관련 책과 애자일 관련 책의 번역 작업을 꾸준히 해올 수 있었고, 덕분에 내 통산 열 번째 책인 『애자일 소프트웨어 개발』을 IT 전문가와 함께 출간하는 기쁨을 얻을 수 있었다. 이 모든 것에 대해 하느님께 감사드리며, 어려운 IT 환경에 조금이라도 도움이 되기를 희망한다.
박현철
소프트웨어 개발 환경은 급속도로 변화하고 있다. 우리가 소프트웨어로 해결해야 하는 문제는 점점 더 복잡해지고 있으며 프로젝트의 불확실성과 복잡도도 함께 높아졌다. 전통적인 개발 방법으로 이를 대처하기란 역부족임을 주변의 많은 프로젝트 실패가 보여주었다. 폭포수 개발에 익숙한 개발자나 프로젝트 매니저가 이 책을 읽고 있다면 아마 적어도 한두 번쯤 실패했던 기억을 어렵지 않게 떠올릴 수 있을 것이다. 이때 등장한 애자일 방법론이 이러한 환경에서 소프트웨어를 개발함에 있어 발생하는 많은 문제를 해결해줄 것으로 기대되고 있지만, 실제로 애자일 철학과 실천방안들을 우리의 소프트웨어 개발에 제대로 적용하는 것이 쉽지만은 않다. 현장에서 프로젝트에 애자일, 스크럼을 적용해봤다면 충분히 공감하는 문제일 것이다.
이 책은 애자일의 철학뿐 아니라 스크럼을 통해 소프트웨어 개발에 어떻게 그 철학을 적용하고 우리 자신의 것으로 만들어낼 수 있는지 알려준다. 또한 개발 프로세스뿐 아니라 조직에도 어떻게 스크럼 역할들을 적용하고 확장할 수 있는지 설명해준다. 저자인 클린턴 키스는 이 책에서 자신의 통찰과 잘 구조화된 지식을 자신의 경험담과 함께 재치 있게 이야기한다. 『애자일 소프트웨어 개발』은 단순히 방법론과 특정한 실천방안, 기술만을 소개하는 책이 아니다. 이 책을 통해 우리의 프로젝트를 어떻게 더 좋게 만들 수 있는가에 대한 해답을 찾을 수 있도록 코칭해준다.
스크럼은 단순하고 쉽다. 전체 실천방안을 설명하는 데 몇 분 정도면 충분하지만, 애자일과 스크럼의 철학을 이해하고 ‘왜 해야 하는가?’에 대한 답을 찾고 우리가 일하는 환경에 맞도록 이를 적용하는 것은 매우 오랜 시간이 필요할 수도 있다. 하지만 여전히 스크럼은 간단한 것으로부터 시작하며, 이로써 우리는 작은 실험들을 통해 소프트웨어 개발 시간과 결과를 점차 긍정적으로 바꿔나갈 수 있다. 독자들도 자신의 환경을 돌아보며 이 책을 따라가다 보면 답을 찾기 위한 여러 실험들을 적용해보고 싶은 마음이 생길 것이다. 그러므로 당장 실행해보라고 권하고 싶다.
아울러 이 책은 게임 개발을 주요 맥락으로 애자일과 스크럼을 이야기하고 있지만, 개발자가 아니더라도 또 게임 외 다른 산업에 종사하는 독자라도 모두 도움을 받고 통찰을 얻을 수 있다. 소프트웨어 개발 프로젝트에 참여하는 구성원뿐 아니라 이해관계자들도 애자일 소프트웨어 개발에 대한 합리적인 시각과 태도를 갖는 데 조금이나마 이 책이 도움이 되었으면 한다.
전장호
★ 감수의 글 ★
게임의 본질은 오락으로서의 재미다. 그러므로 게임을 개발한다는 것은 게임적 재미를 찾아가는 것을 의미한다. 이러한 게임의 본질은 일반적인 소프트웨어를 개발하는 것과 크게 다른 근본적인 차이를 야기한다.
일반적인 소프트웨어는 사용자가 원하는 기능이 올바로 구현되면 성공적으로 개발되었다고 할 수 있다. 그러나 게임 소프트웨어는 ‘구현된 기능이 재미있는가?’라는 추가적인 요구사항이 따른다. 만약 재미가 없다면 그 기능이 완벽하게 개발되었더라도 수정되거나 삭제될 수밖에 없다.
문제는 이 게임의 재미라는 것이 상당히 주관적이며 예측하기 어렵다는 점이다. 몇 가지 기능이 재미있다 하더라도 전체 게임 시스템이 완성되었을 때의 재미 문제는 전혀 다를 수 있기 때문이다. 상당히 단순한 메커니즘을 가지고 있는 게임일지라도 그 메커니즘에서 재미를 극대화시킨다는 것은 대단히 어렵다는 점에 모든 게임 개발자들이 동의할 것이다.
이러한 게임의 불확실성과 복잡성 같은 속성들로 인해 게임 개발 프로젝트를 관리하는 것은 매우 어렵다. 이 책의 저자는 이러한 문제에 대해 게임 개발자들이 전통적인 계획 작성 도구와 규범화된 방법으로 접근을 시도했다고 봤다.
한국의 상황도 크게 다르지 않았다. 허들시스템 등의 프로젝트 관리 방법론은 전통적으로 규범화된 제품 개발 방법론이었고, 많은 개발 스튜디오들이 비슷한 폭포수 방식의 개발 방법론을 사용해왔다.
폭포수 방식의 개발 방법론이 지닌 문제는 명확하다. 기획 단계에서 구현되지 않은 게임의 재미를 예측해 설계하는 것은 대단히 어렵다. 더구나 기획 단계 시점과 게임 오픈 시점 간의 시차는 게임 업계의 시간 개념으로는 매우 긴 시간이기에, 그동안 시장과 게이머가 어떻게 바뀔지도 알 수 없다. 그런데 게임 시스템이 완성되어 테스트에 들어가는 시점이 되었을 때에야 비로소 게임의 실체를 테스트해볼 수 있게 되니 테스트 결과가 좋지 않더라도 이미 어쩔 수 없는 일이 되어 큰 폭의 수정 없이 그대로 오픈하게 된다. 다행히 재미있는 게임이었다면 성공하겠지만, 불행히도 한국의 게임 역사에서는 큰 실패를 안겨준 대작 게임들이 더 많았다.
클린턴 키스는 이러한 문제에 대해 애자일 스크럼이라고 하는 일 잘할 수 있는 방안에 대해 실증적이면서 구체적으로 설명한다.
이 책에서도 중요하게 인용되는 켄 슈와버와 제프 서더랜드는 그들의 문서 ‘스크럼 가이드(The Scrum Guide)’를 통해 다음과 같이 스크럼을 평가한다.
■ 간단하고
■ 이해하기 쉽지만
■ 마스터하기는 어려운 프레임워크
스크럼은 대단히 쉽게 배울 수 있는 방법론이다. 하지만 ‘어떻게 적용할 것인가?’에 대해서는 많은 고민과 성숙된 경험이 필요하다. 물론 스크럼을 잘 수행할 수 있는 팀을 갖추는 것은 더 어렵다. 하지만 이 책을 통해 독자들은 애자일 스크럼의 철학부터 게임 개발이라는 특수성에 맞는 구체적인 적용 방안에 대한 지식까지 얻을 수 있다. 최고 수준의 해외 게임 개발 스튜디오가 일하는 방법을 접해보는 것도 흥미로울 것이다. 참고로 이 책에서 다루는, CCP 게임즈(CCP Games)가 어떻게 〈이브 온라인(EVE Online)〉개발 프로젝트에 애자일 스크럼 방법론을 적용 했는지에 대한 소개 영상도 유튜브에서 볼 수 있으니 반드시 시청하기 바란다(https://www.youtube.com/watch?v=GqsReCZD4hc).
게임 프로듀서로서 애자일 스크럼 게임 개발 프로젝트 관리의 바이블인 이 책이 마침내 한국에 소개되는 것이 매우 반갑다. 더군다나 이 책을 번역한 박현철 님, 전장호 님은 애자일 스크럼에 대한 풍부한 현장 경험과 지식을 갖춘 분들로, 이 책의 번역 작업을 맡아주셔서 업계의 한 사람으로서 깊이 감사한다. 일반적인 기술 서적과는 다른 특수성을 지닌 전문적인 내용을 번역하느라 많은 어려움이 따랐으리라 생각한다. 훌륭한 결과물과 그간의 노고에 박수를 보낸다.