한 작업이 3일 밀리면, 전체는 며칠 밀리는가
한 작업의 기간을 3일 늘렸는데 프로젝트 종료일은 바뀌지 않았다. 일정을 다시 살펴보니 종속 관계 하나가 빠져 있었다. 빠진 관계를 추가하자 종료일이 5일 늦어지고 크리티컬 패스도 새로 계산됐다.
첫 케이스 스터디에서 Claude는 이 ERP 프로젝트의 WBS를 만들면서 종속 관계 세 개를 스스로 추가했다. 그중 하나가 "마이그레이션 실행·검증 → 통합 테스트 수행"이다. 정제된 데이터가 없으면 통합 테스트를 할 수 없다는 당연한 순서를 종속 관계로 걸어 둔 것이다. 이번 글에서는 이 종속 관계가 어떤 일을 하는지 확인한다.
지난 두 편에서 우리는 SPI 0.84를 확인하고 마이그레이션 검증 작업의 기간을 3일 늘렸다. 그 변경 기록도 되짚어 봤다. 남은 질문이 이 글의 제목이다. 한 작업이 3일 밀리면 전체는 며칠 밀리는가. 결론부터 말하면 처음에는 0일이었다. 그런데 바로 그 0일이 문제였다. 이번 편도 실제 화면으로 확인한 실험 기록이다. 무대는 앞선 두 편과 같은, 날짜를 다시 맞춘 복제 프로젝트(화면 코드 MCG-26B)이고 실행 7주차다.
종속 관계를 이해하면 일정이 보인다
간트차트의 화살표는 작업 사이의 순서를 나타낸다. 가장 많이 쓰는 것은 FS(Finish-to-Start)다. 앞 작업이 끝나야 다음 작업을 시작할 수 있다는 뜻이다. 이 밖에 두 작업을 함께 시작하는 SS, 함께 끝내는 FF가 있고, 앞 작업이 시작되어야 뒤 작업을 끝낼 수 있는 SF도 있는데 드물게 쓴다. 작업 사이에 기다리는 시간이 필요하면 lag를 둔다. 예를 들어 계약을 체결하고 대금 지급까지 7일을 기다려야 한다면, 가짜 작업을 만드는 대신 종속 관계에 +7d의 lag를 얹는다.
이렇게 작업 사이의 관계를 연결해 두면 CPM이 전체 일정을 계산한다. 여유가 하루도 없는 최장 경로가 Critical path다. 이 경로 위의 작업이 하루 늦어지면 프로젝트 종료일도 하루 늦어진다. 경로 밖의 작업에는 여유(total float)가 있어서, 그 범위 안의 지연은 전체 일정에 영향을 주지 않는다.
종속 관계는 말단 작업끼리만 연결하는 것이 아니다. 이 프로젝트의 통합 테스트 Phase는 네 모듈의 단위 테스트를 선행으로 달고 있다(트리의 선행 칸에 1.4.2, 1.5.2와 +2가 표시된다). Phase에 연결한 종속 관계는 계산할 때 그 아래 말단 작업들로 펼쳐진다. "단위 테스트가 다 끝나야 통합 테스트를 시작한다"는 문장을 선 네 개 대신 하나로 적을 수 있다.
시작 상태는 이렇다. 92일 계획에 크리티컬 패스는 12개 노드다. 계획 수립에서 요구사항·설계 검토를 지나, 네 모듈의 단위 테스트와 결함 조치·사용자 교육을 거쳐 안정화까지 이어진다.

3일을 늘렸는데 아무 일도 없었다
기간을 늘리기 전, 마이그레이션 실행·검증 노드의 상세 패널에는 이렇게 표시되어 있었다.

"일정 여유 15일 — 늦어져도 전체 일정에 영향 없음." 도구가 float 값을 사람이 읽는 문장으로 풀어 준다. 실제로 기간을 7일에서 10일로 늘리자 안내 그대로였다. 후행 작업인 통합 테스트 수행이 달력 기준 5일 뒤로 밀렸다. 3일의 작업일 지연이 주말을 끼면서 5일이 된 것이다. 영향은 거기까지였다. 시스템 오픈 날짜도, 프로젝트 종료일도 바뀌지 않았다. 재계산은 우리가 손대지 않은 후행 작업의 날짜까지 자동으로 옮겼고, 지연은 15일의 여유 안에서 흡수됐다.

엑셀 일정표였다면 여기서부터 일이 커진다. 셀 하나를 고친 다음, 그 셀을 참조하는 행들을 눈으로 따라가며 하나씩 고쳐야 한다. 여기서는 계산이 종속 관계를 따라 이어졌고, 사람은 결과만 읽었다. 참고로 이 자동 이동은 지난 편에서 본 변경 이력에 남지 않는다. 사람이 바꾼 것은 기간 하나였고, 이력에도 그 하나만 남았다. 나머지는 계산이 한 일이다.
0일이라는 답이 이상했다
그런데 캡처를 다시 보자. 밀린 통합 테스트 수행 막대의 끝이 시스템 오픈 마름모보다 오른쪽에 있다. 통합 테스트가 끝나기 전에 시스템을 연다는 뜻이다. 명백한 모순인데 화면 어디에도 경고가 없다.
CPM 계산 자체는 틀리지 않았다. 등록된 종속 관계만 가지고 계산했을 뿐이다. 원래 계획에서는 통합 테스트가 오픈 직전에 끝나게 되어 있었다. 그래서 "테스트가 끝나야 오픈한다"는 관계를 아무도 추가하지 않았다. 추가하지 않아도 결과가 같았기 때문이다. 지연이 생기면서 이 가정이 깨졌지만, 등록되지 않은 관계는 계산에 반영되지 않는다. 15일이라던 여유의 실체가 이것이다. 대부분은 실제 여유가 아니라, 빠진 종속 관계 때문에 잘못 계산된 여유였다.
100% Rule이 빠진 작업을 잡아내는 규칙이라면(1편), 빠진 종속 관계를 잡아내는 규칙은 아직 없다. 빠진 관계는 지연이 생겨 드러날 때까지 눈에 띄지 않는다.
일정 실무에는 이런 구멍을 킥오프 전에 찾는 점검 방법이 있다. 후행 작업이 하나도 없는 작업(dangling activity)을 훑으면서 "이 일이 늦어져도 정말 아무 데도 영향이 없는가"를 묻는 것이다. 우리 통합 테스트 수행이 정확히 그런 노드였다. 후행 작업이 없고 여유는 넉넉했다. 점검표로 봤다면 5분 만에 찾았을 구멍을 우리는 지연이 생긴 뒤에야 봤다. 도구가 일정을 계산해 주는 시대에도 종속 관계를 점검하는 일은 사람의 몫으로 남는다.
빠진 종속 관계를 추가하자 크리티컬 패스가 바뀌었다
조정 세션의 마지막으로 그 관계를 추가했다. 통합 테스트 수행 → 오픈·안정화, FS. 재계산이 끝나자 이번에는 전체 일정이 움직였다.

