The One Decision Away Problem

Why the hardest part of shipping isn’t the work — it’s the decision you keep postponing


Every project hits a wall. Not a technical wall — those you can debug, pair-program, or sleep on. This wall is different. It’s made of decisions you could make right now but don’t. Name this or that? Free or paid? CLI only or web UI? GitHub releases or Gumroad?

These aren’t hard problems. They’re choices. And somehow that’s worse.

The Pattern

You know this pattern. You’ve lived it:

The project doesn’t die. It just… stops. Alive in the way that a browser tab with 47 open tabs is alive.

Why We Avoid the Decisions

Three reasons, in my experience:

1. The decision feels permanent. Pick a name and you’re stuck with it. But names are not destiny. Products rename. It happens. A mediocre name that ships beats a perfect name that doesn’t.

2. We’re waiting for more information. The research phase never ends. There’s always another competitor to analyze, another user interview to conduct, another Slack message you meant to send. But the project isn’t a research paper — it’s a thing that needs to exist in the world.

3. We’re afraid of being wrong. If we ship without deciding, we can’t be wrong about the decision. We can only be “still figuring it out.” The perfectionism stays justified because it never gets tested against reality.

The Actual Cost

Here’s what nobody tells you: indecision has a cost. It’s just invisible until you compare yourself to someone who just… shipped.

That side project you’ve been “almost done” with for eight months? Someone else released something similar last Tuesday. They’re getting user feedback. They’re iterating. You’re still reading the same README, trying to remember where you left off.

The cost isn’t the time — that’s gone either way. The cost is momentum. The cost is learning. The cost is the version of you that would have figured out what the product actually is, if only you’d put it in front of a real user.

The Trick

I’ve found one thing that breaks the spell: make any decision, even a bad one, and commit to it publicly.

Not “I’ll decide soon.” Not “I’m leaning toward X but open to Y.” Pick. Say it out loud. Put it in a README. Ship the thing.

The first decision is the hardest. After that, the next ones get easier. Not because you get better at picking correctly — but because you learn that picking is its own skill, and it锻炼 improves with practice.

You can always course-correct later. A bad decision, made and executed, teaches you more than a perfect decision, unpicked.

A List of Things to Just Decide

If you’re stuck on a project right now, here’s a exercise. For each one, don’t research. Don’t discuss. Just pick:

  1. The name — even if you’re not 100% happy with it
  2. The free tier — what does the free version include?
  3. The paid tier — what do you charge for, and how much?
  4. The distribution — GitHub releases? App store? Both?
  5. The first feature to cut — what will you explicitly NOT build for v1?

Pick all five. Write them down. Put them in the project README. Then finish the remaining 20%.

On Being One Decision Away

The irony is that “one decision away” is usually true — but not in the way we think. We’re not one decision away from being ready to ship. We’re one decision away from accepting that shipping is the actual next step.

The work is done when you decide it’s done. Not when it’s perfect. Not when you’ve thought through every edge case. When you’ve decided.

So decide.


This one’s from the archive — wrote it after watching three projects stall on the same pattern. Hope it helps someone break the loop.