How the critical path method works
The longest chain of dependent work decides your finish date. Everything else has room to move — and knowing how much is the whole point.
CPM is two sweeps through the network. Forward to find how early each activity can happen, backward to find how late it can happen without pushing the project. The gap between those two answers is float, and float is what the method is really for.
The forward pass
Start at day zero and work left to right. Each activity begins as soon as everything it waits on allows, and finishes a duration later. Where several predecessors feed one activity, the latest of them governs — you cannot start until the slowest input arrives. The largest finish across the whole network is the project duration.
The backward pass
Now start at the project finish and work right to left. Each activity is pushed as late as it can go without delaying anything that follows it. Where an activity feeds several successors, the earliest of them governs.
Float, and the two questions it answers
total float = late start − early start. Zero total float means the activity is
on the critical path.
But free float is the number a task owner actually needs: how long they can slip before they disturb the next activity's earliest start. The two are often different. An activity can have ten days of total float and none of it free — slip it one day and a colleague's start moves immediately, even though the project end is fine for another nine.
Telling someone they have ten days of room when they have none of it free is technically correct and practically wrong, and it is why a good schedule reports both.
More than one critical path is normal
Parallel chains of equal length are all critical at once. This matters enormously when you try to compress a schedule: buying a week out of one critical path achieves nothing if two others still run the same length. Compression exercises routinely spend real money and move the finish date by zero for exactly this reason.
Why almost everything being critical is a warning sign
Float comes out of the dependencies you entered. A network wired more rigidly than the work actually is will report far more critical activities than really exist — every task made to wait on the one before it, when in practice several could overlap.
If a schedule says 90% of the work is critical, the likeliest explanation is not a desperately tight project but a network that has never been questioned. The fix is to look at which dependencies are genuine constraints and which are just the order someone happened to list things in.
What this tool will not do
It calculates from the figures you enter and nothing else. It cannot tell you whether your estimates are honest, whether your dependencies reflect how the work really flows, or whether the plan is achievable with the people you have. Those are judgements, and a schedule that looks precise can still be built on all three being wrong.