개발팀에 Scrum을 도입하는 방법


이 글은 Scrum Rising(Game Developer Magazine 2007년 02월)의 'Opening the Scrum Gate'를 자의적으로 날림 번역의역한 것입니다.


1. 작게 시작하라.

하룻밤에 스튜디오 전체를 바꾸려 하지 말라. 기꺼이 실험에 참가하고자 하는 8명 전후의 팀원들(10명을 초과해서는 안됨)을 고른다.


2. Scrum의 챔피언을 선발하라.

그는 Scrum의 리더나 프로듀서가 되어서 Scrum에 대한 모든 것을 배워야 한다. 일단 그에게 Ken Schwaber이 Scrum에 대해서 쓴 책 두 권을 읽게 하는 것부터 시작하라:
(유감스럽게도 아직 한글 번역본은 나오지 않았습니다. 혹시 출간 계획에 대해서 아시는 분은 답글을 부탁드립니다.)


3. 모든 실천 사항들(practices)을 그대로 시행하라

가장 중요한 (동시에 가장 논란이 되는) 조언은 "설사 그 가치를 이해할 수 없다고 하더라도, 책에서 언급한 모든 실천 사항(practices)를 그대로 시행하라."는 것이다.

Scrum의 실천 사항들은 매우 중요한 원칙들에 바탕을 두고 있다. 만약 이 점을 충분히 이해하지 못한 상태에서 변경을 가한다면, 대부분의 장점들을 누리지 못할 것이다. Schwaber는 다음과 같이 말한다. "나는 항상 Scrum의 기본 메카니즘이나 규칙들을 변경하려는 사람들을 만나는데, 그것은 그 메카니즘이나 규칙이 아무도 직시하고 싶어하지 않는 것들을 가시적으로 만들기 때문이다. 예를 들어서, '우리는 일일 Scrum이 필요하지 않으니 1주일에 한 번만 하자.'고 하는 사람들이 있다. 일일 Scrum은 그 팀이 자율적이지도 않고, 하나의 유기적인 조직이 아니라 그저 자기 일에만 신경쓰는 한 무리의 개인들(a group of individuals)에 지나지 않는다는 점을 들춰낸다. 즉, 아무도 신경쓰지 않기 때문에, 정보를 교환할 필요가 없다고 주장하는 것이다."

Scrum의 실천 사항들을 절대 바꾸어서는 안된다는 의미는 아니다. 단지 속도를 향상시킬 수 있는 경우에만 팀 스스로 바꾸어야 한다는 것이다. 또한 Scrum을 처음 도입하는 경우에는 Scrum Master 인증 과정을 수강하길 권한다. 2일 과정이며, 이곳 저곳에서 수시로 열린다. (물론 미국의 이야기이며, 한국에서는 애자일 컨설팅에서비슷한 과정-교육 및 코칭-을 제공하는 것으로 알고 있다.)


4. 고객(the customer)과 목표를 선정하라.

Scrum으로 들어가는 또 다른 중요한 단계는 그 팀의 고객(the customer)를 선별하고, 달성한 몇 개의 목표들과 그 우선 순위를 결정하는 것이다. 그 다음, 팀원들 중의 한 명을 선발해서 공인(Certified) Scrum Master으로 만든다. 초반에 그는 고객과 팀에게 개발의 모든 단계에 숨겨진 의미를 이해시킨다. (공인 Scrum Master가 되는 방법은, 3번 가장 마지막 문단에서 말하는 '인증 과정(혹은 연수)'를 통과하는 것이다. 인증 자격을 갖춘 기관이 한국에 있는지 누구 아시는 분?)

자, 이제 팀은 Sprint cycle로 들어갈 준비가 되었다!
:
Firefox의 Blogger Web Comments라는 플러그인을 설치했다가 재미있는 글을 보고 추천해드립니다;

번역: 잔업과 그것이 출시에 미치는 영향
원문: Debt and the effects on releases

애자일 개임 개발의 p.27에서 언급된 "예측하지 못한 ‘완료되지 않은 작업들’이 누적될 수 있음. (Debt can sneak in.)"에 대한 훌륭한 주석이라고 될 거라는 생각이 듭니다.


P.S. Blogger Web Comments라는 게, (아마도 Google의 관련글 기능을 이용해서) 해당 페이지(혹은 사이트)에 대해서 블로거들이 무슨 이야기를 해놨는지 보여주는 건데, 의외로 재미가 쏠쏠하네요.
:
Game Developer Magazine 2007년 02월호에 실렸던 "Scrum의 부상 (Scrum Rising)"입니다.

사용자 삽입 이미지

다음과 같은 내용을 담고 있습니다;
  • Scrum의 정의
  • Scrum에 대한 미신과 사실
  • Scrum을 도입하는 방법
  • 주의할 점
  • 팀의 크기

번역할까 했으나, 업무와 다른 슬라이드를 번역하느라, 미리 올려둡니다.
:

기다리셨던 <게임으로 오세요: 게임 개발자들에게 배워야 할 점들> 제3편입니다.

이번 제3편에는 애자일 게임 개발을 위해서 조직을 어떻게 구성할 것인가에 대해서 다룹니다. 동시에 가장 논란이 될만한 '야근'에 대한 언급도 있습니다.

아마도 이 글을 읽으시는 분들 중에는 "이건 불가능하다."라고 회의적인 분들 있을 겁니다. 가능하다면 김창준 님의 "극과 극" "평범한 직원들로 천재 조직 만들기"를 읽어보시길 권해드립니다.

그리고 즐거운 실험에 동참해보십시요!

..
..

게임으로 오세요: 게임 개발자들에게 배워야 할 점들
(Get in the Game: What others can learn from game developers) 


3/3


 

출처: p. 24, Better Software (November, 2006)

작성: Clinton Keith