- 시스템 오픈이 작업일로 3일, 달력으로 5일 늦어졌다. 87일이던 총 기간이 92일이 됐다.
- 크리티컬 패스가 12개 노드에서 8개 노드로 바뀌었다. 네 모듈의 단위 테스트·결함 조치·사용자 교육이 크리티컬 패스에서 빠지고, 마이그레이션 실행·검증과 통합 테스트 수행이 새로 들어왔다.
- 노드 패널의 안내도 반대로 바뀌었다. "여유 15일"이 "여유 없음 — 이 작업이 늦어지면 프로젝트 종료가 늦어져요"가 됐다.
크리티컬 패스가 바뀌었다는 것은 PM이 우선해서 관리해야 할 작업이 바뀌었다는 뜻이다. 어제까지는 네 모듈의 단위 테스트를 주의해서 봐야 했다. 이제는 마이그레이션 검증과 통합 테스트 수행이 더 중요해졌다. 일정이 바뀌자 시스템이 크리티컬 패스를 다시 계산해서 보여줬고, 사람이 다시 계산할 필요는 없었다.
이제 제목의 질문에 답할 수 있다. 한 작업이 3일 밀리면 전체는 며칠 밀리는가. 종속 관계가 제대로 설정되어 있다면 작업일로 3일 밀리고, 종속 관계가 빠져 있다면 0일처럼 보인다. 0일이 더 위험하다. 3일은 대응하게 만들지만 0일은 안심하게 만들기 때문이다.
관찰 하나를 덧붙인다. 날짜를 다시 맞춘 복제 프로젝트의 후반 일정은 원본과 며칠 다르게 계산됐다. 원본의 실행 기간에 있던 추석·한글날 연휴가 복제본의 기간에는 없기 때문이다. 일정 계산이 캘린더의 공휴일까지 반영한다는 뜻이다. 캡처 속 날짜가 본편들과 어긋나는 이유도 여기에 있다.
아직 안 되는 것
케이스 스터디의 관례대로 못 하는 것도 그대로 적는다.
- 빠진 종속 관계를 찾아 주지 않는다. 이 글의 반전이 곧 핵심 한계다. 통합 테스트가 오픈을 넘겨도 경고가 없었다. "끝이 마일스톤을 넘는 작업" 같은 경고가 있었다면 지연이 생기기 전에 구멍을 찾았을 것이다.
- what-if가 없다. "이 관계를 추가하면 오픈이 며칠 밀리는가"를 미리 볼 수 없다. 실제로 추가하고 재계산을 기다려야 안다. 되돌리기는 ⌘Z로 할 수 있다.
- 재계산은 비동기다. 편집 직후 수십 초 동안 이전 날짜가 보일 수 있다. 함께 작업하는 사람에게는 "왜 아직 안 바뀌었지" 하는 순간이 생긴다.
- float는 상세 패널에서만 보인다. 간트 막대나 트리 컬럼에는 여유가 표시되지 않는다. 어디에 여유가 얼마나 있는지 한눈에 보는 화면은 아직 없다.
맺음
이 시리즈가 따라온 것은 하나의 사건이다. 리스크 등록부가 경고했던 레거시 데이터 문제가 실제로 일정을 지연시켰고(9편), SPI가 그 지연을 숫자로 보여줬고(10편), 변경 이력에 어떻게 대응했는지가 남았고(11편), 이번 편에서는 종속 관계 그래프가 그 지연이 어디까지 영향을 주는지 계산했다. 네 화면이 하는 일은 결국 하나다. 계획과 현실이 어긋났을 때 다음 결정의 근거를 보여주는 것이다.
간트차트의 화살표는 장식이 아니다. PM이 알고 있는 작업 순서를 그래프로 적어 둔 것이고, 계산은 딱 그 지식만큼만 정확하다. 종속 관계를 연결하는 것은 여전히 사람의 일이다. 이 도구는 그 관계들이 서로 어긋나기 시작하는 순간을 숫자와 날짜로 보여준다.
이번 주에 자기 일정표에서 해 볼 일은 하나다. 후행 작업이 없는 작업을 찾아서 물어보자. 이 일이 늦어지면 정말 아무 데도 영향이 없는가. 영향이 있다면 종속 관계가 하나 빠진 것이다. 우리는 그 질문을 지연이 생긴 뒤에야 받았고, 그 대가로 일정이 5일 늦어졌다.