The Purpose Of Planning

최완식·2022년 7월 7일
0
post-thumbnail

불확실성과 화해하는 프로젝트 추정과 계획, 1장: 무엇을 위해 계획하는가를 정리해본다.

계획이란 무엇인가?

  • 계획이 없다면 프로젝트는 수많은 문제들과 마주하게 된다.
    • 시간 / 비용 값을 기반으로 진행 여부를 판단한다
    • 제때 원하는 기능을 내놓을 수 있을지 없을지 알 수 있다.
  • 하지만 계획한다는 것은 어렵고, 수시로 어긋나기까지 한다.
    • 이런 특징때문에 완벽한 계획을 짜든, 아예 하지 않는 판단을 한다.
    • 전자의 경우, 계획 자체에 지나친 시간을 들여 자아도취에 빠질 수 있다.
    • 후자는 애초에 잘못됐다.

  • 프로젝트 계획이 어렵다는 것은 새로운 이야기는 아니다.
  • 위에 그려진 cone of uncertainty: 1998 그림도 이미 이 어려움을 보여주고 있다.

왜?

  • 이렇게 어렵고, 해도 추정치를 얻는 것이 불가능하다면 왜 해야하는 걸까?
  • 이는 우리가 일하는 조직이 요구하기 때문이다.
    • 마케팅 계획
    • 제품 릴리즈 일정
    • 내부 사용자 교육
  • 이런 이유들을 제품을 출시하는 과정에 있어 타당하고 중요한 이유이다. 이보다 중요한 명분이 없기 때문에 추정/계획 과정을 외면할 수는 없다.

  • 계획을 한다는 것은, 가치를 창조하는 과정이다.
    • 무엇을 만들 것이냐는 질문에 대해 최적의 해답을 찾으려는 시도를 하는 행위이다.
  • 그리고 이를 하기 위해서는 기능, 자원, 일정의 세가지 요소를 고려해야 한다.
  • 이 답은 처음부터 찾을 수 없다. 점진적 개선이 필수적이다.
  • 그리고 바람직한 계획 프로세스는 하위 요건들을 갖추어야 한다.

위험성 감소

  • 계획을 하면, 프로젝트가 안고 있는 위험 요소에 대해 먼저 조사해보기 때문에 성공 가능성이 높아진다.
    • 위험 요소가 너무 많으면 시작하지 않는다.
    • 위험 요소를 먼저 관리하여 프로젝트 시작에 있어 도움을 준다.
  • 추정을 위한 토론을 하다보면, 해당 프로젝트의 어두운 측면을 드러내게 된다.

불확실성 감소

  • 프로젝트를 위협하는 가장 거대한 요소는 "잘못된 제품을 생산할 위험"이다.
  • 프로젝트 수행시 새로운 기능을 넣게 되는데, 막상 넣어보거나, 혹은 개발을 해보니 매력적으로 보이지 않았다면 어떨까?'
  • 개발을 진행하면서 더 나은 아이디어가 나오는 것은 거의 필수적이다. 이런 것들이 나오지 않는 것이 실패한 프로젝트라 생각될 정도다.
  • 초기에 구현하기로 한 기능을 모두 충실하게 구현한 프로젝트만이 성공적인 프로젝트는 아니다.
  • 그 과정에 더 좋은 아이디어까지 반영할 수 있는 프로젝트가 더 좋다.
  • 그렇기에 이러한 불확실성까지 제어가 가능한 계획이 바람직한 계획 프로세스의 요건이다.

보다 나은 의사 결정 지원

  • 추정과 계획은 의사 결정 과정에 도움을 준다.
  • 프로젝트에 대한 계획을 세우는 과정에서 내리는 결정의 대다수는 Trade-Off가 있는 결정인 경우가 많다.
  • 즉, 기능, 자원, 일정에 대한 제약사항을 기반으로 비용과 이득을 계산, 그 결과를 가지고 가치판단을 하는 것이다.
  • 이러한 결정을 하기 위한 근거는, 비록 달라질 수 있음에도 필요한, 그 계획과 추정을 바탕으로 한다.

신뢰 구축

  • 약속한 기능을 자주, 제때 내놓게 되면 인간 관계에서도 좋은 영향을 끼친다.
  • 이러한 점에서 계획/추정의 신뢰도가 높으면 사람 사이의 믿음도 높아진다.
  • 계획/추정치를 바탕으로 고객도 기능의 우선순위를 매기고 Trade-off 결정을 내린다.
  • 물론 개발자에게도 좋다. 안정적이고 꾸준하게 일할 수 있기 때문이다.

정보 전달

  • 계획은 프로젝트 수행에 있어 가능한 방법중 하나를 기술하는 것이다.
  • 이는 곧, 계획이라는 것이 DeadLine과 동치가 아님을 시사한다.
  • 즉, 특정 업무를 맡을 때에도 "n시간/일/달 내에 처리가능하겠는데요?" 라고 말하는 것은 계획이 가진 본질적인 특성인 "불확실성"에 대한 고려가 없이 대답한 것이다.
  • 이런 경우, 나름의 계획을 문서화 한뒤, 이를 기반으로 적절한 완료 시점을 추정해주어야 신뢰를 얻을 수 있다.
  • 즉, 발언에 대해서는 항상 근거를 기반으로 말해야 한다.

계획 과정을 애자일하게 만드는 것

  • 이해 당사자들이 믿을 수 있어야 한다.
  • 의사 결정시 근거 자료로 사용될 수 있어야 한다.
  • 갑자기 세웠던 계획 기간보다 확 늘어나면 어떻게 될까? 6개월 계획한 프로젝트에 대해,
    • 6개월이 초과된다면?: 시의성, 유용성 모두 훼손된다.
    • 1개월이 초과된다면?: 유용성은 어느정도 남아있겠으나, 시의성이 훼손된다.
  • 이는 정적인 계획 때문에 발생한다.
  • 애자일 계획법은 프로젝트 진행 과정 중에 끊임없이 계획을 수정하게 될 것을 전제로 한다.
  • 그리고 이 과정에 투여되는 노력과 투자를 적정히 조정한다. 이렇게 되기 위해서는 바꾸기 쉬운 계획이어야 한다.
  • 그러기 위해서는 처음부터 완성된다는 생각을 해선 안된다.
  • 릴리즈 계획의 큰그림을 그리고, 그 다음부터는 iteration 계획 과정을 반복한다.
  • 결과적으로 다음과 같은 속성을 가지도록 정의되어야 한다.
    • 계획 자체보다 계획 과정에 집중할 것
    • 변화를 장려할 것

요약

변경이라는 "불확실성"을 다루는 방법을 고안하지 않은 계획은 시의성과 유용성에 있어 가치가 꾸준히 훼손된다.

  • 계획 과정의 목표는 "무엇을 만들 것인가"에 대한 질문에 답을 찾아가는 것이다.
  • 기능, 자원, 일정의 세요소를 바탕으로 목표를 이뤄나가야 한다.
  • 좋은 계획은 믿을 수 있어 의사 결정에 도움을 준다.
  • 하지만 이 계획은 변화를 장려하고, 변화에 용이하도록 해야 한다.

토론 거리

  1. 계획을 아예 하지 않는 것, 완벽한 계획을 만드는 것 사이에 진행중인 프로젝트는 어느 위치에 있는가?
  2. 계획 과정이 필요한 또다른 이유는 어떤 것이 있을 수 있는가?
  3. 했던 프로젝트 중에 좋았던 것을 떠올려보자. 이 프로젝트에서 계획 과정은 어느정도 기여를 했는가?

Reference

profile
Goal, Plan, Execute.

0개의 댓글