번역: 김기웅, Nikopole(교정), Khazad(교정)




SUPPORTING THE DISCIPLINES

서로 다른 분야들에 대한 지원

 

Agile을 적용하기 전에, 우리 프로젝트 팀들은 각각 일단의 프로그래머들, 기획자들, 아티스트들로 분리되어 있었다. 이것은 공통된 분야의 기술(shared disciplinary skills)을 갖고 있을 경우에는 훌륭한 방식이었으나, 게임이 정상적으로 돌아가도록 하는 간접 비용(the overhead)을 증가시켰다. 우리가 Agile을 적용했을 때, 이 점이 명확해졌고, 변화가 필요했다. 초반에 저항이 있었고, 이것이 결과적으로는 우리를 요소 제작팀들(feature teams)로 변화시켰다.

 

처음에 우리는 한 개의 특정 분야가 주도하는 여러 개의 기능 제작팀들(functional teams)”을 구성했다. (예를 들어, AI 팀은 대부분 프로그래머로 이루어진다.) 몇 달 후, 문제들이 발생했다. AI 팀은 진공 상태[1]에서 자신들의 작업물을 만들었다. AI의 요구사항(requirements)이 실제 게임 내에서 개발되고 시험되기 보다는, AI를 사용하는 모든 팀들이 필요로 하는 아키텍처를 제공하는데 초점을 둔 프로그래머 위주의 팀에 의해 개발되었던 것이다. 따라서 매 주기가 끝날 때마다, 아키텍처는 진보했으나, 실제 게임에서의 활용도는 별로 증가하지는 않았다.

 

그 다음, 우리는 기능 제작팀들(functional teams)에서 요소 제작팀들(feature teams)”로 변화해갔다. 요소 제작팀들(feature teams)은 사격이나 주행 메카닉과 같은 서로 다른 분야의 연계가 필요한 게임 플레이의 독립적인 한 부분(a vertical slice of game play)을 만드는데 초점을 맞추었다. 목표는, 게임 플레이의 독립적인 한 부분을 반복적으로 개발하는데 필요한, 개발의 모든 분야를 취급하는 자급자족적인 팀이다.


사용자 삽입 이미지

 

요소 제작팀들(feature teams)”로 전환한 결과, 핵심 기술의 개발 노력이 분산되었다. 예를 들어, 우리는 하나의 기능별 조직이 전체 프로젝트를 위한 하나의 AI를 만드는 대신, 각 요소 제작팀들(feature team)의 한두 명이 각각 AI를 만들도록 했다. 이 조치는 여러가지 문제들을 일으켰는데, 우선적으로는 기술 개발이 분열되는 양상을 초래했다. 이런 방식은 다양한 가능성을 탐색하는 초기(early exploration)에는 좋을지 몰라도, 전적으로 문제가 많았다. 우리는 마치 별개의 게임을 만드는 것처럼 행동하고 있었지만, 결과적으로 우리가 전체 게임을 위한 단 하나의 AI 시스템이 필요하게 될 것이라는 것을 알았다. 또한 우리는 요소 제작팀들(feature teams)이 자원을 놓고 서로 경쟁하는 것을 목격했다. 이 방식은 모든 팀들이 전체 프로젝트의 일부분이라는 인식을 심어주지 못했다.

 

해결책은 추가로 각 전문 분야마다 가상의 팀들(virtual teams)을 조직하는 것이었다. 프로그래머들은 자신들의 Scrum Master[2] 한 명과 팀을 이루고, 그들은 일주일에 최소 한 번 이상 만나서, 팀의 기술적인 발전 방향을 논의했다. 프로그래밍 분야의 Scrum Master는 다른 분야(아트 및 기획) Scrum Master들과 만나서 게임의 비전을 창출한다. 이것은 각각의 분리된 팀들이 보다 효과적으로 의사 소통하도록 해줄 뿐만 아니라, 그들 모두가 최종 제품의 한 부분이라는 점을 인식시켰다.

 

 

 

DEVELOPMENT PHASES

개발 단계


Agile 게임 개발법은 폭포수(waterfall) 모형에서 제시된 프로젝트 단계들을 인정한다. 예를 들어서, 컨셉 발전 단계(the concept-development phase)에서는 고객이 창조적인 목표들을 전반적으로 그려볼(visualize) 수 있도록, 게임의 창조적인 가능성들과 한계들을 실험해본다. 개발 도중에는 게임 프로젝트의 가능성을 충분히 탐색하기가 불가능하다. 고객은 게임을 위한 라이센스와 함께 마케팅적인 척도나 요구사항들을 갖고 있을 것이며, 이것은 사전-시각화(pre-visualization)[3]와 원화(concept art)를 필요로 한다.

 

제작 단계(the production phase)는 프로젝트의 후반부, 즉 상당수의 게임 리소스-캐릭터와 레벨들-가 자리 잡아가는 시기를 말한다. 제작 단계 이전에는 별다른 제약 없이 게임 플레이를 실험해볼 수 있다. 우리는 그 시기 동안, 몇 개의 대표적인 레벨들과 캐릭터들을 만들었다. 어떤 자원을 생산할지를 결정하는 재미의 요소들을 발견하자, 우리는 [손상되거나 변하지 않도록] 재미의 요소들을 고정시켰다.

 

 

 

CRUNCH TIME

야근

 

