Methodology

Why Software Keeps Breaking — and How It Should Be Built

Mat Kupczyk
Mat Kupczyk Consulting Lead

Software rarely breaks because your developers are bad — it breaks because there’s no process around the code. This is the Software Delivery Flow: the seven stages, from strategy through monitoring, that turn “hand it to a developer and hope” into a product the business can actually see and steer.

Most software doesn’t keep breaking because the developers are bad. It breaks because there’s no process around the code — and that process is the part most teams never run on purpose. The video above is the full walkthrough; this is the short written version, for skimming and reference.

The problems we see over and over

Writing code is the part everyone pictures, and it’s rarely where things go wrong. Shipping software is a much wider process, and it’s the part almost nobody runs deliberately. The pattern we see, especially at smaller companies, is always the same: the business hands an idea straight to a developer, and off they go. Then:

  • What comes back was built to a guess — the business finally sees it and says “that’s not what I meant,” and now you’re paying to redo it.
  • Bugs reach customers instead of getting caught before release — and they damage more than the code.
  • The structure underneath gets you from A to B, but not to C without tearing it up and starting over.
  • The whole process lives in one person’s head — so they become the bottleneck, and quality swings with whoever picked up the task.

None of that is a coding problem. It’s the absence of a process.

The odd part is that none of this is new. The way good software gets shipped hasn’t really changed in decades, and AI didn’t turn it upside down — if anything, it just made the discipline cheaper to reach. The shape has been well understood for years. Most teams still run it on instinct, and that’s exactly where it breaks.

Our Software Delivery Flow

We run every project through the same seven stages, and the last one loops back to the first. Here’s what each one makes sure of:

  1. Strategy — everyone knows why we’re building something, and who it’s for, before anyone starts. Put the goal and the audience in the ticket itself; if the why won’t fit in a sentence, it isn’t clear enough to build yet.
  2. Requirements — that why becomes something the team can actually build, and the business can actually verify. Write down the expected behavior and how it changes what’s already there, and give one person the job of confirming that what shipped is what was asked for.
  3. Architecture — the structure can grow without a rebuild, so one change doesn’t break five other things. Ask the hard questions about the future before you commit to a shape, let a senior make the call, and record the big decisions so the reasoning outlives whoever made it.
  4. Coding — the work is written to one shared standard, so quality doesn’t swing with whoever picked up the task. Agree the conventions, where the code lives, and the test coverage each feature ships with — then add automatic checks so the standard doesn’t quietly erode under deadline pressure.
  5. QA — problems get caught before your customers do. Bake testing into the process instead of leaving it to one person poking at the end, and every time you fix a bug, write the test that keeps it fixed.
  6. Release — a change reaches production safely, predictably, and with everyone who needs to know in the loop. Keep releases small and frequent, automate the steps, and rehearse the rollback before you need it — an untested rollback is just a hope.
  7. Monitoring — you know the system is up, the business is actually working, and whether the outcome you wanted moved — which feeds straight back into strategy. Watch two layers, technical health and business health, and block a recurring half-hour to actually read the numbers and act, rather than waiting for an incident.

The point isn’t seven people, or a mountain of process. It’s that every one of these is owned — even if, on a small team, one strong person owns several. What breaks a delivery is a stage left to no one.

What actually makes it work

Knowing the seven stages is the easy part. Whether they work for you comes down to a few things that have little to do with the diagram:

  • It’s usually a clarity problem, not a talent problem. Most of the messes we walk into aren’t bad work — they’re blurry or unspoken responsibilities. Name who owns each stage, and most of it resolves.
  • Because it’s a process, you can measure it. How many features get reworked, how many bugs reach customers, how many releases go messy. A handful of numbers, talked through with your team regularly, is most of the management — and it’s how a non-technical owner gets real oversight without reading code.
  • Quality stopped being a budget question. In the AI-assisted era, code is close to a commodity — so serious quality, full test coverage and an architecture you don’t have to apologize for, is a question of where you put your attention, not your budget. Owning the whole process end to end used to take a big team and a big budget; it doesn’t anymore.
  • AI is a multiplier, and it works on whatever you feed it. Give it vague requirements and no standard, and it produces low-value work five times faster. Give it real discipline — a clear why, a sound architecture, a standard it can read — and a single strong engineer can outperform a team of three or four, at a quality most companies couldn’t afford two years ago. The flow is what decides which way it multiplies.

That’s what it looks like when software is built on purpose instead of on instinct: not handed to a developer and hoped over, but a process the business can actually see and steer.

from reading to a plan

If This Is the Decision in Front of You, start with a call.

A short discovery call scopes the honest next step. For a system like this, it's usually the fixed-price audit: a diagnosis of the code you actually have, report in hand before you commit to anything further.

newsletter

Notes on Building High-Quality Software

A short founder’s note and a digest of what we’ve published, sent only when there’s something worth the inbox.

No sequence · Unsubscribe in one click