← wbsgantt 홈
가이드

간트차트 만드는 법 — WBS에서 실행 가능한 일정까지

발행

왼쪽의 작은 WBS 트리가 화살표를 지나 오른쪽 간트차트로 변환되는 개념도 — 계단형 막대와 종속선, 마일스톤 마름모, 오늘선, 강조된 critical path.

간트차트는 그리는 그림이 아니라, 계산되는 결과다. 작업 목록과 각 작업의 기간, 그리고 작업 사이의 순서를 넣으면 일정이 나온다. 반대로 막대를 손으로 옮겨 가며 모양을 맞추기 시작하는 순간, 차트는 계획이기를 멈추고 그림이 된다. 이 글은 간트차트를 이 순서로 만드는 다섯 단계를 다룬다 — 작업 목록(WBS), 기간, 종속성, 계산(CPM), 그리고 베이스라인. 마지막에는 여섯 작업짜리 예제로 일정을 손으로 검산해 보고, 엑셀로 그린 간트차트가 어디서 무너지는지를 짚는다.

간트차트가 담는 것

간트차트의 구성 요소는 다섯 가지다. 가로 막대는 작업과 그 기간을, 마름모는 마일스톤 — 기간이 0인 약속의 날 — 을 나타낸다. 막대와 막대를 잇는 종속선은 작업 사이의 순서를, 세로의 오늘선은 현재 시점을 표시한다. 마지막으로 베이스라인 오버레이는 승인 당시의 계획을 현재 계획 아래에 겹쳐 보여 준다.

이 다섯 가지가 담는 것은 전부 시간에 관한 정보다. 무엇을 만들 것인가, 일을 어떻게 나눌 것인가는 간트차트가 아니라 WBS의 몫이다. 간트차트는 시간의 지도이고, 범위의 지도는 따로 있다 — 이 구분이 흐려지면 일정 변경과 범위 변경을 구분할 수 없게 된다.

1단계 — 작업 목록은 WBS에서 온다

간트차트의 행은 회의에서 떠오른 할 일을 받아 적은 목록이 아니다. 행 하나하나는 WBS 의 최하위 칸 — Work Package — 에서 와야 한다. 이유는 단순하다. WBS 는 전체가 100%가 되도록 검증하며 만든 범위의 분해이므로, 여기서 출발하면 일정에서 빠진 일이 곧바로 드러난다. 반대로 즉흥 목록에서 출발하면, 목록에 없는 일은 일정에도 없고, 그 사실은 실행 중에야 발견된다.

행이 준비됐는지 확인하는 기준도 WBS 가 준다. 최하위 작업이 8시간에서 80시간 사이로 떨어져 있으면(8/80 규칙) 간트차트의 행으로 적당한 크기다. 작업을 어떻게 분해하는지는 WBS 작성법 5단계에서 다뤘다.

2단계 — 기간을 근무일로 산정한다

각 작업에 기간을 붙인다. 이때 단위는 달력일이 아니라 근무일이어야 한다. "5일짜리 작업"의 마감은 5일 뒤가 아니라 다섯 번째 근무일이다 — 주말과 공휴일을 건너뛰기 때문에, 목요일에 시작한 5일 작업은 다음 주 수요일에 끝난다. 달력일로 산정한 일정은 첫 연휴를 만나는 순간부터 실제와 어긋나기 시작한다.

기간 산정이 어렵게 느껴진다면 대개 작업이 너무 크기 때문이다. 8/80 크기로 분해된 작업은 산정 오차도 하루 이틀 수준이라 다루기 쉽다. "이 단계는 두 달"처럼 큰 덩어리의 기간을 통째로 추정하는 것보다, 작은 작업의 기간을 여러 개 산정해 합산하는 쪽이 훨씬 정확하다.

3단계 — 순서는 날짜가 아니라 종속성으로

작업 사이의 순서는 시작일을 손으로 입력해서가 아니라, 선행과 후행을 잇는 종속성으로 표현한다. 기본형은 FS(Finish-to-Start) — "선행이 끝나야 후행이 시작된다"는 가장 흔한 약속이다.

날짜를 직접 박는 것과 선을 긋는 것은 결과가 같아 보이지만, 선행이 밀리는 순간 정반대로 동작한다. 종속성으로 묶인 후행은 함께 밀려서 지연이 차트에 드러난다. 손으로 박은 날짜는 제자리에 남아 "지연 없음"이라는 거짓 신호를 준다. 계약 기한처럼 진짜로 고정된 날짜만 예외로 두고, 나머지 순서는 전부 선으로 표현하는 것이 원칙이다. FS 외의 세 유형(SS·FF·SF)과 Lead/Lag 는 종속성 4종과 Lead/Lag에서 자세히 다뤘다.