게임 산업은 야근으로 악명이 높다.[4] 최근에는 게임 개발사 직원들을 위한 본보기적인 소송들(high-profile lawsuits)이 발생하고 있으며, 종종 집에 들어오지 못하며 고생하는 직원들의 가족들이 때때로 원고가 되기도 한다.[5] 다행히도 우리는 그런 문제를 겪지 않았다. 우리는 Scrum 기법의 일환으로 과거 경험에서 누적된 자료(the empirical data)를 사용하였기 때문에, 야근을 근본적으로 제거했다. Scum에서는, 한 주기(a sprint) 동안 하루 단위로 남아 있는 업무를 추정한다. 한 주기에서 남아 있는 시간의 일일 변동량을 속도(velocity)라고 하며, 도표로 표시된다. 기술적 장애물, 휴가, 좌석 배치 등과 같이 속도에 영향을 미치는 많은 요소들이 이 도표에 나타난다. 또한 팀의 업무 효율(effectiveness) 역시 이 도표에 드러난다.[6]

 

우리는 심지어 Scum에서도 해당 주기의 다가오는 마감에 맞추어 야근을 하도록 강요당한 적이 있었다. 그러나 이것은 경영진이 Scrum의 규칙들을 무시하고 팀으로 하여금, 업무(work)에 헌신하도록 하기보다, 하루에 10시간씩, 1주일에 6일이라는 일정(schedule)에 헌신하도록 고집했기 때문이었다. 초반에는 속도가 증가했으나, 수주가 지나자 속도는 야근 이전 수준(the pre-crunch-time level)으로 떨어져 버렸다. 사람들이 야근을 하게 되면 지칠뿐만 아니라, 프로그래밍상의 오류(game bugs)나 잘못된 그래픽 소스(art mistakes)와 같은 많은 실수들을 범하게 된다. 이것들은 수정하는데 별도의 시간이 필요하기 때문에, 결과적으로 속도를 감소시킨다.

 

사용자 삽입 이미지
 


이것은 우리에게 중요한 교훈이었다. 팀들은 해당 주기의 목표를 달성하기 위해서 추가 근무를 할 수도 있다. 그러나 경영진은 더 이상 그것을 강요하지 않는다.

 

 

 

SUMMARY

요약

 

우리는 Agile을 어떻게 비디오 게임 개발에 응용할 것인지를 계속해서 탐색해 보고자 한다. 대가는 크다. 진보된 방법론은 게임 가격이 합리적이 되도록, 개발비를 줄여준다. 또한 극소수만이 창조적인 도전을 기꺼이 받아들이고, 나머지 대부분은 위험을 무릅쓰려 하지 않는 추세(the increasing risk-averse trend)에 편승하지 않도록 도와준다. 현재 영화나 스포츠 라이센스를 기반으로 한 게임들과 성공적인 전작의 후속작들이 시장의 많은 부분을 차지하고 있다. 새로운 지적 재산이나 참신한 아이디어를 이용한 타이틀들을 개발하는 데, 막대한 돈을 투자하는 것은 너무 무모해 보일지도 모른다. 그러나 엔터테인먼트 산업에서 소비자의 돈과 관객의 관심은 더없이 소중하다. 비디오 게임의 전반적인 가치와 재미를 감소시키는 추세는 시장을 축소시켜서, 게임 산업의 모두에게 피해를 줄 것이다. Agile은 새로운 경험을 실험하고, 참신한 아이디어를 반복적으로 개발하여, 게임 속에서 재미를 빨리 그리고 자주 찾을 수 있도록 해주며, 우리의 고객을 즐겁게 하는 동시에 증가시키는, 보다 나은 길을 열어주는 체계(framework)를 제공할 것이다. {}

 

Clinton Keith는 최신 전투기의 항공 전자 장비용(avionics) 소프트웨어 개발을 그만두고, 비디오 게임 프로그래머가 되었다. 그는 현재 미국 캘리포니아 칼스버드(Carlsbad) 소재의 게임 개발사, High Moon Studios[7]의 기술 이사(the chief technology officer)로 재직중이다. 그가 개발하거나 개발을 진두 지휘한 것들을 몇 개 들자면, Midtown Madness, Midnight Club, Smuggler's RunDarkwatch가 있다. 게임을 개발하기 전에는 소프트웨어 엔지니어로서, Raytheon에서는 해저 관련 기술에, TRW에서는 YF-23 YF-22에 관련된 일을 했었다.

 

해당 주제에 대한 보다 자세한 정보를 원한다면, www.StickyMinds.com/bettersoftware에 들러볼 것.

l  사전 제작: 재미의 요소들(Pre-production: elements of fun)



                             


[1] [역자주] 다른 팀들과 완전히 동떨어진 상태에서 개발을 했다는 것에 대한 은유적 표현이다.


[2]
[역자주] “Scrum Master는 팀과 제품주(Product owner) 사이의 촉진자(facilitator)이다. Scrum Master, 팀을 관리하는 것이 아니라, 다음과 같이 팀과 제품주를 지원한다;

l  제품주가 직접적 개발을 주도할 수 있도록, 개발팀과 제품주 사이의 장벽을 제거한다.

l  제품주에게 어떻게 투자 수익(ROI: return on investment)을 극대화시킬지 알리고, Scrum을 통해서 제품주의 목표를 만족시키도록 한다.

l  창조력과 위임을 촉진시켜서, 개발팀의 삶[의 질]을 향상시킨다.

l  가능한 모든 수단을 동원하여, 개발팀의 생산성을 향상시킨다.

l  각 주기마다 추가된 기능들이 언제든지 배포될 수 있도록, 기술과 도구를 향상시킨다.

l  진행 상황에 대한 정보를 최신으로 유지하고, 모든 관련자가 접근가능하게 한다.”

Agile Project Management with Scrum(Ken Schwaber, Microsoft Press, 2004)에서 인용.


[3]
[역자주] 사전 시각화(pre-visualization), 개발하려는 게임(의 컨셉)을 문서가 아닌 시각적인 매체들(: 그림, 동영상, 도표 혹은 모형 등)을 통해서 표현하는 것을 말한다. 대표적인 예로는 ICOPilot movie를 들 수 있다. 자세한 것은 http://kwanny.ntreev.net/tt/index.php?pl=133를 참조.


