← wbsgantt 홈
가이드

근무일 기준 일정 계산 — 달력일과 영업일은 다른 시간이다

발행

달력 스트립 위로 5근무일 작업 막대가 주말·공휴일 칸을 건너뛰며 세 토막으로 이어지는 개념도 — 달력 셈의 이른 마감은 붉은 X로 취소되고, 진짜 마감에 마일스톤 마름모가 선다.

5일짜리 작업의 마감은 5일 뒤가 아니다 — 주말과 공휴일을 건너뛴 다섯 번째 근무일이다. 달력일로 계산한 일정은 만든 날부터 실제와 어긋나기 시작한다. 이 글은 달력일과 근무일이 왜 다른 시간인지에서 출발해, 한국 공휴일이 일정에 놓는 함정, 프로젝트마다 달라지는 달력, 그리고 손으로 검산할 수 있는 예제까지 다룬다. 마지막에는 지연이 연휴를 만나면 왜 증폭되는지, Lag 의 "7일"이 어느 시간인지 같은 실전 함정을 짚는다.

같은 "5일", 두 개의 마감일

목요일에 시작하는 5일짜리 작업을 생각해 보자. 달력으로 세면 목·금·토·일·월 — 마감은 다음 주 월요일이다. 근무일로 세면 목·금을 쓰고 주말을 건너뛰어 월·화·수 — 마감은 수요일이다. 같은 "5일"이 이틀 차이 나는 두 날짜를 가리킨다.

작업 하나에서 이틀이면, 작업 수십 개가 이어지는 프로젝트에서는 몇 주가 된다. 그리고 이 오차는 언제나 한 방향이다 — 달력 셈은 항상 실제보다 이르게 약속한다. 지키지 못할 마감을 계획 단계에서 스스로 만드는 셈이다.

일정 계산의 세 번째 입력, 캘린더

작업의 기간과 작업 사이의 종속성은 다들 입력한다. 하지만 일정 계산에는 세 번째 입력이 있다 — 캘린더, 곧 어느 날이 일하는 날인가에 대한 정의다. 같은 기간과 같은 종속성이라도 캘린더가 다르면 다른 날짜가 나온다. 주5일 달력의 10근무일과 주6일 달력의 10근무일은 달력 위에서 다른 길이를 갖는다.

캘린더가 입력이라는 말은, 날짜가 틀렸을 때 점검할 곳이 하나 더 있다는 뜻이기도 하다. 기간도 종속성도 맞는데 마감이 이상하다면 캘린더를 의심할 차례다. 기간·종속성에서 일정 전체가 계산되는 과정은 간트차트 만드는 법에서 다뤘고, 이 글은 그 계산의 발밑에 있는 달력을 다룬다.

한국 공휴일의 세 가지 함정

첫째, 대체공휴일. 공휴일이 일요일이나 다른 공휴일과 겹치면 다음 평일이 쉬는 날이 된다. 규정은 고정이지만 결과는 해마다 다르다 — 같은 5월이라도 올해와 내년의 근무일 수가 다르다. 작년 계획을 복사해 날짜만 바꾸는 관행이 위험한 이유다.

둘째, 임시공휴일. 예고 없이 지정된다. 계획 시점에 존재하지 않던 휴일이 실행 중에 생기면, 그 주의 모든 작업이 하루씩 밀린다.

셋째, 명절 연휴. 설과 추석은 기본 3일이고, 주말과 결합하면 5일을 넘기기 일쑤이며, 앞뒤로 연차 브리지가 붙으면 팀의 실질 가동이 일주일 이상 멈춘다. 연초에 그 해 공휴일 배치를 캘린더에 넣어 두는 것 — 이것이 일정 계획에서 가장 싸고 확실한 작업이다.

프로젝트마다 달력이 다르다

회사 달력 하나로 모든 프로젝트를 계산할 수 있다면 좋겠지만, 현실의 달력은 프로젝트 단위로 갈라진다. 건설 현장은 주6일로 돈다. 격주 휴무를 쓰는 조직이 있고, 고객사 창립기념일이나 전사 휴무가 검수 일정에 끼어드는 프로젝트가 있다. 해외 파트너와 함께라면 상대국의 공휴일 — 우리 달력에는 없는 날들 — 이 그쪽 작업의 속도를 정한다.

그래서 캘린더는 회사의 속성이 아니라 프로젝트의 속성이다. 프로젝트를 시작할 때 "이 프로젝트는 어느 날 일하는가"를 한 번 정의해 두면, 이후의 모든 날짜 계산이 그 위에서 돌아간다.

검산 예제 — 열흘짜리 작업의 진짜 마감

1일이 월요일인 어느 달을 놓고 계산해 보자. 주말은 토·일, 공휴일은 5일(금)과 15일(월) 이틀이다. 작업은 4일(목)에 시작하고 기간은 10근무일이다.

몇 번째 근무일12345678910
날짜4일(목)8일(월)9일(화)10일(수)11일(목)12일(금)16일(화)17일(수)18일(목)19일(금)

5일은 공휴일, 6–7일은 주말이라 첫 주에 이틀만 일한다. 13–14일 주말에 이어 15일(월)이 공휴일이라 셋째 주는 화요일에 시작한다. 그렇게 마감은 19일(금) 이다.

달력으로 "10일"이라 셌다면 4일부터 열흘째인 13일이 마감인데, 13일은 토요일이다. 실제 마감과 엿새 차이가 나는 것도 문제지만, 마감이 토요일에 떨어진다는 것 자체가 달력 셈의 신호다 — 근무일로 계산한 일정에서 마감은 쉬는 날에 떨어질 수 없다.

지연이 연휴를 만나면 증폭된다

계획 때 보이는 공휴일은 이미 일정에 반영되어 있다. 문제는 실행 중의 지연이 작업을 연휴 위로 밀어 올릴 때다.

