The update that wasn't going to ship.
The product we had was so much work away from being the product we were trying to create. A note on capability, capacity, and the small projects that will see the light of day thanks to recent advancements in agentic AI.
Every working indie product has a parallel version of itself in its maker's head – the one they'd ship if they had the time. The distance between the two is almost always labour, and for a lot of small projects it never closes, because the work required doesn't justify itself against everything else demanding the same hours. Shift It nearly went that way, and still may. It's a small app, never a business – we started it because the roster at my hospital was a PDF exported from a spreadsheet that took me hours a month to copy into my calendar. It's grown one careful feature at a time since. I'm glad we invested the time, unpicked the commits, fixed the bugs, grew the skills. I enjoy building it. I'm writing this because the way the work gets done has changed enough that I wanted to put it on paper.
The shape of the gap
Shift It has shipped for two years as a roster calendar, solid enough by the standards set when it was built. We had been accumulating ideas for the version it ought to be for a while. A proper multi-employer Jobs system. A pay engine accurate enough to flag real payroll errors against a payslip. A home screen redesigned around live activity rather than a static list. A calendar design from this decade. A widget rewrite off the old Swift implementation. A bottom-sheet migration for the dropdown and modal infrastructure. None of these were weekend features. Each was a couple of weeks of deep work, and with longer tails than heads.
The list wasn't a skills problem – we had the intent, the plan, and the designs. The product we had was so much work away from being the product we were trying to create, and, until now, the hours required to close that gap were more than we could justify allocating.
Will and I have both been working full time for Shift It's entire run – me as a hospital doctor, Will as a software dev – and taking breaks from the app to focus on other projects and adventures. This isn't our day job. The capacity issue isn't burnout. It's resource requirement outweighing justifiable investment.
What agents change about the ratio
We want to be careful not to frame this as a skills story. The fixes in the last two posts are not things we couldn't have worked out alone. Most of them were sitting in four-year-old GitHub issue comments, in SwiftUI docs, in the React Native source. The knowledge was already there; what was missing was the time to apply it.
The parts of the work that used to eat weekends collapse into an evening when a capable coding agent is pairing on them. The research step. The "am I missing a known issue" step. The first-draft migration. It still needs us to know what we're looking at and why – the agents haven't replaced that yet. The previously-unthinkable time commitment to get this work done has shrunk by an order of magnitude at least, almost overnight.
That's what made this update the size it is – not a skill we were missing, but a ratio that finally moved.
The slop objection
The discourse about AI in software is bimodal right now. One side is hype and unprecedented accessibility – anyone can build anything, the ceiling is open. The other is slop and an unprecedented lack of understanding – thinly-themed clones, "vibe coding" as shorthand for shipping something plausible without understanding the product or the infrastructure. Both sides have real evidence behind them. What gets skipped is the middle case: skilled people with limited capacity, using capacity-extending tools to do work they never the hours for.
This update is being built with more care, not less, than anything we've shipped on Shift It before. We're linking the upstream bugs we're working around. We're writing the post-mortems while the context is still fresh. The standard of the work is the same standard it's always been. The ratio is what's changed.
The projects that get to finish
The quieter story is this: projects that before would have been abandoned under the sheer magnitude of labour required, may now survive and even thrive. Not because the vision was wrong or because the maker gave up, but because the work required to move from the product you shipped to the product you wanted to ship was too much to justify against everything else wanting the same hours. A lot of careful indie software has died in that gap.
The gap is narrower now. Not free, not small – there's still a version of this update that needs our hands on every file, still weeks of real work ahead. But without AI coding agents, we would never have been able to get this update where it needed to be. For every "everyone will ship slop" prediction there's a matching one that doesn't get made out loud: a long tail of incomplete projects will soon become everything their makers had ever dreamed.
This update is one of those. We're not writing this to declare the thesis proven – we're not the right sample size for that. Shift It's fate is unwritten. We're writing it because the loud stories about this moment live at the extremes, and the moderate stories, those about careful, skilled, small projects finally getting finished, deserve a voice in this deafening room.
Written while shipping Shift It 3.0. Available April 20, 2026. Discussion welcome: hello@greatworkeveryone.com.