[4]
[역자주] 한 사후분석(Postmortem)에서는 다음과 같이 묘사한다; “막바지가 되면 가족들과 친구들은 우리를 잊어버리고, 우리는 피자 배달부와 친해진다.”

 

[5] [역자주] 이에 대한 좋은 예로, Electronic Arts(이하 EA) 소속 개발자의 배우자가 익명으로 쓴 EA: The Human Story가 있다. 2004년말에 쓰여진 이 글은 최고 주당 80시간(오전 9~오후 10. 7일 근무. 열심히 일한 경우, 토요일 저녁에는 오후 6:30에 퇴근 가능.)의 일을 시키면서도 야근 수당을 지급하지 않는 EA의 관행에 대해서 강력히 비판했다. 이로 인해, EA 내외에서 격렬한 논쟁이 벌어졌고, 소송이 줄을 이었다. 2006 4, 결국 EA 200명에 달하는 전현직 프로그래머들에게 1,449만 달러를 지불하기로 합의했다. 보다 자세한 사항은 WikipediaEA Spouse EA Employment policy를 참고할 것.


[6]
[역자주] 남기룡 우리팀 3개월 동안의 일일소멸차트를 참조할 것.


[7]
[역자주] 원래는 Sammy Studios, Inc였으나, 2005 03 07Sammy로부터 독립하고, High Moon Studios가 되었다. 2006 01 05, Vivendi Universal Games에 합병되어, 현재는 Sierra Entertainment의 일부가 되었다.


<< 이전: Agile로의 이행 <<
..

..
:
<게임으로 오세요: 게임 개발자들에게 배워야 할 점들> 제2편입니다.

이번 제2편에는 High Moon Studios에서 <GDC 2007 - Agile Game Development>에 이르기까지 어떤 과정을 겪었는지를 보여줍니다.

한편 제1편도 주석을 달아서 보강했습니다.

 
게임으로 오세요: 게임 개발자들에게 배워야 할 점들
(Get in the Game: What others can learn from game developers) 


2/3


 

출처: p. 24, Better Software (November, 2006)

작성: Clinton Keith

번역: 김기웅, Nikopole(교정), Khazad(교정)


MOVING TO AGILE
Agile로의 이행

폭포수(waterfall) 모형의 이러한 문제들 때문에, High Moon Studios에는 반복적이고 점증적인 방법론(iterative and incremental methodology)으로 돌아가려는 강렬한 욕구가 있었다. 이에 대한 가장 큰 장애물은 팀의 규모였다. 우리는 보다 공식적인-규모가 10명 이하였을 때의 분위기로 돌아갈 수 있는 일련의 실천 사항들로 이루어진-방법론이 필요했다.

 

우리는 Scrum을 발견했고, 채택한지 한 달 이내에, 팀의 생산성과 사기에 커다란 향상이 있었다. 우리 팀은 이내에 또 다른 이점을 깨달았다: 우리가 개발하던 게임이 형태를 갖추기 시작했고, 단기간에 얼마나 할만하고 재미있는가를 확인할 수 있었다. 나중에 우리 프로그래밍 팀은 Extreme Programming (XP)를 채택했고, 또 한 번의 중요한 발전이 있었다.

 

 

 

CHALLENGES

난관들

 

Agile을 채택했을 때, 우리는 모든 사항들을 준수하는 것을 목표로 했다. 우리는 그 원칙을 완전히 이해했을 경우에만 그것을 변형해서 적용하기로 했다. 사실 고위 관리자들이 Agile의 원칙들을 충분히 이해하고, 폭포수(waterfall) 모형에서는 옳지만 Agile에서는 그렇지 않은 잘못된 결정을 내리는 것을 중단하기까지 정말 오래 시간이 걸렸다.

 

Agile을 적용한지 수개월이 지나고 그 실천 사항들(pratices)에 숨겨진 이유들을 이해하게 되었을 때, 우리는 부딪힌 난관들을 해결하기 위해서 Agile에 변형을 가하기 시작했다.

 

 

 

HARD DEADLINES

빡빡한 마감

 

비디오 게임 개발은 빡빡한 마감 날짜들에 맞춰서 돌아간다. 대부분의 마감 날짜들은 매해의 특정 시기에 맞추어져 있으며, 마케팅상의 이유로 결정된다. 마케팅상의 마감은 게임의 성공에 매우 중요하다. 많은 주류 게임들이 대목인 연말(a holiday release)[1]에 맞춰 출시된다. 영화를 원작으로 하는 게임은 영화와 게임이 동시에 출시되어야 한다.

 

정해진 일정이 있기 때문에 개발에서 선택 가능한 사항은 오직 개발 범위(scope)뿐이다. 예산이 유동적일 수는 있지만, 프로젝트 후반에 인력을 더 투입하는 것은 오히려 상황을 악화시킬 뿐이다[2]. 개발 범위를 조절하는 데에는 반복적이고 가치를 우선(value first)”하는 접근법이 빛을 발한다. Agile을 사용하면, 매주기마다 최우선 항목들(the most important features)을 반복적으로 먼저 개발하게 된다. 팀이 시간에 쫓기게 되면, 아직 적용하지 않은 기능들이 이미 적용된 기능들보다 덜 중요하다고 확신하고, 쓸데없는 기능을 추가하지 않게 된다.

 

폭포수(waterfall) 모형을 사용하여 개발할 경우, 기능의 구현이 반드시 중요한 것부터 순서대로 진행되지는 않는다. 예를 들어서, 기술 팀은 인공 지능(이하 AI)이 완성되기 전에 복잡한 애니메이션 시스템에 집중하고 싶어할 수도 있다. 만약 애니메이션이 예상보다 오래 걸린다면, 원래는 AI 개발에 할당되었던 시간을 사용할 것이고, 이렇게 개발된 AI는 사용자들에게 그다지 매력적이지 않을 수도 있다. 반복적인 접근법에서는, 다른 부가적인 기능을 추가하기에 앞서, 게임의 가장 중요한 기능들을 완성하는데 요구되는, 적절한 수준의 애니메이션과 AI를 개발하는 것을 목표로 하게 된다. 다시 말해서 반복적인 접근법의 목표는, 예정된 계획을 따르는 것이 아니라, 필요한 수준의 기능을 개발하는 것이다.

 

 

 