4단계 — 일정은 계산된다: CPM

시작일 하나, 작업별 기간, 그리고 종속성. 이 세 가지가 갖춰지면 각 작업의 시작일과 종료일은 입력하는 값이 아니라 계산되는 값이 된다. 계산법이 CPM(Critical Path Method)이다. 프로젝트 시작일에서 출발해 종속성을 따라 앞으로 훑으며(forward pass) 각 작업의 가장 이른 시작과 끝을 구하면, 그것이 곧 일정표다.

이 계산의 부산물이 두 가지 중요한 정보를 준다. 하나는 critical path — 시작부터 끝까지 가장 오래 걸리는 경로다. 이 경로 위의 작업이 하루 밀리면 프로젝트 전체가 하루 밀린다. 다른 하나는 float(여유)다. critical path 밖의 작업은 어느 정도 밀려도 전체에 영향이 없는데, 그 허용량이 float 이다. 어느 작업이 진짜 급한지, 어느 작업은 기다려도 되는지가 감이 아니라 숫자로 나온다.

5단계 — 마일스톤을 찍고 베이스라인을 잠근다

계산된 일정 위에 마일스톤을 찍는다. 마일스톤은 기간이 0인 약속의 지점이다 — 오픈, 검수 통과, 계약 납기처럼 "이날 이 상태여야 한다"를 표시한다. 기간이 있는 작업을 마일스톤으로 만들면 약속과 일이 섞이므로, 마일스톤은 항상 0일로 유지한다.

계획이 승인되면 그 시점의 일정 전체를 베이스라인으로 잠근다. 베이스라인은 변경되지 않는 스냅샷이고, 이후의 모든 "밀렸다/당겨졌다"는 이 기준과의 차이로 측정된다. 베이스라인 없이 현재 계획만 있으면, 계획을 고칠 때마다 기준도 함께 움직여서 지연이 통계에서 사라진다.

검산 예제 — 여섯 작업으로 손 계산

작은 홈페이지 리뉴얼 프로젝트를 여섯 작업으로 분해했다고 하자. 기간은 근무일이다.

작업기간선행시작일종료일
A 요구 정리3d1일차3일차
B 화면 설계5dA4일차8일차
C 콘텐츠 작성4dA4일차7일차
D 개발6dB9일차14일차
E 검수2dC, D15일차16일차
M 오픈(마일스톤)0dE16일차16일차

계산을 따라가 보자. A 가 3일차에 끝나므로 B 와 C 는 4일차에 시작한다. E 는 선행이 둘인데, C 는 7일차에 끝나고 D 는 14일차에 끝난다 — 후행은 늦은 쪽을 기다려야 하므로 E 의 시작은 15일차다. 이것이 forward pass 의 전부다: 각 작업의 시작 = 모든 선행의 종료 중 가장 늦은 값의 다음 날.

가장 긴 경로는 A→B→D→E→M, 3+5+6+2 = 16근무일이다. 이 경로가 critical path 다. 반면 C 는 7일차에 끝나는데 14일차까지만 끝나면 되므로 float 이 7일이다. 같은 지연이라도 위치에 따라 결과가 다르다 — B 가 2일 밀리면 D 는 11–16일차, E 는 17–18일차가 되어 오픈이 18일차로 밀린다(전액 전파). C 가 2일 밀리면 오픈은 그대로다(float 안의 지연).

한 가지 더 — 16근무일은 달력으로 약 22일이다(주말 3번). 2단계에서 기간을 근무일로 산정한 것이 여기서 효력을 낸다. 달력일로 세었다면 오픈 약속이 엿새 이르게 잡혔을 것이다.

간트차트를 읽는 법

만든 차트는 세 가지 신호를 기준으로 읽는다. 첫째, critical path 위의 막대가 밀리고 있는가 — 이 지연은 전액 프로젝트 끝으로 전파되므로 가장 먼저 본다. 둘째, 오늘선을 지났는데 진척이 차지 않은 막대가 있는가 — 지금 지연이 진행 중인 작업이다. 셋째, 베이스라인 대비 오른쪽으로 벗어난 막대가 있는가 — 승인 계획에서 이탈한 작업이다.

