'애자일'에 해당되는 글 1건

  1. 2010.09.03 [책] 불확실성과 화해하는 프로젝트 추정과 계획 1부 (1~3) 2

[책] 불확실성과 화해하는 프로젝트 추정과 계획 1부 (1~3)

ITWeb/스크랩 2010. 9. 3. 10:51
1. 무엇을 위해 계획하는가.

"계획을 하는 것(planning)은 중요하다. 하지만 계획 그 자체(plan)는 아무것도 아니다."
- 육군 원수 헬무스 그라프 폰 몰트케

계획을 아예 하지 않는 팀은 "언제까지 되나요?" 나 "6월까지는 릴리스를 내놓을 수 있나요?"와 같은 기본적인 질문에도 대답을 하지 못한다.
불확실성원추 (cone of uncertainty), 폭포수(waterfall) 라고도 불리는 순차적 개발방법(sequential development process)

프로젝트의 성공가능성을 짚어보는 초기 단계에서는 그 일정 추정치가 실제 일정대비 60^에서 160%정도의 값을 갖는다.
요구사항 문서 작성이 끝나 다음에도 추정치의 오차는 여전히 +/- 15% 정도이다.

왜?
추정이나 계획은 왜 해야 하는 것일까? 그것은 우리가 일하는 바로 그 조직이 요구하기 때문이다.
계획을 한다는 것은 - 점진적으로 계획을 만들고 개선시켜나가는 그 과정은 - 가치(value)를 창조하는 과정이다.
기능(features), 자원(resources), 일정(schedule)

- 위험(risk)을 감소시킨다.
- 불확실성(uncertainty)을 감소시킨다.
- 의사 결정 과정(decision making)을 지원한다.
- 신뢰를 구축(establishing trust)한다.
- 정보를 전달(conveying information)한다.

'성공적인 프로젝트' 란?
애초에 명시한 일정과 예산 그리고 기능 범위를 모두 만족시킨 프로젝트

'실패한 프로젝트'란?
프로젝트를 시작할 때 정한 요구사항보다 더 나은 아이디어들이 개발 과정에서 전혀 나오지 않는 프로젝트

어떨 때는 프로젝트 일정보다 프로젝트에 참여하는 팀원의 프로필이나 상태가 더 중요한 경우도 있다.

대부분, 타협적인 결정(trade-off decision) 이 많고, 개발 시한과 비용문제로 절충 (기능과 노력, 비용과 시간)

Qustion : 그때까지 프로젝트를 마실 수 있나요?
Answer : 일곱 달이면 마칠 수 있겠는데요.
Why? 에 대한 설명이 없이 answer 만 한 사람 이라면 주의를 해야 한다.

좋은 계획은 믿을 수 있어야 하고, 근거 자료로 사용할 수 있어야 한다.

애자일 계획(plan)이 아니다, 계획 과정은 행위(activity) 이다.
애자일 계획법은 끊임없이 계획을 수정하게 될 것 이라는 것을 전제로 계획 과정에 투여되는 노력과 투자를 적절히 조정하려 하는것이다.
애자일적인 계획은, 곧 바꾸기 쉬운 계획이어야 한다.

- 계획 자체보다 계획 과정에 집중할 것
- 변화를 장려할 것
- 변경이 쉬운 계획을 만들어 낼 것
- 프로젝트 전 과정에 걸쳐 균등하고 지속적으로 적용될 것

계획 과정의 목표는 '무엇을 만들 것인가' 라는 질문에 기능(features), 자원(resources), 일정(schedule)의 세 가지 요소를 고려한 것이어야 한다.




2. 이런 계획법은 실패한다.

- 2/3 가량의 프로젝트는 추정된 비용 이상으로 많은 돈이 든다.
- 최종 제품에 포함된 기능들 중 64% 가량은 거의 혹은 결코 쓰이지 않는다.
- 평균적인 프로젝트는 계획된 일정을 두 배 정도 초과한다.

