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…).

A date typed by hand doesn't move when everything else moves. A link does. Three link types cover almost every case:

LinkMeaningExample
Finish-to-start (FS)B starts the working day after A finishesRoofing after framing
Start-to-start (SS)B starts once A has startedPlumbing rough-in starting during framing
Finish-to-finish (FF)B finishes when A finishesAn inspection that wraps up with the last work package

Each link can carry a lag in working days:

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 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.ActivityDurationLink
1Excavation3 d—
2Foundation (footings and walls)8 dFS after 1
3Damp-proofing and backfill4 dFS after 2, + 3 d (cure)
4Framing15 dFS after 2, + 3 d (cure)
5Roofing4 dFS after 4
6Plumbing and electrical rough-in6 dSS after 4, + 10 d
7Milestone "Building closed in"0 dFS after 5

Forward pass (working days numbered from 1)

No.Start calculationStartFinish
1first day13
2finish of 1 + 1 = 4411
3finish of 2 + 1 + 3 = 151518
4finish of 2 + 1 + 3 = 151529
5finish of 4 + 1 = 303033
6start of 4 + 10 = 252530
7milestone: the day 5 finishes3333

The project finishes on working day 33.

Backward pass and float

Start from the end (day 33) and walk each link back:

No.Late finishLate startFloat
733330
533300
633 (nothing follows it)283 d
4late start of 5 − 1 = 29150
333 (nothing follows it)3015 d
2late start of 4 − 1 − 3 = 1140
1late start of 2 − 1 = 310

You can check it by adding up the paths:

PathCalculationLength
1 → 2 → 4 → 5 → 73 + 8 + 3 (lag) + 15 + 433 d (critical)
1 → 2 → 4 → 6 (SS + 10)3 + 8 + 3 + 10 + 630 d (3 d float)
1 → 2 → 33 + 8 + 3 + 418 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:

Common mistakes

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

  1. Reasonably sized activities, in working days.
  2. Links (FS, SS, FF) with lags, not typed-in dates.
  3. Milestones for the moments the client is waiting for.
  4. Critical path = zero float: that's where the finish date is decided.
  5. A baseline, then an update every week.