Bad Boy Software All articles
Opinion

Your Beautiful Abstraction Doesn't Pay Rent

Bad Boy Software
Your Beautiful Abstraction Doesn't Pay Rent

Photo: Software: Wikimedia Foundation, Mozilla Foundation, and contributors Screenshot: VulcanSphere, CC BY-SA 4.0, via Wikimedia Commons

Let's get one thing straight before the purists start typing: we like good code. We write good code. But somewhere in the last decade, 'good code' stopped meaning code that works and started meaning code that would impress a senior engineer at a conference talk. Code with seventeen layers of abstraction. Code so 'clean' it's never actually shipped anything.

Here's the reality check nobody on Hacker News wants to give you: nice code gets rewritten. Working code gets paid.

The Cathedral Nobody Uses

We've watched it happen more times than we can count. A founder raises a seed round, hires a couple of sharp engineers, and those engineers spend four months building The Architecture. Microservices for an app with 40 users. A custom event bus because, hey, someday they might need it. A test suite with 90% coverage of features that don't exist yet.

Meanwhile, their competitor — the one with the 'spaghetti' codebase and the slightly embarrassed CTO — shipped a rough version in six weeks, got 500 paying customers, and used the revenue to hire two more developers.

Guess which codebase got rewritten? Trick question. The competitor's ugly code didn't need rewriting. It needed refining, which is a completely different job and a much cheaper one.

When Elegance Is Actually Expensive

Here's what the clean code dogma skips over: perfection has a burn rate. Every week your engineers spend debating whether to use hexagonal architecture is a week you're paying salaries, burning runway, and letting someone else talk to your customers.

For a US startup, the math is brutal and simple. Your runway is measured in months, not code review cycles. Investors don't ask to see your folder structure — they ask about traction. Customers don't cancel because your dependency injection is inelegant. They cancel because your product didn't show up.

The dirty secret of the software industry is that a lot of very successful companies got that way on code their own engineers would call embarrassing. It worked. It made money. Then they cleaned it up with revenue, not with venture capital and prayers.

Okay, So When Does Quality Actually Matter?

We're not telling you to write garbage. We're telling you to be honest about where quality earns its keep. Here's our quick-and-dirty breakdown:

Quality matters now:

Quality can wait:

The Rewrite Nobody Talks About

Here's the part that really stings for the architecture astronauts: the market rewrites your assumptions faster than you rewrite your code. You spend six months building a beautifully extensible plugin system, and then your customers tell you they don't want plugins — they want a mobile app. All that foresight? Worthless. The startup that hacked something together in a weekend and asked users what they thought? They pivoted two months ago.

Speed isn't just about beating competitors to market. It's about buying information. Every week you ship is a week of real-world data that no amount of elegant theorizing can replicate. Clean code written against wrong assumptions is still wrong — it's just wrong in a tidier way.

Spend Your Budget Like an Owner, Not a Perfectionist

If you're a founder deciding where your dev dollars go, ask one question about every ticket: does this get us to revenue, retention, or learning faster? If the answer is no, it goes in the backlog — even if it's a 'best practice.'

Save the refactoring budget for when you've earned it. The time to invest in serious engineering is after something works, when you know what 'it' actually is. That's not laziness. That's sequencing.

The rebels who win aren't the ones writing the prettiest code. They're the ones shipping, learning, and paying the bills — then refactoring with money in the bank. Write code that works first. Write code that's nice when nice code has a customer.

All Articles

Related Articles

Committee Engineering Is Why Your Competitor Beat You to Market

Committee Engineering Is Why Your Competitor Beat You to Market

"We'll Fix It Later" Is the Most Expensive Sentence in Software

"We'll Fix It Later" Is the Most Expensive Sentence in Software

"Minimum Viable" Doesn't Mean "Minimum Effort": Fix Your First Release

"Minimum Viable" Doesn't Mean "Minimum Effort": Fix Your First Release