Guide

The critical path method, with a worked example

How to calculate the critical path by hand: the forward pass, the backward pass, and total float, worked through a six-task network.

The critical path is the longest chain of dependent work through a project. It sets the earliest possible finish date, and any task on it that slips moves that date. Here is how it is actually calculated, worked through end to end on a small network you can follow with a pen.

The network

Six tasks, with durations in working days and the tasks each one waits for. This is a small enough network to calculate by hand and large enough to have a non-obvious answer.

The example network
TaskDurationDepends on
A. Requirements5 days
B. Design8 daysA
C. Data mapping6 daysA
D. Build10 daysB
E. Migration scripts4 daysC
F. Testing5 daysD and E

Two chains run in parallel after Requirements, and they converge on Testing. The question is which chain controls the end date.

The forward pass: earliest start and earliest finish

Work left to right. Each task starts as early as everything feeding it allows, which means the day after its latest predecessor finishes. Earliest finish is earliest start plus duration, minus one, because a task that starts on day 1 and runs five days finishes at the end of day 5, not day 6.

Where a task has several predecessors, it waits for the last of them. Testing cannot start until both Build and Migration scripts are done.

Forward pass
TaskDurationEarliest startEarliest finish
A5Day 1Day 5
B8Day 6Day 13
C6Day 6Day 11
D10Day 14Day 23
E4Day 12Day 15
F5Day 24Day 28

The project finishes on day 28. Note that Testing waits until day 24 even though Migration scripts finished on day 15: it is held up by Build, not by the migration chain.

The backward pass: latest start and latest finish

Now work right to left from that day 28, asking the opposite question: what is the latest each task could finish without pushing the end date?

Testing must finish on day 28, so it must start on day 24. Everything feeding Testing must therefore finish by day 23. Where a task feeds several successors, it is constrained by the earliest of them.

Backward pass
TaskDurationLatest startLatest finish
A5Day 1Day 5
B8Day 6Day 13
C6Day 14Day 19
D10Day 14Day 23
E4Day 20Day 23
F5Day 24Day 28

Total float, and the answer

Total float is latest start minus earliest start: how many days a task can slip before it costs you the end date. Anything with zero float is on the critical path.

Total float
TaskEarliest startLatest startTotal floatCritical?
ADay 1Day 10 daysYes
BDay 6Day 60 daysYes
CDay 6Day 148 daysNo
DDay 14Day 140 daysYes
EDay 12Day 208 daysNo
FDay 24Day 240 daysYes

The critical path is A → B → D → F. Adding those durations gives 5 + 8 + 10 + 5 = 28 days, which matches the forward pass, and that agreement is the check that the arithmetic is right.

The migration chain, A → C → E → F, takes 20 days. The eight-day difference is exactly the float carried by C and E.

What to do with the answer

The immediate use is triage. Protect the four critical tasks, and understand that the migration chain has eight days of room before it becomes anyone's problem.

The more important use is repetition. The critical path is not a fact about your project, it is a fact about your project *as currently scheduled*. Complete a task early, let one slip, add scope, and the path can move to a completely different chain. In this network, an eight-day slip anywhere on the migration chain makes it critical too, and a nine-day slip makes it the critical path instead.

That is why calculating it once at planning time and filing it is close to useless. It has to be recalculated whenever anything changes.

How this works in Depentra

Depentra runs both passes automatically over your dependency network, on the current schedule including any delays applied, and shows total float per task as a property you can add to the table, filter to zero, sort, and export.

Related guides

Total float and free float: the difference that matters

Two different kinds of slack, why confusing them causes missed dates, and a worked example where a task has eight days of one and none of the other.

The four dependency types, and when each one is right

Finish-to-Start, Start-to-Start, Finish-to-Finish, and Start-to-Finish explained, with lead and lag time and when each link type is the honest one.

Put this into practice

Depentra does this arithmetic for you, on your own plan, and shows you what moves when something slips.