Stop trying to build a software factory. You are one!
I think people get too caught up in the idea of a “software factory”: give an AI a task, leave it running, and come back to finished software. I understand the appeal. But getting software produced and getting the thing you actually wanted are two different problems.
To me, some of the best parts of this idea are the feedback loops around it: automated builds, tests, and continuous integration and delivery (CI/CD). It is nice to see people taking those seriously. LLMs can also be useful at spotting and fixing their own mistakes. But someone still has to decide what to check, what matters, and whether the result solves the right problem.
The cone of possibility
The way I think about prompting an LLM is that you create a cone of possibility. The prompt and its context give it a starting point and an initial direction. From there, there are lots of plausible next steps, and each step opens up more choices.
As it keeps iterating, those choices can carry it further from what you had in mind. Each individual change might look reasonable while the overall result heads somewhere you never wanted to go. More iterations alone do not tell it which direction is better.
A check needs something to check against
If there is a clear target it can measure, an automated loop has something useful to work with. A failing test gives it a specific problem to fix. But that test only tells it about the behaviour somebody chose to test.
Goals like “make this fun”, “make this feel right”, or “build something people will find useful” are harder to pin down. For a game, every test could pass and the game could still be boring. You need a way to judge the experience, then feed that judgement back into the work.
That is what steering means to me. It might be a better test, a clearer constraint, a playtest, or a person saying, “This works, but it is not what I meant.” Useful feedback gives the next round of work a better direction.
Make your tools fit how you work
I think there is more value in extending your own tools around your own needs. You know where your workflow gets awkward, what slows you down, and how you want to plan the work. Those are concrete problems you can improve.
Making my own fork of T3 Code for personal use has been a massive improvement to my workflow. It has helped me get more done and made planning easier because I can adapt the tool to how I actually want to work.
That is the kind of automation I find valuable: tools that help me turn an idea into something I can build, check, and improve. My own workflow gives me a clear way to judge whether a change is helping. Can I plan more easily? Can I get more done? Does it fit the way I think?
Be opinionated about your tools
I think being opinionated about what you use and how you work matters even more in the age of agentic coding and “software factories”. Your choice of tools, your constraints, and your way of working all help give the agent a direction.
My take is that letting an LLM roll the dice on your tech stack usually ends badly. With how quickly the tooling moves, its idea of the current best approach can feel six months behind at best. A confident recommendation is not enough; I want those choices checked against current documentation and what I actually need.
That does not mean chasing every new framework. It means having reasons for your choices and making those reasons part of the context. If I want a particular stack, a simple deployment, or something I can comfortably maintain myself, I should say so. Those opinions are part of the steering.
You are part of the factory
My frustration with the software factory idea is the assumption that the system will steer itself to victory. What is victory? Who defined it? How will the system know when it gets there?
The person who understands the problem, sets the goal, and judges the result is doing part of the work. Even a highly automated process depends on those decisions.
Build the automation. Give it useful checks. Let it take work off your hands. Just recognise that your judgement and direction are part of what makes the whole thing work. You are already part of the software factory.
And honestly, it is more fun to customise than to conform. There is a little bit of self-expression in making a tool work your way, even if nobody else would set it up quite like that. If we can make software more personal, why settle for everybody having the same defaults? Make something that feels like yours. Enjoy the tinkering.
Current bop while I tinker: Overkill (Dance Remix) — Lamb, Badger on Spotify.