Pigs and Chickens

 

 닭과 돼지가 함께 길을 걸어가고 있었습니다. 한참을 걷다가 닭이 돼지에게 물었습니다.

"우리 함께 식당을 하나 차려보면 어때?"

그러자, 돼지는 잠깐 고민을 하다가 그러자고 말했습니다. 그리고는,

"그럼, 식당 이름은 어떻게 짓는 것이 좋겠어?"라고 닭에게 물었습니다.

그 질문에, 닭은 "햄과 달걀! 식당 이름으론 멋지지 않아?"라고 돼지에게 말해주었습니다.

그러자, 돼지는 "내가 다시 생각해보니 너와는 식당을 차리면 안되겠어, 나는 식당을 차리기 위해

다리 하나를 잘라야 되겠지만, 너는 달랑 달걀 몇 개를 내놓을 셈이군~!" 라고 말하고 멀리 가버렸습니다.

 


 

 위 이야기는 Ken Schwaber의 "Agile Software Development with Scrum"이라는 책의

Pigs and Chickens의 내용을 의역하여 인용한 것입니다.

 

 우리는 프로젝트를 수행하다보면 "닭과 돼지"에 관한 이야기를 자주 언급하게 됩니다. 특히, Agile과 관련된 이야기에서는 이 "Pigs and Chickens"에 대한 이야기는 중요한 패러다임 중에 하나라고 할 수가 있지요.

이것이 중요한 이유는 프로젝트를 수행함에 있어서 중요한 책임을 져야하고, 성공과 실패에 모든 것을 걸어야하는 사람들은 돼지(Pigs)에 해당하고, 이해관계자(Stakeholder)에 해당되지만, 그저 관심이 있거나 잠시 발을 담그는 사람들은 닭(Chickens)에 해당한다고 볼 수 있습니다.

 

 모든 프로젝트에는 닭과 돼지가 꼭 존재합니다. 당연히 PM은 돼지입니다. PL의 대부분도 돼지에 해당하겠지요.

SCRUM에서는 고객-기획 책임자(Product Owner), 프로젝트 PM(Scrum Master), 개발팀(Development Team)의 3가지 역할을 "돼지"에 해당한다고 봅니다.

 

 그렇다면 "닭"은 누구에 해당할까요?

프로젝트에 관심은 있으나 직접 참가하지 않는 사람들은 "사용자, 품질담당자, 재무/인사관리자"등에 이르는 한마디로 '프로젝트에 사사건건 꼬투리를 잡을 준비를 하고 있는 사람'들을 '닭'이라 보시면 되겠습니다.

(실제 현장에서 꼬꼬댁 소리가 들리면 시끄럽고, 날개 펄럭거릴 때마다 신경쓰여 죽겠다는 분도 계실거에요. ^^)

 

 이 SCRUM은 "돼지"들이 열심히 일할 수 있도록 창의적이고 지식중심의 프로젝트 환경을 제공해주고, "닭"들이 설치지 못하도록 집중에 방해되는 것들을 막아주는 역할을 하는데 목적이 있다고 보시면 되겠습니다.

(닭들이 프로젝트에 관여할 때에는 '닭다리'라도 걸고 관여를 하라고 하시면 되겠습니다.)

 

 닭들이 프로젝트에 많이 나타나게 되면 이러한 특징이 나타납니다.

 

 - 납기 1주일전은 밤새 철야작업은 필수다!

 - 고객의 요구사항이 어느새 이렇게 늘어난 것인가? 납기는 고무줄처럼 지연된다.

 - 납기 지연에 대한 책임을 지는 사람은 없고, 개발자들은 '무능력'하다는 비난을 듣는다.

 - 대충 구겨넣은 채 구축된 시스템은 '애물단지'로 전락한다.

 

 그렇다면, 돼지들을 위한 프로젝트 환경을 만드는 'SCRUM'은 무엇일까요?

 

 