CONTRACTS

계약


개발사들은 배급사와 계약을 체결하여 비디오 게임을 만든다. 배급사의 역할은 개발에 대한 대가를 지불하고, 게임을 홍보하며, 그 게임이 담긴 DVD나 카트리지를 대량 생산해서 배포하는 것이다.

 

폭포수(waterfall) 모형에서, 많은 배급사들은 게임이 어떻게 개발될 것인가에 대해 사전에 구체적인 계획(an up-front, well-fleshed-out plan)과 언제 어떤 기능이 완성될 것인지에 대한 일정을 요구한다. 이 결과물들, 마일스톤(milestones)”은 개발사에 대한 자금 지급과 결부된다. 마일스톤에 따른 지급은 개발사에게는 생명줄이며, 생존에 필수적이다. 계약, 즉 마일스톤 식의 일정은 (해당 기능들의 가치와 상관없이) 개발사들이 사전에 정의된 모든 기능들이 구현하도록 유도한다. 그러나 동시에 마일스톤 식의 일정은 어떤 변경 사항이 생겼을 때, 배급사와 개발사 사이에 장애물을 만들기도 한다.

 

Agile을 적용할 때 겪는 어려움들 중 하나는, Agile 방법론을 허용하는 계약을 성사시키는 것이다. Agile planning은 유동적이고 오직 짧은 기간(보통 3)만을 대상으로 한다. 이런 단기 일정이 한때 많은 배급사들을 겁에 질리게 했었지만, 이제 배급사들은 사전에 상세한 계획을 요구하는 것이 부질없는 짓이라는 것을 깨닫기 시작했다. 개발사와 배급사 사이의 신뢰 또한 넘어야 할 장벽들 중에 하나다. 배급사가 개발사의 개발 속도와 품질에 대한 헌신을 인식하게 되고, 개발사가 배급사의 비전과 성실성을 믿게 되는 데에는 오랜 시간이 필요하다. 신뢰는 둘 사이의 유대를 강화시키고, 더 나은 게임이 완성되는 배경이 된다.

 

신뢰가 구두 계약을 의미하지 않지만, Agile의 반복적이고, 유연한 접근법을 반영할 필요는 있다. 예를 들어서, 만약 어떤 게임을 개발할 것인지 사전에 충분히 정의하지 않는다면, 개발사의 계약위반 여부를 알기가 어렵다. 이러한 문제를 해결하기 위한 한 가지 방법은, Agile에서 출시(release)”라고 불리는 3~6개월마다, 여러 개의 작은 계약들을 체결하는 것이다. 그리고 각 출시 시점마다 잠재적으로 시장에 배포될 수 있는 버전을 만든다. 이러한 단기 계약들에는 개발사와 배급사간의 굳은 믿음이 필요하다. 그러나 만약 게임이 매 출시 단계마다 점점 더 가치가 증가하거나 재미있어진다는 것을 보여준다면, 배급사가 개발사의 개발 진도를 파악하기 쉬울 것이다.

 

 

 

SPECIALIZED ROLES

전문 영역들


진정한 Agile 팀들을 구성할 때, 겪는 또다른 어려움은 전문 영역들의 존재이다. 전통적으로, Agile 팀들에는 서로 상대방의 업무를 거의 이해하지 못하고, 일정 수준까지만 협력하는 전문화된 프로그래머들이 있다. 게임 개발팀들에서는 아티스트, 게임 기획자와 프로그래머가 완전히 서로 다른 역할을 수행한다. 아티스트가 프로그래머의 작업을 보는 것은(혹은 그 반대의 경우), 흡사 흑마술(black art)”을 보는 것과 같다. 따라서 진정한 Agile 팀들을 조직하기 위해서는 동료들 사이에 많은 믿음과 신뢰가 필요하다.

 

게임 개발팀은 특성상 이질적인 전문 분야들이 혼합되어 있기 때문에, Agile의 기본적인 실천 사항들(the basic agile practices)을 실천하는 것이 쉽지 않다. 자율 조직(self-organization)이라는 방식이 더 어려운 이유는, 아티스트들이 프로그래머들과 동일한 기준들(criteria)로 팀 프로그래머들을 선택하지 않기 때문이다. 복수의 전문 분야가 뒤섞인 업무 환경(across-discipline team environment)에서 더욱 이루어지지 힘든 멘토링(mentoring)과 업무 공유도 상황은 마찬가지이다.

 

팀을 이상적인 규모로 유지하는 것은 더욱 달성하기 힘들다. Agile에 따르면, 한 팀은 8~12명으로 구성된다. 이것을 초과하면, 의사 소통의 경로가 너무 복잡해져서 자율적이기 어렵다. 한 팀에 복수의 분야가 있을 경우, 분야당 필요한 최적의 인원수(critical mass)를 갖추기 어렵다. 예를 들어서, XP에서는 2조를 짜기 위해서 최소 4명의 프로그래머가 필요하다.[3] 6명이면 이상적이지만, 각 분야마다 6명을 배치하면 규모가 너무 커진다. 이에 대한 해결책은 각기 한쪽 분야에 살짝 더 비중을 두는 팀들(teams that are skewed slightly toward one discipline over the others)을 구성하는 것이다.[4] 그것 또한 새로운 난관이 될테지만, 팀의 규모를 작게 유지해준다.

 

처음에 우리는 프로그래밍 부서에만 Scrum을 적용시켰다. 아티스트와 기획자들은 Scrum 프로그래밍 팀들을 조직하는 프로젝트의 고객들이었다. 우리는 고객의 요구를 전달받지 못했기 때문에(due to lack of customer input), Sprint 마다 수백 번의 진행 장애를 겪고 있다는 점을 재빨리 깨달았다. 우리가 Scrum 팀들이 대부분의 장애물을 내부적으로 즉시 해결할 수 있도록 자급자족적이어야 한다는 사실을 깨달았을 때, 아티스트들과 기획자들이 팀에 합류했다.



                               

[1] [역자주] 성탄절(Christmas)을 전후로, 추수감사절(Thanksgiving day, 11월 마지막 목요일) 즈음부터 연초(New Year’s Day)에 이르는 기간. 북미 시장의 경우, 한 해 매출의 절반 가까이가 이때 발생한다.

 

[2] [역자주] Kurt Bittner유스 케이스를 이용한 반복 개발(Driving Iterative Development With Use Cases에서 다음과 같이 설명하고 있다;

프로젝트 후반에 사람들을 투입하면 프로젝트는 더 지연된다. 아키텍처가 안정되지 않고 작업이 독립적인 단위로 효과적으로 나뉠 수 없을 경우에는 더욱 그렇다. 이 경우 서로 충돌을 방지하기 위해 지속적으로 통신해야 하기 때문에 작업이 느려지고 더 많은 사람들이 하나의 프로젝트에 작업하더라도 실제 작업은 줄어들게 된다.”


[3]
[역자주] 4 = 2* 2. XP의 짝 프로그래밍(Pair programming)-두 명의 프로그래머가 한 조를 이루어 함께 프로그래밍 하는 것-을 말한다.


[4]
[역자주] 예를 들면, 프로그래밍이 중요한 팀에는 6명을, 보통은 4명을, 별로 필요하지 않은 곳에는 2명을 배치하는 것을 말한다. 이 경우, 각 팀이 일정 크기를 유지하기 위해서, 그만큼 각 팀의 아티스트나 기획자의 수가 줄거나 늘어난다.

.
:
This is the English translation of 애자일 게임 개발 적용 사례.

Note:
  • At this point(May 2nd, 2007), MAIET Entertainment is the only game developer acknowledged using Agile game development in Korea, although there is a rumor telling that other several companies like (some teams in) NC Soft are using it.
  • Don't hesitate to notify me broken English in this translation.

I presented the case study of my project by using Clinton Keith's Agile Game Development translated by Kay Kim and Chang-joon Kim's Agile culture before Dev Rookie's members on  last Sat. (2007/04/28)

Issues;
  • Adopted Agile methodology(esp. Scrum) since Nov. 2006.
  • Started small. (Never try to convert the entire studio overnight.)
  • Adjusted Agile game development to our team, not followed it as dogma.
  • Not forced team members into Agile game development.
  • Tried to build Agile culture first: planning game, penalties, seminars, changing roles and analogue practices.
  • Didn't focus on doing Agile practices, but making a fun game.
  • Continuous trials and errors.
  • Trying to raise the frequency of using Pair Programming and TDD

Scrum;
  • Team size: 10 programmers.
  • Customer: the director of our own.
  • Sprint length: 1 month
  • Sprint planning meetings
  • Daily scrums
  • Reviewed user story every Mon. Short demonstration.
  • Sprint review

Challenges;
  • All the members were not good at Agile game development. (Never trained before.)
  • Had difficulty estimating
  • The scrum team wasn't self-contained. No participation of game designers and artists yet.
  • Less efficient user story reviewed by the customer: caused frequent redos on completed user stories.
  • Members' low motivation toward Agile game development.
  • Communication is still a problem: we need to talk more.

사용자 삽입 이미지

It's almost same as the thing from How to Schedule a Montly Plan, but something were changed;
  • Programmers and game designers wrote user stories together.
  • Wrote detailed tasks of a user story on post-it and post next to the user story.
  • A person in charge of each task wasn't defined in advance, but just before the task began.

사용자 삽입 이미지

Actively utilized a white board and a post-it. The picture above is a scene from  the game design discussion that I, a game designer and a programmer attended.


사용자 삽입 이미지

You can see detailed information about the picture above from Our War Room. The upper part of "Done!" is about the completed tasks in this iteration and the lower part is about the last iteration. Planning "To Do" for this iteration was meaningless for too frequent changes of "To Do". So, we decided to list only the completed tasks in this iteration. (Once we had reported what each team members did in the last iteration, but we replaced the report with the list of completed tasks.)

Added the day tasks began and ended post-its including description, memo, worker, estimates and priority.

사용자 삽입 이미지

The burndown chart of Feb. 2007.


Its velocity was 2.3 based on five-day-iteration, and the problem is unstable velocity.

:
애자일 게임 개발에 자주 사용되는 XP의 중요한 요소 중 하나인 사용자 스토리에 대해 좋은 글이 있어서 Trackback을 합니다.

사용자 스토리   by writely (2007/01/10)

왜 사용자 스토리? by writely (2007/02/12)


참고로 사용자 스토리: 고객 중심의 요구사항 기법이라는 책이 발간되어 있습니다.
:
Dev Rookie의 스터디(04월 28일)에 나왔던 "애자일 게임 개발(Agile Game Development, 이하 AGD)"의 내용이 남기룡 님의 Blog에 게재되었습니다.

NC Soft의 일각에서 사용한다는 소문을 들었을뿐, 현재 외부에 공개된 것으로는 MAIET entertainment가 유일한 사례가 아닌가 싶습니다. (저 자신도 작년부터 시험적으로 사용하고 있지만, 사람들의 반발과 기타 여건상 매우 제한된 것만을 사용하고 있습니다.)


참고로 MAIET의 사례에 대한 다른 글들은 이곳에서 볼 수 있습니다.

마지막으로 수고해주신 남기룡 님께 감사드립니다.
:

<GDC 2007 - Agile Game Development>에서는 Agile이 무엇인지, <게임 개발에 Scrum을 도입하다>에서는 그것이 게임 개발에 미칠 영향을 볼 수 있었습니다.

그렇다면 이제 Agile을 게임 개발에 적용할 때, 겪게 될 난관들을 확인해보는 것은 어떨까요? :)

