It Took Me 4 Months to Build a Todo App With AI
With everyone doing agentic coding now, you see all kinds of fancy setups, with all kinds of complex skills, then loop engineering, Gas Town, "dark software factories", where supposedly humans are not involved at all in any part of the process, they give some input at the beginning and then a couple of hours, out comes later the finished product.
Since I give trainings about AI assisted coding, sometimes people ask me for the advanced stuff that I do, but my setup is actually fairly vanilla. I've tried looking into these fancy things, but they never stuck and I think I finally realized why. It has to do with the kind of software that I work on: where verification of the outcomes is very difficult (either because it's subjective or because it takes a long time).
One thing that I've been working on is a todo app for myself. Easy peasy, right? There must be a million todo apps in the training data. Everyone and their tutorial did a todo app before LLMs, in every possible language. So why did it take me then around 50 commits, spread out over 4 months to do this?
Because this is highly customized to me[1]. It's not just a task list, but a way to manage that task list. It comes out from me reading about all kinds of productivity systems, from books to conversations with my coach. It combines things from GTD with Forster lists with some advice from Derek Sivers. All of this took a lot of trial and error. After each change, I had to try it out for a few days, see what worked and what didn't. I couldn't have used the grill-me skill, because I didn't know upfront what I wanted to do. Some things even had to be done outside the task list, so again, that required even more personalized work. So for highly personalized software, I don't think there's much to gain from complex setups, simply because you'll want to be very tightly in the loop, since validating the solution is subjective.
At the other end of things, I'm working with Softfight, a startup that helps software sales teams adapt in the new world of agentic coding, by helping sales teams move from time-and-material to better pricing models. Here, the problem is the opposite: the feedback loops are incredibly long. The agents we build can make all kinds of suggestions on how to package and sell something, but software sales cycles are long, it takes months for a deal to close. And that's the only thing that matters: did the suggestions make it easier to close a deal and/or make it more profitable.
The specs for features are really good: the product team writes very detailed PRDs; the founder spends days going back and forth with Claude and ChatGPT until the requirements are clear. Human involvement is still strongly required here, because writing these specs requires lots of very specific knowledge that agents have not demonstrated so far (partly because these kinds of contracts and negotiations are highly confidential, so they are underrepresented in the training data). But considering how large the problem space is (software sales negotiation), things are still underspecified. And because of the long feedback time, letting agents learn from their mistakes is not feasible. We do have offline evals, which agents can use to catch mistakes, but they capture only a part of what we are looking for. And because I have to intervene so much, I prefer to keep things simple (on the agentic coding side), so that it's easier for me to understand how things are working.
Of course, this is not the case for all software. Wherever you have easier ways to do verification and validation, more complex agentic setups become worth it. For example, if you're specializing in building software for a narrow niche, over and over again, you will be able to encode a lot of the domain specific knowledge, including what clients expect from the software. With this, the agents will be able to produce better work independently, because they can evaluate it independently.
So when people in my trainings ask for the advanced stuff, they’re often surprised that I mostly emphasize good software engineering practices, such as clear specs, modularity, testing and reviewing.
And once we move to agentic negotiation loops, I'll build the dark software factory myself for Softfight.
- Yes, I'm fully aware I've moved the procrastination loop from finding a better todo app, to writing my own better todo app. ↩︎