계획이 실패 하는 다섯 가지 원인
1. 활동이냐 기능이냐
2. 멀티태스킹은 또 다른 지연을 발생시킨다.
3. 우선순위에 따른 기능 개발이 이루어지지 않는다.
4. 불확실성을 무시한다.
5. 추정치가 서약으로 변한다.

올바른 계획법은 기능에 근거한 것이어야 하지 활동에 기반을 두면 안 된다.
- 활동이 일정보다 일찍 끝나지 않는다.
- 어떤 활동이 지연되면 그 결과는 일정 전반에 영향을 미친다.
- 각각의 활동은 서로 독립적이지 않다.

파킨슨 법칙 : 일의 양은 주어진 시간에 따라 늘어난다
즉, 활동을 마치는 데 드는 시간은 그 활동에 허용된 시간의 양과 거의 일치하게 된다

세 가지 이상의 작업을 동시에 수행할 경우 급감한다.
소위 문맥전환(context switching)에 드는 비용이 증가하게 된는 것이다.

불확실성을 제어하는 가장 좋은 방법은 반복(Iteration)이다.

고객에게 가치를 전달하는 단위는 기능(features)이다.

3. 애자일 접근법

"지금 열정적으로 수행하는 '좋은' 계획이 다음 주에 실행할 '완벽한' 계획보다 낫다."
- 패튼 장군

경량 방법론자
- 프로세스나 도구보다는 개인과 그들 간의 상호작용을 중시한고
- 포괄적인 문서를 만드는 것보다는 제대로 돌아가는 소프트웨어를 만드는 것을 중요하게 생각하며
- 계약 협상보다는 고객과의 협력을 더 우선시하고
- 계획을 주어진 대로 따르기보다는 변화에 대응하는쪽을 택한다.

프로젝트 대한 애자일 접근법
- 하나의 팀으로 일한다.
- 짧은 이터레이션 단위로 일한다.
- 이터레이션이 끝날 때마다 무엇인가를 내놓는다.
- 비즈니스 측면에서의 우선순위에 초점을 맞춘다.
- 점검하고 적용한다.

첫 번째 역할, 제품 책임자(product owner)
두 번째 역할, 고객(customer)
세 번째 역할, 개발자(developer)
마지막 역할, 프로젝트 관리자(project manager)

프로젝트 관리자는 관리라는 행위보다는 리더십에 더 초점을 맞추며, 동시에 여러 역할을 병행 할수 도 있다.
이터레이션 단위는 짧게는 2~4주, 길게는 수개월이 될수도 있다.

다층적인 계획 과정
릴리스(release), 이터레이션(iteration) 그리고 오늘(current day)
릴리스 계획 과정은 프로젝트의 범위와 일정 그리고 자원에 대한적절한 해답을 얻는 것이다.
이터레이션 계획 과정은 우선순위가 높은 일들을 골라내는 것이다.
일일 계획 과정은 스탠드업 미팅을 가져 그날 활동들을 조율하고 동기화한다.

만족조건(conditions of satisfactoion) 은 프로젝트의 성패를 가능하는 조건이다.

팀내 2~3년차 개발자를 대상으로 진행 하고 있는 CoP 인데 나름 괜찮은 것 같다.
주 교재는 불확실성과 화해하는 프로젝트 추정과 계획이고 부 교재는 The Art of Project Management.
낮은 연차의 개발자들에게는 업무 관리 능력을 향상 시키기 위해서 이 두 가지 교재는 한번 쯤 읽어 보는 것도 크게 도움이 될 것 같다.

SI 는 모르겠지만 이 업계에서 참 추정과 계획을 하기는 어려운 것 같다.. 
위에 말 처럼 
"프로세스나 도구보다는 개인과 그들 간의 상호작용을 중시한고"
이 부분만 잘 시켜져도 참 좋을 텐데.. 개인 이기주의로 참 많은 사람들이 힘들어 지고 프로젝트가 산으로 가거나 하는 것 같기도 하다..

위에 글은 책에서 발췌한 내용입니다.
http://www.yes24.com/24/goods/3067853?scode=029&srank=1
: