DEV Community

Cover image for AI Helps You Code Faster. So Why Are You Still Shipping Slowly?
Robert Adamson
Robert Adamson

Posted on

AI Helps You Code Faster. So Why Are You Still Shipping Slowly?

You generated a feature in 20 minutes.

Three days later, it still hasn’t reached production.

The code exists. But the tests are failing, the review is waiting, and someone just noticed that the feature solves the wrong problem.

What actually got faster?

Writing the first version.

That matters. But users don’t use first drafts. They use working software.

Coding Is Only One Part of Shipping

Consider a simple feature: adding a discount code at checkout.

AI can quickly generate the input, validation logic, and API endpoint.

But you still need answers:

  • Can customers combine discounts?
  • What happens when a code expires during checkout?
  • Does the discount apply before or after tax?
  • Can someone reuse a single-use code?

A feature can look finished while these questions remain unanswered.

AI can turn assumptions into code faster than you can notice them.

Faster Generation Can Create a Bigger Queue

Imagine a team producing twice as many changes while its review capacity stays the same.

More code arrives. More code waits.

Large changes make this harder. A reviewer must understand the intent, inspect the implementation, and check how it affects the rest of the system.

Generating another feature doesn’t clear that queue.

Sometimes, the most useful next step is helping an existing change reach production.

Passing Tests Doesn’t Mean You Solved the Right Problem

Suppose you ask AI to implement discounts, then ask it to write tests.

It might assume that discounts can be combined—and write tests confirming that behavior.

Everything passes.

The business wanted one discount per order.

The problem is that the implementation and the tests can share the same wrong assumption.

Define the expected behavior before generating either.

Five Ways to Turn Faster Coding Into Faster Delivery

1. Describe “done” before asking for code

“A discount feature” is vague.

“One valid discount per order, with expired codes rejected and the updated total shown before payment” gives you something concrete to verify.

Clear requirements reduce guessing and rework.

2. Ask for smaller changes

Avoid asking an agent to rebuild checkout in one request.

Start with one behavior. Inspect it. Verify it. Then move on.

A smaller change is easier to understand, review, and fix.

3. Review the assumptions first

Before examining every line, ask:

  • What decisions did the AI make?
  • Which existing behavior changed?
  • What happens when something fails?

Finding a wrong assumption early can save more time than polishing the code built around it.

4. Test the awkward cases

The happy path is only the beginning.

Try an expired code, two quick submissions, a failed request, and a customer refreshing during checkout.

Choose tests based on what could hurt the user or the business.

5. Measure delivery, not generated code

Lines of code and completed prompts don’t tell you whether customers received something useful.

Track how long changes take to reach production, how often they need rework, and what breaks after release.

A smaller feature that works is more valuable than a larger feature waiting for approval.

Try This on Your Next Feature

Write three acceptance criteria. Ask AI for the smallest implementation that meets them. Check its assumptions. Test one important failure case.

Then follow the change all the way to production.

AI can shorten the coding step. To shorten delivery, you also need to address whatever keeps the finished code waiting.

Where does your work get stuck most often: requirements, review, testing, or deployment?

Top comments (1)

Collapse
 
_5c75b1d3a1b3628dec81_58 profile image
Yoshiyuku •

This is a great follow-up to your "tests pass" post — the discount-code example is the clearest illustration I've seen of the shared-blind-spot problem, because it's not abstract: "combined discounts allowed" is exactly the kind of assumption that feels like an implementation detail right up until it's a business rule someone violated in production.

To answer your question directly: for me it's requirements, by a wide margin — and I don't think that's unique to AI-assisted work, AI just collapsed the step that used to create natural friction (typing slowly gave you time to notice you were guessing). Your "describe done before asking for code" rule is really a forcing function for that friction to happen on purpose instead of by accident.

I've actually started using a tool that treats "describe done" as a structural requirement rather than a habit: speckeep, a spec-driven workflow for coding agents. It forces a spec with explicit acceptance criteria before any code gets written, and every task has to carry a literal Proof: line pointing to a real test before it can be marked done — a CLI gate fails by name if that's missing. It's the same five rules you listed, just enforced by an exit code instead of discipline you have to remember to apply every single time. Your rule #3 (review assumptions before line-by-line review) maps almost exactly onto its plan.md step.

Given this is now your third well-developed post on the same theme (tests-pass, local-decisions-vs-system, and this one), the underlying methodology is solid enough that a few different monetization paths seem realistic, roughly by effort required:

  1. Template/checklist pack — acceptance-criteria templates for common feature shapes (discount logic, auth flows, payment states), sold on Gumroad or as a Zenn-equivalent. Lowest effort, fastest to ship.
  2. A compiled playbook/ebook — the three posts you already have, plus a few more, edited into a paid "Shipping With AI Agents" guide. You already have the content; this is mostly packaging and a bit of expansion.
  3. A lightweight tool — something like a GitHub Action or PR-time bot that checks a PR against a written acceptance-criteria file before allowing merge, essentially productizing rule #1 and #3. This is closer to speckeep's territory but scoped specifically to your "describe done" framing, which could differentiate it. Free/open-core with a paid team tier is a proven model here (that's roughly Bogdan's approach with speckeep).
  4. A paid diagnostic/audit service — given you clearly have full-stack + AI engineering chops, a short paid engagement where you look at a team's actual pipeline and tell them exactly where they're stuck (requirements, review, testing, or deployment — your own framework) could be a natural extension of the content into consulting.
  5. Workshop/cohort-based teaching — higher effort, higher trust required, but likely the highest per-hour return once you have 1-2 and 2 done as credibility.

I'd probably start with #1 or #2 since they're nearly zero marginal cost given what you've already written, and treat #3/#4 as things to test once you see which piece of content actually gets people asking follow-up questions.

Great piece — this series is becoming a genuinely useful reference to point people to.