Skip to main content

The Cart Before the Horse

Most dependency graphs are wrong

A common decision-making error is assuming that work must happen in a specific order.

People often think in sequences like:

  • “I need analytics before launching.”
  • “I need branding before posting.”
  • “I need the product before marketing.”
  • “I need everything in place before I start.”

This creates a mental model that looks like:


A → B → C → D

The problem is:

Most of these edges do not exist.


The Error: Imagined Dependencies

There are two types of dependencies.

1. Real dependencies

These are constraints that cannot be violated.

They come from physics or infrastructure.

Examples:

  • You cannot configure DNS without owning the domain.
  • You cannot compile code without a compiler.
  • You cannot process payments without a payment processor.

These are actual blockers.


2. Imagined dependencies

These are assumptions about order that are treated as constraints.

Examples:

AssumptionReality
“I need analytics before launching.”Analytics can be added later.
“I need perfect branding.”Branding can evolve.
“The SaaS must exist before using QR codes.”QR codes can point anywhere.
“I need the apartment before moving.”Temporary solutions exist.

These are not real dependencies.

They are incorrect edges in the graph.


The Structural Mistake

The mistake is not lack of effort.

The mistake is constructing an incorrect model of reality.

Specifically:

Treating sequencing preferences as hard constraints.

This introduces artificial blockers that do not actually exist.


Collapsing the Graph

Once false edges are removed, the structure changes.

Instead of:


A → B → C → D

The system often reduces to:

A → interface

or even:

A → (whatever you want next, no dependency on A)

Where additional components can be inserted later.

Progress comes from removing constraints, not respecting them.


Example: QR Code Tracking

A naive model:

analytics → backend → QR codes → distribution

Actual requirement:

QR code → URL

That URL can point anywhere.

So the system can start as:

QR code → temporary redirect

And later become:

QR code → owned redirect → analytics

The product is not a prerequisite.

It is a replacement.


Rearranging Constraints

Another example:


buy truck → buy bike → transport bike

But the real constraint is:

You need transport at the moment you leave with the bike.

So the sequence becomes:

rent truck → buy bike → transport

The dependency was misidentified.


A Useful Heuristic

A simple rule:

Only treat something as a dependency if physics or law requires it.

Everything else should be treated as negotiable.


Why This Matters

Incorrect dependency graphs lead to:

  • delayed execution
  • unnecessary planning
  • artificial blockers
  • wasted time

The issue is not motivation.

The issue is modeling reality incorrectly.


The Cart Before the Horse

Sometimes the cart appears to come before the horse.

In reality:

The horse was never a prerequisite.

It was just assumed to be one.