Senior Application Developer

loc: Maynooth, ON K0L 2S0tel: 613-553-0960email: rgsamways@gmail.com
Robin Samways

robinsamways.ca · AI-Assisted Development

$ 10 Minutes, Nine Task Groups: What 'Minor UI Change' Actually Cost

The request was framed casually: move some icons around, make the mobile nav full-screen instead of a narrow drawer, tidy up the 'on this page' outline. The kind of ask that sounds like a CSS tweak. The developer directing it even joked he hoped it wouldn't take more than 10 minutes.

Tracing what 'move an icon' actually touches surfaced three things invisible from the outside: the icon meant to swap between 'Account' and 'Sign In' would go stale the instant someone signed in, because the component hosting it never remounts on client-side navigation — a constraint documented from a prior, unrelated change, easy to never notice until a real user hit it live. Removing a modal's escape-hatch createPortal call required confirming nothing else in the codebase depended on it. And the header photo — already flipped once, the day before, on a whim — turned out to have drifted from a requirement the site's own spec had stated all along.

D4 — Session-conditional icon via a `data-signed-in` attribute on `<html>`, not
React state or a new event bus.

Why not React state: RightRail mounts once at the root layout and never
remounts on client-side navigation (established precedent, site-settings-page)
— a useState read once on mount would go stale the instant a visitor signs in
or out without a full reload.

The fix

Nothing here got 'fixed' after the fact — the process caught it before any code existed. Writing a design doc before writing a line of implementation forced each of these costs into the open during planning: what should have been a one-line CSS change grew into 9 task groups covering a new shared-state context, a CSS pattern reused from an existing settings feature, two rewritten end-to-end test files, and a restoration of an already-shipped-but-undelivered spec requirement.

Why this matters

Working solo with AI, a rigid process — proposal, design, spec deltas, task list, all before implementation — doesn't just catch AI's mistakes. It catches the mistake of underestimating scope before a single line is committed, which is exactly the difference between a line item in a proposal and a late-night bug-fix entry discovered after something ships and breaks quietly in production.

Feedback on this page