셋 다 공통점이 있다. 사람이 일일이 점검하는 것이 아니라, 차트가 계산 결과로 보여 주는 신호라는 점이다. 한 작업의 3일 지연이 종속선을 타고 어디까지 번지는지를 실제 데이터로 따라간 기록은 한 작업이 3일 밀리면에 있다.

엑셀 간트차트가 무너지는 지점

엑셀에서 셀을 색칠해 만든 간트차트는 초안이나 1회성 보고에는 충분하다. 문제는 실행 단계에서 시작된다. 색칠 간트에는 종속성이 없다 — 선행이 밀려도 후행 막대는 제자리에 남아, 차트가 "지연 없음"이라고 거짓말을 한다. 재계산이 전부 수작업이라 변경 한 건마다 뒤쪽 막대를 일일이 다시 칠해야 하고, 며칠만 지나면 아무도 갱신하지 않는다. critical path 를 아는 사람이 없고, 베이스라인이 없어서 "원래 계획이 뭐였는지"도 남지 않는다.

정리하면 이렇다. 엑셀 간트는 일정을 그린 그림이고, 이 글에서 만든 것은 일정을 계산하는 모델이다. 그림은 만들 때 편하고, 모델은 바뀔 때 강하다. 프로젝트는 반드시 바뀐다.

다음에 읽을 것

이 글은 일정 여정의 가운데 토막이다. 앞 단계 — 일을 100%가 되도록 나누는 법 — 는 WBS 작성법 가이드가 다루고, 작업을 잇는 선의 문법은 종속성 4종 가이드가 다룬다. 이 글에서 만든 일정이 실행에서 흔들릴 때 무슨 일이 벌어지는지는 critical path 케이스 스터디가 실제 데이터로 보여 준다. wbsgantt 에서는 이 여정이 한 화면에서 이어진다 — WBS 트리를 만들면 간트차트가 자동으로 따라오고, CPM 계산과 한국 공휴일이 반영된 근무일 캘린더가 내장되어 있어서, 이 글의 다섯 단계 중 계산에 해당하는 부분은 도구가 대신한다.

자주 묻는 질문

간트차트만 있으면 WBS는 따로 없어도 되나요?
간트차트의 행이 곧 WBS의 최하위 작업(Work Package)입니다. WBS 없이 간트부터 그리면 행 목록이 곧 즉흥 분해가 되는데, 합이 100%인지 검증할 구조가 없어 빠진 일이 일정에도 빠집니다. 순서는 WBS로 범위를 확정한 뒤 leaf에 기간과 순서를 붙이는 것입니다 — 그 결과물이 간트차트입니다.
간트차트는 엑셀로 만들면 안 되나요?
초안이나 1회성 보고용이라면 충분합니다. 문제는 실행입니다 — 셀 색칠 간트는 종속성이 없어서 선행이 밀려도 후행 막대가 제자리에 남고, 재계산·critical path·베이스라인이 전부 수작업이 됩니다. 매주 갱신하는 실행 도구로 쓰는 순간 유지 비용이 작성 비용을 넘어섭니다.
막대를 드래그해서 일정을 조정해도 되나요?
무엇을 바꾸려는지에 따라 다릅니다. 기간이 늘어난 것이면 기간을, 순서가 바뀐 것이면 종속성을 고쳐야 계산이 유지됩니다. 막대를 끌어 시작일만 옮기면 그 날짜는 선행과 무관하게 고정되고, 이후 선행이 밀려도 그 작업은 제자리에 남아 일정표가 거짓말을 시작합니다. 날짜 고정은 계약 기한처럼 진짜로 고정된 경우에만 씁니다.
간트차트는 얼마나 자주 갱신해야 하나요?
진척률은 보고 주기(대개 주간)마다, 구조(기간·종속성)는 변경이 생긴 그때그때 갱신합니다. 종속성 기반 간트라면 갱신은 다시 그리는 일이 아니라 바뀐 값을 입력하는 일이고, 나머지는 재계산이 처리합니다. 갱신이 부담스럽다면 도구가 아니라 차트 구조(수동 날짜·색칠)가 문제일 가능성이 큽니다.
작업이 100개가 넘으면 차트가 너무 복잡해집니다. 어떻게 보나요?
전부를 한 화면에서 보려 하지 않는 것이 요령입니다. 평소에는 단계(summary) 수준으로 접어서 보고, 지연 점검은 critical path 막대만, 보고는 마일스톤만 추립니다. 100개 행이 전부 중요한 회의는 없습니다 — 질문에 맞는 높이로 접어 보는 것이 간트차트를 읽는 기술입니다.