Why links matter more than bars
A Gantt chart without dependencies is a drawing: pretty, static, and wrong the moment anything changes. A dependency (a link between two tasks) encodes a fact about reality: this work cannot happen until that work reaches a certain point. Once the facts are in, the schedule can do its real job, when one task moves, everything downstream moves correctly, and you can see what a slip actually costs before agreeing to it.
The four types
Finish-to-Start
~90% of real linksB starts after A finishes. "Pour the foundation, THEN build the walls." If you are unsure which type to use, it is this one.
Start-to-Start
occasionalB starts when A starts (often with a lag). "Start writing documentation 2 days after development starts", the work overlaps on purpose.
Finish-to-Finish
occasionalB cannot finish until A finishes. "Testing ends when the last fix lands." The ends are tied together; the starts are free.
Start-to-Finish
rare, and usually a smellB cannot finish until A starts. Legitimate in shift handovers ("the night guard finishes when the day guard arrives"); in most other plans it means the link is drawn backwards.
Lag: the number on the link
Every link can carry a lag, a deliberate wait: "walls start 3 working days after the foundation finishes" is FS+3. The alternative people reach for, quietly padding the task estimate, hides the buffer where nobody can see or question it. Lag on the link is visible, survives every reschedule, and documents itself.
What happens when things move
The whole point of links is the cascade: pull a predecessor two days right and everything chained after it shifts two days, gaps intact, in working days (so a shift across a weekend lands on Monday, not Saturday). Two behaviors separate serious tools from drawing tools here: whether your hand-set gaps are preserved through moves, and whether an impossible arrangement is flagged as a conflict for a human to resolve rather than silently "fixed" by rearranging other people's commitments.
The three classic mistakes
- No links at all. The chart becomes wall art; every change means manually re-dragging twenty bars, so nobody updates it, so it dies.
- Linking everything to everything. An over-constrained plan cannot flex; one small slip cascades into chaos. Link real constraints only, "nice to do first" is not a dependency.
- Date-pinning instead of linking. Typing a start date "because that is when the predecessor ends" freezes today's answer into the plan. When the predecessor moves, the pinned task does not, and the chart starts lying.