"게임으로 오세요: 게임 개발자들에게 배워야 할 점들"은 High Moon Studio가 Agile을 적용하면서 어떤 어려움을 겪었고, 그것을 어떻게 극복했는가를 다루고 있습니다.

마지막으로 이 글은 약 3회에 나누어서 번역할 예정이며, 이번 제1편에서는 Agile이 출현하게 된 배경에 대해서 설명하고 있습니다.


게임으로 오세요: 게임 개발자들에게 배워야 할 점들
(Get in the Game: What others can learn from game developers) 


1/3


 

출처: p. 24, Better Software (November, 2006)

작성: Clinton Keith

번역: 김기웅, Nikopole(교정), Khazad(교정) 


12년도 더 전에, 나는 방위 산업체의 소프트웨어 엔지니어를 그만두고, 비디오 게임 프로그래머가 되었다. 게임들이, 코드의 길이로 볼 때, 규모가 10배나 크고, 더 최신의 기술을 사용하며, 개발 주기(pace of product development)가 훨씬 빠르다는 사실에 충격을 받았다. 게임 산업은 의욕이 넘치는 최고의 프로그래머들을 유혹했고, 사람들은 최신 소프트에어 공학 이론에 대해 열띤 토론을 했다. 그러나 이러한 열광에는 프로젝트 관리 절차가 결여되어 있었으며, 심지어 몹시 경멸당하기도 했다.

 

불과 30년만에 비디오 게임은, '(Pong)'을 만들던 장난감 시장의 작은 틈새에서, 할리우드 영화보다 더 큰 엔터테인먼트 산업의 한 분야로 성장했다. 그 변화는 개발팀과 예산의 규모를 기하급수적으로 증가시켰다.

 

이 두 가지 요인들-급성장한 프로젝트 규모와 미비한 관리-은 게임 산업 전반에 엄청난 문제들을 일으켜 왔다. 그 중 하나는 때때로 개발자들을 혹사시키는 것이다; 야근이 1년 내내 지속되는 것도 드물지 않으며[1], 그로 인해 야근 수당에 대한 소송들이 줄을 이었다. 일정이 지연되고 예산을 초과하는 것 또한 일상사다.

 

이러한 문제들을 해결하기 위해, High Moon Studios는 다른 산업의 경험을 거울 삼아, 정해진 예산 하에서 경쟁력을 유지하면서도 제 시간에 게임을 출시하기 위해 Agile methodology를 사용했다. 우리의 특수한 개발 환경 때문에 일부 내용을 바꾸어야만 했지만, 그게 ‘Agile이란 무엇이어야 하는가?’라는 비전(vision)을 해치지는 않았다. 우리는 시작부터 의사 소통과 반복적인(iterating) 개발에 초점을 맞추었고, 여러 방향으로부터의 다양한 변화에 대응해서, 보다 나은 제품을 만들 수 있었다.

 

 

 

BACKGROUND OF VIDEO GAME DEVELOPMENT

비디오 게임 개발의 역사

 

내가 비디오 게임 산업에 처음 들어왔을 때, 게임 산업의 역사는 20년이 채 되지도 않은 시점이었다. 1970년대 후반과 1980년대 초반, 게임 산업은 중대한 변화를 경험한다. 아케이드 게임기-나중에는 콘솔이 가정에서 동일한 상황을 연출한다-는 어마어마한 돈을 갈퀴로 쓸어 담고 있었다.

 

이 시기에, 1~3명으로 이루어진 팀이 약 3달 동안 게임 한 개를 만들 수 있었다. 하드웨어는 불과 수백 KHz로 돌아가는 8Bit 프로세서, 16K 메모리, 저해상도(256) 2D 그래픽으로 이루어져 있었다. 자원은 제한된 반면, 소비자는 하드웨어를 극한까지 밀어붙이길 원했기 때문에, 개인적인 영웅주의가 팽배했다. 심지어 프로그래머가 그래픽 소스(the game art)를 만드는 경우도 종종 있었다! 개발의 큰 장애물은 아케이드용 기판-혹은 가정용 콘솔의 카트리지-를 대량 생산하는 비용이 게임을 만드는 것보다 훨씬 비쌌다는 점이었다. 그 결과, 개발은 반복적(iterative)이고 점증적(incremental)이 되었다. 게임들은 일정 시기마다(at frequent intervals or risk cancellation) 평가를 받아 질적으로 향상되었다는 것을 증명해야만 했다. 게임 하나가 출시될 때마다, 열 개의 게임이 취소되기도 했지만, 그 한 개가 성공을 거두면 충분한 수익을 거둘 수 있었다.

 

이러한 높은 수익과 폭발적인 수요로 문제가 발생했다. 품질 관리가 느슨해지면서 무수히 많은 게임들이 쏟아져 나오게 된 것이다. 1980년대 중반에 일어난 이 사태는 게임 산업에서 처음이자 가장 큰 재앙으로 기록되었다.[1] Atari 같은 회사들은 수억 달러의 손실을 보았고, 아무도 사고 싶어하지 않는 수만 개의 카트리지들이 쓰레기 매립장에 묻혔다.

 