마감이 목요일이던 작업이 2근무일 밀렸다고 하자. 금요일이 공휴일이라 금·토·일 사흘 연휴가 붙어 있다면, 밀린 이틀은 월요일과 화요일이 된다 — 새 마감은 화요일이고, 달력으로는 닷새가 밀렸다. 2일의 지연이 연휴를 만나 5일이 됐다. 이 작업이 critical path 위에 있다면 프로젝트 전체 마감이 그만큼 밀린다. 지연이 종속선을 타고 뒤 작업들로 번지는 과정은 한 작업이 3일 밀리면에서 실제 데이터로 따라갔다 — 거기에 연휴가 겹치면 달력 위의 피해는 근무일 계산보다 항상 크다.

연휴 직전 마감으로 잡힌 작업은 그래서 위험 목록에 올릴 가치가 있다. 하루만 밀려도 달력에서 나흘을 잃는 위치이기 때문이다.

Lead·Lag와 달력의 함정

종속성에 붙는 Lag — "선행이 끝나고 7일 뒤 시작" — 의 7일은 어느 시간일까. 도구마다, 계약마다 다르다. 그리고 이번에는 근무일이 항상 정답인 것도 아니다.

검토 대기나 승인 대기처럼 사람이 일해야 흐르는 시간은 근무일이 맞다. 반면 콘크리트 양생이나 도장 건조처럼 물리 시간이 걸리는 대기는 주말에도 흐르므로 달력일이 맞다. 대금 지급 조건의 "30일"도 관행상 달력일이다. 어느 축인지 명시하지 않은 Lag 는 일주일씩 어긋나는 사고의 단골 원인이다 — Lead 와 Lag 자체가 무엇인지는 종속성 4종과 Lead/Lag에서 다뤘다.

도구에서의 운용

wbsgantt 의 캘린더는 한국 공휴일이 내장된 글로벌 달력에서 출발한다. 프로젝트별로 근무 요일을 바꿀 수 있고(주6일 현장이면 토요일을 근무일로), 예외일은 양방향으로 편집한다 — 쉬는 날을 추가할 수도, 반대로 "이날은 쉬는 날이지만 근무"를 지정할 수도 있다. CPM 은 이 캘린더 위에서 근무일 축으로 계산되므로 기간과 Lag 모두 근무일 기준이고, 공휴일을 추가하면 영향받는 작업의 날짜가 자동으로 다시 계산된다. 리소스별 캘린더는 없으므로, 달력이 다른 팀이 섞인 프로젝트라면 일정을 결정하는 병목 팀의 달력을 기준으로 잡고 상대 팀 연휴 구간에 여유를 두는 것이 현실적인 운용이다.

다음에 읽을 것

이 글로 일정 시리즈의 네 조각이 닫힌다. 일을 빠짐없이 나누는 것이 WBS 작성법, 나눈 일을 순서로 잇는 것이 종속성 4종, 그 위에서 일정이 계산되는 과정이 간트차트 만드는 법, 그리고 그 계산의 발밑에 있는 달력이 이 글이다. 넷 중 어느 하나가 빠져도 일정표는 어딘가에서 거짓말을 시작한다 — 그리고 달력은 넷 중 가장 자주 잊히는 조각이다.

자주 묻는 질문

영업일·근무일·평일은 같은 말인가요?
다릅니다. 평일은 월–금이라는 요일의 이름이고, 영업일은 관공서·은행이 문을 여는 날이며, 근무일은 그 프로젝트가 일하기로 정한 날입니다. 주6일 현장의 토요일은 평일이 아니지만 근무일이고, 임시공휴일은 평일이지만 근무일이 아닙니다. 일정 계산의 기준은 언제나 프로젝트의 근무일입니다.
임시공휴일이 갑자기 지정되면 일정은 어떻게 하나요?
캘린더에 휴일을 추가하고 재계산하면 영향받는 작업의 날짜가 하루씩 밀립니다. 문제는 계약 마감이 고정인 경우입니다 — 이때는 밀린 하루를 흡수할 float 이 있는지 먼저 보고, 없으면 범위나 투입의 조정을 논의해야 합니다. 임시공휴일을 "그날 하루 야근"으로 덮는 결정은 일정표 밖에서 내려지는 셈이니, 어느 쪽이든 캘린더에는 사실대로 기록하십시오.
주6일로 일하는 프로젝트는 어떻게 계산하나요?
근무 요일 설정에서 토요일을 근무일로 켜면 됩니다. 같은 10근무일이라도 주5일 달력보다 달력상 이틀쯤 일찍 끝납니다. 도구가 주5일만 지원한다고 기간을 달력으로 환산해 줄이는 편법은 진척률과 지연 판정을 함께 왜곡하므로 피하십시오.
해외 팀과 함께 일하면 어느 나라 공휴일을 쓰나요?
원칙은 작업을 수행하는 쪽의 달력입니다. 다만 도구가 프로젝트 캘린더 하나만 지원한다면, 일정을 결정하는 병목 팀의 달력을 기준으로 잡고 상대 팀 연휴가 걸리는 구간에는 여유를 둡니다. 서로의 명절 주간을 계획 단계에 서로의 캘린더에서 확인해 두는 것이 가장 싼 보험입니다.
Lag(FS+7일)의 7일은 근무일인가요, 달력일인가요?
도구와 계약마다 다르므로 반드시 명시해야 합니다. 콘크리트 양생이나 숙성처럼 물리 시간이 걸리는 대기는 달력일이 맞고, 검토·승인 대기처럼 사람이 일해야 흐르는 시간은 근무일이 맞습니다. wbsgantt 의 Lag 는 기간과 같은 근무일 축에서 계산됩니다.