In any codebase older than two years, the most valuable work is almost never new features. It's the migration: the deliberate, careful undoing of decisions that were correct when made and are now load-bearing problems.
The onboarding-unify-paths work on Jobado wasn't a bug fix or a feature. It was weeks of changing what 'completed onboarding' means across the app, while users kept signing up anonymously, while half-finished accounts kept their existing state, while a long tail of users were still on an app build from a few weeks back that knew nothing about the new flow and would only catch up whenever they bothered to update.
Where agents help, and where they stop helping
Agents are genuinely useful inside a migration. They rename a symbol across the repo in seconds, find call sites I would have missed on grep alone, draft the migration script, and turn 'do this same change in forty-three files' from a half-day into ten minutes. That is real time saved.
What they cannot do is decide whether the rename is safe, read the four-year-old Slack thread where the original decision was justified, or phone the one customer who's been quietly using a field in a way the schema says they shouldn't be. The shape of that judgment hasn't changed since I started doing this twenty years ago.
- The mechanical half of a migration is faster than ever with agents.
- The judgment half isn't, and it's the larger half.
- The trap is letting the speed of the easy half convince you the hard half got easier too.
If you ship product in any company that has lasted long enough to matter, most of what you actually shipped this year was the migration. The announcement only mentioned the feature on top of it.