A construction schedule isn't a list of dates. It's a chain of linked activities: if the foundation takes two extra days, everything that depends on it should slide on its own. Here are the concepts you need, then a small example worked out by hand, from day one to the critical path.
1. Activities, with durations in working days
Each line of the schedule is an activity: a piece of work with a start, a finish and, ideally, one person responsible (excavation, foundation, framing, roofing…).
- Count durations in working days, not calendar days. A 15-working-day framing activity is three weeks of work, whatever weekends and holidays fall in the middle.
- Keep a reasonable size. A 40-day activity is hard to track; a half-day activity clutters the schedule. On a residential project, most activities run 2 to 15 days.
- Group by floor, phase or trade to keep the overview readable.
2. Links, not typed-in dates
A date typed by hand doesn't move when everything else moves. A link does. Three link types cover almost every case:
| Link | Meaning | Example |
|---|---|---|
| Finish-to-start (FS) | B starts the working day after A finishes | Roofing after framing |
| Start-to-start (SS) | B starts once A has started | Plumbing rough-in starting during framing |
| Finish-to-finish (FF) | B finishes when A finishes | An inspection that wraps up with the last work package |
Each link can carry a lag in working days:
- a positive lag adds a wait (e.g. finish-to-start + 3 d to let the concrete cure before loading the walls);
- a negative lag creates an overlap (e.g. finish-to-start − 2 d: the next activity starts two days before the end).
Curing time, delivery lead times and inspections are better modelled with a lag than with a fake activity.
3. Milestones for key moments
A milestone is a zero-duration activity: "Building closed in", "Framing inspection", "Cabinet delivery", "Handover". It costs nothing and makes the schedule readable for the client. A milestone that follows an activity falls on the day that activity finishes.
4. Critical path and float
Once the links are in place, two things are calculated for each activity:
- the forward pass gives the early start and finish;
- the backward pass, from the project finish, gives the late start and finish that won't delay the end.
The difference between the two is float: how many working days an activity can slip without pushing back the project finish. Activities with zero float form the critical path: one day late on any of them means one day late at handover.
Example: from excavation to building closed in
Seven activities, durations in working days (illustrative values, replace them with your crews'):
| No. | Activity | Duration | Link |
|---|---|---|---|
| 1 | Excavation | 3 d | — |
| 2 | Foundation (footings and walls) | 8 d | FS after 1 |
| 3 | Damp-proofing and backfill | 4 d | FS after 2, + 3 d (cure) |
| 4 | Framing | 15 d | FS after 2, + 3 d (cure) |
| 5 | Roofing | 4 d | FS after 4 |
| 6 | Plumbing and electrical rough-in | 6 d | SS after 4, + 10 d |
| 7 | Milestone "Building closed in" | 0 d | FS after 5 |
Forward pass (working days numbered from 1)
| No. | Start calculation | Start | Finish |
|---|---|---|---|
| 1 | first day | 1 | 3 |
| 2 | finish of 1 + 1 = 4 | 4 | 11 |
| 3 | finish of 2 + 1 + 3 = 15 | 15 | 18 |
| 4 | finish of 2 + 1 + 3 = 15 | 15 | 29 |
| 5 | finish of 4 + 1 = 30 | 30 | 33 |
| 6 | start of 4 + 10 = 25 | 25 | 30 |
| 7 | milestone: the day 5 finishes | 33 | 33 |
The project finishes on working day 33.
Backward pass and float
Start from the end (day 33) and walk each link back:
| No. | Late finish | Late start | Float |
|---|---|---|---|
| 7 | 33 | 33 | 0 |
| 5 | 33 | 30 | 0 |
| 6 | 33 (nothing follows it) | 28 | 3 d |
| 4 | late start of 5 − 1 = 29 | 15 | 0 |
| 3 | 33 (nothing follows it) | 30 | 15 d |
| 2 | late start of 4 − 1 − 3 = 11 | 4 | 0 |
| 1 | late start of 2 − 1 = 3 | 1 | 0 |
You can check it by adding up the paths:
| Path | Calculation | Length |
|---|---|---|
| 1 → 2 → 4 → 5 → 7 | 3 + 8 + 3 (lag) + 15 + 4 | 33 d (critical) |
| 1 → 2 → 4 → 6 (SS + 10) | 3 + 8 + 3 + 10 + 6 | 30 d (3 d float) |
| 1 → 2 → 3 | 3 + 8 + 3 + 4 | 18 d (15 d float) |
The critical path is Excavation → Foundation → Framing → Roofing → Building closed in. If the plumbing rough-in takes 2 extra days, the finish doesn't change; if framing takes 2 extra days, the building is closed in 2 days later.
Note: the backfill's 15 days of float come mostly from the fact that nothing follows it. In a real schedule, link it to what depends on it (e.g. grading or the driveway), otherwise it looks freer than it is.
On the calendar
Starting on Monday, May 3, 2027, with weekends off, working day 33 lands on Wednesday, June 16, 2027. Add Québec's National Patriots' Day (Monday, May 24, 2027) and it lands on Thursday, June 17, 2027. That's the point of counting in working days: the calendar does the rest.
5. The baseline
Once the schedule is accepted (by the client, by your subcontractors), save it as a baseline. You keep the original version to compare against reality: which activity slipped, by how much, and the variance on the finish date. Without a baseline, a schedule that moves never tells you why it moved.
6. Updating to today
A schedule is a living document. Once a week, update progress:
- an activity that should have started and hasn't is pushed to today at the earliest;
- an activity in progress keeps its elapsed days, and the rest of its duration is recalculated from its percent complete;
- everything downstream slides through the links, and the critical path may change.
Common mistakes
- Fixed dates everywhere instead of links: the schedule no longer reacts to delays.
- Activities with no successor: they show misleading float.
- Forgetting statutory holidays and the construction holiday: two weeks in July is a lot on a four-month project.
- Never looking at the critical path: it's the list of activities to watch closely.
With KOR
KOR's schedule works this way: activities and groups, durations in working days, finish-to-start, start-to-start and finish-to-finish links with lags (positive or negative), milestones, and critical path and float recalculated on every change. Québec statutory holidays and the construction holiday are part of the project calendar, the baseline shows as grey bars, and "Update to today" applies the rules above. The schedule can also start from your takeoff: each activity's duration is suggested from the measured quantities and your crews' production rates. Two more modules are in preparation: bid management and project management.
In short
- Reasonably sized activities, in working days.
- Links (FS, SS, FF) with lags, not typed-in dates.
- Milestones for the moments the client is waiting for.
- Critical path = zero float: that's where the finish date is decided.
- A baseline, then an update every week.