SCRUM의 탄생과 어원

 

 스크럼(SCRUM)이라고 하는 것은 맨처음 1986년, "Havard Business Review"라는 잡지에 지식경영, 암묵지와 형식지로 유명한 '노나카 이쿠지로"씨의 "The New Product Development Game"이라는 기사에 등장한 새로운 형태의 창조적 제품개발 방법으로 소개가 되었습니다. 물론, 앞의 "닭과 돼지"를 이야기한 Ken Schwaber에 의해서 처음으로 소프트웨어 개발에 대한 Agile 방법론의 하나로 발전하게 되었습니다.
 

 물론 이 SCRUM의 어원은 럭비에서 온 것으로, 여러분이 군대에서 경험한 "모두 스크럼을 짠다! 실시!"에서의 스크럼과 마찬가지로 공격진영의 8명이 공을 둘러싸며 만들어지는 공격진용을 말합니다. 특징만 보자면, "공격적이고, 함께 뭉쳐야 하고, 목표를 위해서는 한 방향으로 움직여야 한다"정도가 되겠지요?

 

  스크럼은 스크럼 마스터(SCRUM Master)와 제품책임자(Product Owner), 개발팀원(Devlopment Team)의 세가지 역할로 구성이 되는데, 가장 중요한 것은 바로 스크럼 마스터의 역할입니다.

 

  스크럼 마스터는 프로젝트를 수행하기 위한 규칙과 실행방안을 수립하고, 조직문화와 허용범위 내에서 SCRUM 프로세스를 구현합니다. 프로젝트 성공에 대한 책임을 지기 보다는 성공확률을 높이고, 개발팀과 제품책임자가 하나의 팀으로 움직을 수 있도록 '장벽'을 제거합니다. 한마디로, 스크럼을 짜는 공격진용을 유지하기 위해서 '구단주'와 '선수'들을 유기적으로 묶어주는 역할을 하며, 그들을 가르치고 지도해서 최선의 결과를 만들어내는 '코치'의 역할을 수행하는 것입니다. 그러기 위해서 코치는 학생들에게 '창의적인 공격방법'을 가르치고, 물고기를 잡아주는 것이 아니라 물고기를 잡는 방법을 가르치는 것과 마찬가지로 스크럼 마스터는 프로젝트 팀의 진행상황을 공유하고, 새로운 툴과 기술을 소개하거나, '닭'들이 프로젝트 현장에 난입하는 것을 막는 역할을 수행한답니다.

 

 

 SCRUM의 프로세스

 

  SCRUM이 다른 PMBOK이나 PRINCE2 (영국에서 사용하는 프로젝트 수행방법론)에서 제시하는 프로젝트 관리와 다른 것은 바로 PDCA (Plan - Do - Check - Action)이 아닌 PDLA (Plan - Do - Learn - Action)에 의해서 "자율적인 학습과 자기조직화"를 통해서 끈끈한 협업체계를 구축하고, Agile이라는 장점을 유지할 수 있게 되는 특성을 가지고 있습니다.

 


  

 

 

  위의  그림은 SCRUM의 일반적인 프로세스를 나타낸 그림입니다.

 

  1) 고객으로부터 개발 제품에 대한 요구사항 목록을 받습니다. (Product Backlog)

  2) 고객의 요구사항들을 개발 가능한 항목들로 분류를 합니다. (Backlog)

  3) 백로그(Backlog)들을 스프린트에 맞춰 개발하는 스프린트 계획을 수립합니다.

      - 스프린트(Sprint) : 기능개발을 위해 투입되는 30일의 반복적인 개발주기

      - 스프린트별로 목표를 수립하여 스프린트 백로그로 만들기도 합니다.

  4) 각각의 스프린트 백로그 들을 나누어 작업을 할당합니다.

  5) 스프린트를 수행하는동안, 모든 개발팀원이 참여하는 일일 스크럼 미팅(15분이내)을 가집니다.

  6) 각각의 스프린트 종료시마다, 스크럼 리뷰를 하고 제품을 평가합니다.

  7) 이후 수행될 스프린트를 위해 백로그와 우선순위를 다시 한 번 점검합니다.

 

 여기에서 제품책임자의 역할은 스프린트 골(Goal)과 백로그를 팀원들과 협의하여 결정하는 역할을 수행하게 됩니다. 그리고 나서, 개발팀원들은 스프린트 골을 달성하기 위해 작업을 정하게 되는데 각 작업은 백로그 단위로 4시간 이내에서 16시간 정도로 정해집니다. 그리고, 이러한 작업들의 진행상황은 스프린트 백로그에 기록이 되어 전 팀원간의 공유수단으로 활용되게 됩니다.

 

 

 SCRUM을 생각하며

 

 올해 Agile과 TDD의 대부격이라 할 수 있는 Kent Beck씨가 내한하여 "Responsive Design"과 "Being Agile"이라는 내용의 강연과 워크샵을 진행하는 것을 보고, "SCRUM"이라고 하는 것을 떠올리게 되었는데요. Kent Beck이 "XP(Extreme Programming)"라는 이야기를 내놓아서, Windows XP라는 이름이 등장한게 아닌가 생각해보기도 했지만, 그 이면에는 "SCRUM"이라는 훌륭한 토양이 있지 않았나 생각을 해보게 됩니다.

 

 참, 스크럼에도 XP와 같은 다섯가지 가치를 추구한답니다.

 

- 자발적 헌신 : 기꺼이 목표를 우해 헌신하라. 스크럼은 자신의 공약을 지키려고 하는 사람들에게 그들이 필요로 하는 모든 권한을 부여한다.

-  집중 : 할 일을 하라, 모든 노력과 기술은 맡은 일을 해내는데 집중하고, 그 외의 것들은 걱정하지 마라.

-  개방 : 스크럼은 프로젝트에 대한 모든 내용을 투명하게 공개한다.

-  존중 : 경험이 그 사람을 만든다. 팀원들을 존중하는 것은 중요한 일이다.

-  용기 : 헌신적으로 행동하고, 열린 마음과 용기를 가지고 다른 사람들이 존중해 줄 것을 믿어라. 

 

닭들이 없는 돼지들의 세상을 다시 한 번 꿈꾸는 하루입니다.

 

 

참고자료)

 Agile Software Development with Scrum    : Ken Schwaber

 Agile Process, SCRUM!! 호기심 탐구 결과 : http://yuzi.egloos.com/435049

 Agile - SCRUM : http://zzpark.egloos.com/10084070

 

 

 

 

 

 



Posted by 나모군