가정용 콘솔의 혁신으로 시장은 빨리 회복되었고, 콘솔 제조업자들의 통제 강화와 함께 매출도 꾸준히 성장했다. Nintendo는 어마어마한 성공을 거둔 가정용 콘솔[2]을 출시했고, 출시되는 소프트웨어를 엄격하게 관리해 게임 업계 부활의 주역이 되었다.

 

곧 게임 개발에 대한 주요한 압력(the major pressure)[기판이나 카트리지의 대량 생산이 아닌] 발전하는 하드웨어의 성능으로 바뀌었다. 1980년대의 몰락으로부터 10년 이내에, 콘솔은 20Mhz 이상의 프로세서, 4Mb RAM 3D 그래픽을 갖추었다. 숙련된 아티스트가 정말 사실적인 그래픽 소스(highly realistic art)를 만들어냈고, 프로그래밍 팀은 영상, 음향과 인공지능 같은 전문적인 기술 분야를 다루었다. 이제 게임 하나를 만드는데, 12명 이상의 인력과 1년이라는 시간이 필요해졌다.

 

이 시점에서 암묵적이면서 점증적이고 반복적인 개발 방법은 두 가지 이유로 붕괴되기 시작한다. 첫째, 12명에 달하는 전문가들간의 의사소통은 3명의 프로그래머들 사이에서처럼 순조롭지 않았다. 이러한 틈새로 개발의 세부 사항들이 누락되곤 했고, 그 결과 불필요한 작업들이 늘어났다. 둘째, 개발비가 제조와 마케팅 같은 다른 비용들을 초과하기 시작했다. 자금을 제공했던 회사들은 여전히 돈을 벌고 있었지만 예전처럼 1개의 게임을 출시하기 위해, 열 개의 게임들을 취소할 수는 없었다.

 

"비디오 게임에서 가치란 재미이지만, 재미는 문서로 표현하기가 무척 어렵다.”

 

그에 따라, 보다 구조적이고 전통적인 방법론이 게임 개발에 도입되었으며, 폭포수(waterfall) 모형[3]이 가장 흔한 경우였다. 폭포수(waterfall) 모형은 팀 규모 증가와 프로젝트 개발 주기 변화를 경험했던 다른 산업들에서 인기가 있었다. 이 기법은 규모가 커진 프로젝트를 관리하기 위해서, 몇 개의 단계들로 구분하였다: 계획(planning), 시제품(prototyping), 개발(development), 통합(integration), 시험(testing). 프로젝트 초반에 문서를 통해서 개발하려는 제품과 그 제품의 특성들(attributes)을 정의하고, 12명이 넘는 개발자들은 그 문서대로 최종 제품을 만들었다.

 

폭포수(waterfall) 모형은 반복적인 개발(the ability to iterate)을 희생시켰다. 프로젝트 초반에는 게임과 특징들(attributes)의 가치를 알기 힘들기 때문에, 그것은 매우 중대한 문제였다. 비디오 게임에서 가치란 재미이며, 이 가치를 정의하는 많은 요소들은 게임을 실행해야만 뚜렷이 드러나게 된다. 재미는 문서로 표현하기가 무척 어렵다.



                             

[1] [역자주] 이것이 그 유명한 Atari Shock이다. 자세한 것은 아타리 쇼크는 어쩌다 일어났는가? (상) 아타리 쇼크는 어쩌다 일어났을까? ()를 참조할 것.


[2]
Famicom (북미에서는 Nintendo Entertainment System, NES)을 말한다.


[3]
[역자주] 폭포수 모형(waterfall model)에 대해서, 초보자를 위한 eXtreme(스트림) 프로그래밍(리팩토링과 기민한 링)은 발췌/편집하여 언급하면 다음과 같다;

폭포수 모형은, 1960년대 복잡한 군사용 소프트웨어 개발을 위해 미국 해군에서 고안되었다. 폭포수 모형에서 프로젝트는 다음의 정해진 순서를 따르게 된다: 개념, 요구사항 분석, 설계, 코딩, 테스팅. 각 단계의 끝에서 프로젝트 팀은 최종 점검까지 모두 끝낸 후 고객의 승인을 받게 되고, 고객이 만족하지 않는 한 다음 단계로 넘어가지 않는다…(중략)…이 모형의 다른 특징은 계획을 중요시한다는 것이다. 만약 프로젝트에 수정이 필요하게 된다면 이미 끝난 부분의 작업을 다시 하는 것이 어렵고 성가시게 된다…(중략)…결국 폭포수 모형은 군대와 같이 엄격하게 관리 통제되는 환경에 적합하지만, 변화가 많은 일반 사업의 세계에서는 몇 가지 심각한 단점을 지니고 있다.”


                                                                    >> 다음: Agile로의 이행 >>
..
:
Dev Rookie의 스터디에 다녀습니다.

유감스럽게도 절친한 선배의 결혼식과 맞물려서, 스터디의 '본편'에는 참석을 못하고, '뒷풀이'만 참석을 할 수 있었습니다. 그러나 정말 많은 분들과 재미있는 이야기들을 몇 시간내내 나누었고, 언젠가 '본편'도 함께 참석할 수 있었으면 좋겠네요.

그런데 제가 실수를 한 게 하나 있는데,
애자일 이야기의 김창준 씨를 몰라봤다는 것입니다!!! OTL 그 이유는;
  1. 저는 ZDnet에 인상깊었던 글을 썼던 분으로 기억했는데, 김창준 씨는 사실 그 글을 마이크로소프트웨어에 기고한 것이었고, ZDnet에 올라온 줄은 모르고 있었으며,
  2. 김창준 씨는 XP에 관한 책들을 번역하셨는데, 저는 Agile 중에서도 Project Management에 가까운 Scrum에 대한 책들을 봤지, XP에 대해서는 자세히 보지 않았다는 겁니다.
이 글을 빌어서 사과드립니다. 용서해 주실 거죠? (웃음)
: