← 인사이트 목차
시리즈 「프로젝트가 무너지는 여섯 개의 순간」 — 2편EN한국어

엑셀로 만든 계획은 만든 날부터 죽는다

WBS 따로 간트 따로 관리하면 2주 뒤에 두 문서가 서로 다른 값을 가리킨다. 계획 산출물과 실행 데이터를 하나의 모델로 합치는 방법.

발행 ·4분

같은 계획을 담은 두 문서가 서로 다른 값을 가리키며 사이에 부등호(≠)가 놓인 개념도.

킥오프 전날 밤, PM은 뿌듯하다. 엑셀로 만든 WBS는 4단계까지 깔끔하게 분해됐고, 그것을 옮겨 그린 간트차트는 색까지 입혀 한 장으로 잘 정리됐다. 경영진 보고도 무사히 끝났다.

2주 뒤다. 개발 일정이 3일 밀렸고, 작업 2개가 쪼개졌고, 담당자 하나가 바뀌었다. PM은 엑셀 WBS를 고친다. 간트차트도 고쳐야 하는데 급한 불부터 끄느라 미룬다. 다시 2주 뒤, 팀원이 묻는다. "WBS에는 이 작업이 있는데 간트에는 없어요. 어느 게 맞아요?" PM은 답한다. "제 머릿속에 있는 게 맞아요."

이 장면의 문제는 PM이 성실하지 않아서가 아니다. 같은 정보를 두 곳에 적는 구조 자체가 문제다.

문서가 두 개면 진실도 두 개가 된다

WBS와 간트차트는 별개의 산출물처럼 보이지만 사실 같은 데이터의 두 가지 표현이다. WBS는 무엇을 하는가의 계층 구조이고, 간트는 같은 작업들의 시간 배치다. 그런데 도구가 이 둘을 별도 파일로 관리하게 만들면 모든 변경을 두 번 반영해야 한다.

두 번 반영하는 일은 반드시 실패한다. 게을러서가 아니라 확률 때문이다. 프로젝트 6개월 동안 변경이 200번 일어난다고 하자. 매번 두 문서를 모두 즉시 정확히 고칠 확률이 99%라 해도, 200번 뒤 두 문서가 일치할 확률은 13%에 불과하다. 나머지 87%의 경우 PM은 회의 때마다 어느 문서가 맞는지를 기억으로 보정하는 사람이 된다.

그래서 엑셀 계획은 만든 날부터 낡기 시작한다. 정확히 말하면 첫 변경이 일어나는 순간부터 어긋나기 시작한다. 그리고 프로젝트에서 변경이 없는 날은 없다.

문서가 아니라 모델을 관리한다

해법의 방향은 명확하다. WBS와 간트를 두 개의 문서가 아니라 하나의 데이터를 보여주는 두 개의 뷰로 만드는 것이다.

소프트웨어 설계에는 오래된 원칙이 있다. Single Source of Truth, 진실의 원천은 하나여야 한다는 원칙이다. 회계 시스템이 원장 하나에서 재무제표와 세무 보고서를 모두 뽑아내듯, 프로젝트도 작업 구조라는 원장 하나에서 WBS 뷰와 간트 뷰를 모두 뽑아내야 한다. 트리에서 작업을 쪼개면 간트에 바로 반영되고, 간트에서 기간을 늘리면 트리의 집계가 바로 갱신되는 구조다. 이런 구조에서는 "어느 게 맞아요?"라는 질문 자체가 나오지 않는다.

도구를 만들며 이 문제를 파고들었을 때 내린 결론도 같았다. WBS·일정·진척이 같은 데이터 위에 있지 않으면 아무리 부지런한 PM도 정합성을 지킬 수 없다. 노력의 문제가 아니라 구조의 문제이기 때문이다.

무엇이 원본이고 무엇이 뷰인가

Single Source of Truth를 선언만 하고 끝내면 안 된다. 필드 단위로 원본과 파생을 나눠야 실제로 운영된다.

데이터성격어디에 있어야 하는가
작업명·계층 구조원본원장(WBS) 한 곳
기간·시작/종료일원본원장 한 곳
선후행 관계(종속 관계)원본원장 한 곳
담당자원본원장 한 곳
진척률원본원장 한 곳
간트차트원장에서 생성(직접 수정 금지)
주간보고·경영진 요약원장에서 생성
고객 제출용 엑셀원장에서 export

그리고 변경이 났을 때 무엇이 따라 움직여야 하는지를 규칙으로 정해 둔다.

변경갱신해야 하는 것
기간 변경후행 작업 일정, 마일스톤 도달일, 크리티컬 패스(전체 기간을 결정하는 최장 경로)
작업 분할·추가부모 집계(100% Rule), 간트, 담당자 배정
담당자 변경RACI(책임 분담표), 리소스 부하, 통지 대상
진척 갱신상위 노드 집계(roll-up), 진척 보고, EVM을 쓴다면 EV

이 표의 오른쪽 열을 사람이 손으로 하고 있다면, 그것이 매주 새는 공수의 정체다.

엑셀을 떠날 수 없다면: 최소 방어 규칙 4가지

조직 사정상 당장 도구를 바꿀 수 없는 경우를 위한 차선책이다.

  1. 원본 파일 하나를 지정한다. 파일명에 [MASTER]를 넣고 나머지 모든 문서는 파생물이라고 선언한다.
  2. 파생물을 직접 수정하지 않는다. 간트나 보고서에서 오류를 발견하면 원본을 고치고 다시 생성한다.
  3. 스냅샷 주기를 고정한다. 예를 들어 매주 금요일 오후에 원본에서 간트와 보고서를 다시 만들어 배포한다. 그 사이의 파생물은 낡았을 수 있다고 본다.
  4. 변경 로그를 의무화한다. 원본의 별도 시트에 날짜·변경 내용·사유·요청자를 기록한다. 3편에서 다룰 베이스라인의 최소 버전이다.

낡은 계획의 진짜 비용

정합성이 깨진 계획의 비용은 수정 작업 시간이 아니다. 신뢰가 무너지는 것이다. 팀원들이 어차피 계획은 실제와 다르다고 학습하는 순간, 계획은 아무도 참조하지 않는 장식이 된다. 그때부터 프로젝트는 문서가 아니라 소문으로 돌아간다.

계획은 아름답게 만드는 것이 아니라 살아 있게 유지하는 것이다. 그러려면 원본이 하나여야 한다.

PM의 실행 블록

내일 바로 할 일 3가지

  1. 지금 있는 계획 관련 문서를 전부 나열하고 원본 하나를 지정한다.
  2. 나머지 문서 각각에 "이 문서는 MM/DD 원본 기준 파생물"이라는 헤더를 단다.
  3. 위 변경·동기화 표를 팀 위키에 올리고 다음 주간회의에서 합의한다.

회의에서 던질 질문

  • "이 숫자의 원본은 어느 파일입니까?"
  • "지난주 변경 중 간트에 아직 반영 안 된 것이 있습니까?"
  • "이 보고서는 언제 시점의 원본에서 나온 겁니까?"

좋은 신호와 나쁜 신호

좋은 신호나쁜 신호
"어느 게 맞아요?"라는 질문이 사라졌다회의 때마다 문서 간 숫자를 대조한다
파생물은 아무도 직접 고치지 않는다간트에만 있는 작업, WBS에만 있는 작업이 있다
변경 로그가 매주 쌓인다최신 파일을 개인 메일함에서 찾는다

도구가 해결해야 하는 부분

최소 방어 규칙의 한계는 분명하다. 사람이 지켜야 유지된다는 점이다. wbsgantt를 설계하면서 WBS·간트·진척을 같은 데이터의 뷰로 만들어 이 규칙 자체를 없앴다. 트리에서 쪼개면 간트가 바로 바뀌고, 간트에서 끌면 트리 집계가 바로 갱신된다. 동기화라는 업무가 아예 없는 구조가 정답이라고 본다.

01간트차트 종속성 4종(FS·SS·FF·SF)과 Lead/Lag 완전 정리FS·SS·FF·SF가 각각 어떤 순서를 뜻하는지, Lead와 Lag는 어디에 쓰는지 정리했다. 잘못 걸면 크리티컬 패스가 엉뚱하게 계산된다.일정 · 5분02간트차트 만드는 법: WBS에서 실행 가능한 일정까지간트차트는 그리는 그림이 아니라 계산되는 결과다. WBS에서 기간·종속성·CPM·베이스라인까지 5단계와, 엑셀 간트가 한계를 드러내는 지점을 짚는다.일정 · 6분03근무일 기준 일정 계산: 달력일과 영업일은 다르다5일짜리 작업의 마감은 5일 뒤가 아니다. 달력일과 근무일의 차이, 한국 공휴일에서 자주 틀리는 3가지, 프로젝트별 캘린더, 손으로 검산하는 마감일 계산법을 다룬다.일정 · 5분04간트차트 공유 방법: 스크린샷부터 읽기전용 링크까지일정 공유가 어긋나는 이유는 대부분 권한을 전부 주거나 아예 안 주기 때문이다. 편집할 사람에게는 역할(owner·pm·member·viewer)을, 볼 사람에게는 읽기전용 링크를 준다. 상황별 선택 표도 실었다.보고 · 5분05엑셀로 만드는 WBS와 일정표: 어디까지 가능하고 언제 넘어갈 것인가엑셀은 WBS와 일정표의 합리적인 출발점이다. 문제는 도구가 아니라 언제까지 쓰느냐다. 표가 일정 모델과 갈라지는 3가지 지점, 그래도 엑셀이 맞는 경우, 전환 시점을 알리는 신호를 정리했다.도구 비교 · WBS · 5분