Know what you are shipping

Two failures hide in this phrase: shipping code you don't understand, and shipping without owning the result. The fix is to do both, understand it, own it - and calibrate how much rigor that demands to what the project was actually paid for.

Sefa
Sefa Thursday, March 19th, 2026

There are two failures hiding in the phrase "know what you are shipping," and most developers have committed at least one of them. The first is shipping code you do not understand: the copied snippet, the AI output you waved through, the dependency you added without reading what it does. The second is shipping without owning the result: treating "it works on my machine" or "the ticket is closed" as the end of your responsibility, when the thing is now live and behaving however it behaves in front of real users.

Knowing what you are shipping is the antidote to both. You should understand the code that goes out under your name, and you should treat yourself as accountable for how it behaves in production, including the edge cases, the failure modes, and the security implications you would rather not think about. That is the baseline. But there is a second layer to this that most takes on the subject miss, and it is the part I think actually matters.

The bar is not fixed. It scales with the project.

How much you need to know about what you are shipping depends on the project. Specifically, it depends on the budget and the expectations, and those two are usually the same thing, because the budget reflects what the client expects.

A small, cheap site and a large, expensive one are not held to the same standard, and pretending they are leads to bad decisions in both directions. On a five thousand site, exhaustively handling every edge case, hardening every input, and stress-testing every path is not diligence. It is gold-plating the client did not pay for and does not need, and it usually comes out of your own margin. The appropriate level of "knowing what you ship" there is real but bounded: understand your code, make it work correctly for the cases that matter, and ship.

On a hundred thousand site, the same casual bar would be negligence. The expectations are higher because the budget is higher because the stakes are higher. Now you genuinely owe the deep version: the edge cases handled, the security considered, the failure modes thought through, the behaviour understood under load and under attack. Cutting the corners that were fine on the small site is exactly the failure the client paid you specifically to avoid.

So "know what you are shipping" is not a single fixed standard you apply identically everywhere. It is a calibration. The skill is reading what the project actually requires and matching your rigor to it, rather than applying your favourite level of care to everything regardless of whether it was paid for or needed.

Why budget is a fair proxy

This sounds mercenary, and it is worth being clear about why it is not. The budget is not just what the client is willing to pay. It is the clearest signal you have of what they expect and what the work is worth to them. A client who scoped a small site is telling you, with their budget, that they want a capable site at that level of investment, not a bank-grade application. A client who scoped a large one is telling you the opposite. Respecting that signal is respecting what they actually asked for.

The mistake developers make is substituting their own preferences for that signal. Either they over-engineer the small project because they enjoy thoroughness, and quietly lose money doing work nobody wanted, or they under-deliver on the large one because they brought small-project habits to a big-project responsibility. Both are failures to read what you were actually being asked to ship.

The throughline

This connects directly to how I think about AI, and about accountability in general. Keeping control of what you ship, understanding it, owning it, is the same discipline whether the code came from your own hands, a teammate, or a model. And calibrating how much rigor that demands is the same judgement that separates a five thousand build from a hundred thousand one.

So the full message is two parts that have to be held together. Always understand and own what you put your name on, because you cannot be accountable for something you did not actually decide. And calibrate the depth of that ownership to what the project genuinely requires, because matching your rigor to the expectations is itself part of knowing what you are shipping. The developer who ships things they do not understand has failed one half of this. The developer who applies the same fixed standard to every project regardless of what it called for has failed the other. Knowing what you are shipping means getting both right at once.

Know What You're Shipping: Own the Code You Deploy | Article | Sefa's Portfolio