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.

Comments

No comments yet. Be the first!