December 15, 2024·6 min read

How I Ship Production Apps Without Writing Code

The beliefs behind building at speed as a solo founder — clarity, conviction, and knowing what matters before you start.

BuildingPrinciplesSolo Founder

There's a question I get more than any other: "How do you build all of this alone?"

The honest answer is less interesting than people expect. There's no secret stack. No hack. Just a handful of beliefs I keep coming back to — and the discipline to follow them when it's inconvenient.

Here's what actually matters.

Clarity beats speed

The most expensive mistake in building software is starting before you know what you're building. Not approximately — exactly.

I've watched smart people burn weeks on features that were never clearly defined. They moved fast. They shipped something. It was the wrong thing.

Before I build anything, I force myself to answer a set of uncomfortable questions: What problem does this solve? Who is it for? What are the exact inputs and outputs? What does failure look like?

That process is slow and tedious. It has saved me hundreds of hours.

Ambiguity is the most expensive bug

This is the principle I return to more than any other. Ambiguity at the beginning of a project compounds into chaos at the end. A vague requirement at the start becomes three conflicting implementations, two rewrites, and a feature nobody asked for.

When I built the debt payoff engine for Almighty, the amount of upfront clarity I put into defining the behavior — before touching a single tool — is the reason it worked on essentially the first real attempt. Not because I'm fast. Because I was specific.

Fix the ambiguity before you start building. Everything downstream gets easier.

Testing beats guessing

For SHADOWSTATE, I had 283 passing tests before there was a playable build. That sounds backwards until you think about what a test actually is: it's a statement of intent. "This system should behave this way."

When you write those statements first, you're not testing code. You're testing your own understanding of what the system should do. Most of the bugs I've avoided weren't caught by tests — they were prevented by the act of writing them.

The human work isn't what you think

The tools are better than they've ever been. The gap isn't technical — it's clarity.

The real work is:

  • Product clarity — knowing exactly what to build and, harder, what not to build
  • System coherence — making sure a hundred decisions still fit together as one thing
  • Judgment calls — knowing when the tool is wrong and having the conviction to override it
  • Reality testing — using the product yourself, not just reading the output

Most of the failure I've seen in fast-moving builders isn't from bad tools or bad code. It's from building the wrong thing clearly — or the right thing vaguely.

The operational mindset

Here's what I think most builders miss: shipping at speed is fundamentally an operational problem, not a technical one.

Running a retail store taught me that systems break at handoffs. The same is true in software. The handoff between what you think you want and what actually gets built is where most of the failure happens.

Fix the handoff. Define it precisely. Review it honestly. Test it against reality.

The building almost takes care of itself.

Velocity is a belief system

People ask about my stack, my tools, my process. The real answer is simpler than they want it to be: I believe that clarity is more valuable than speed, that finishing things matters more than starting them, and that a system you trust is worth more than a brilliant improvisation.

That's it. Everything else is details.


If you're building something and want to think through it — reach out.