I had a realization earlier on today while trying to get started on a new project I’ve been thinking about for some time. I considered the design of the application, the dependencies, how does an activity flow from the UI to the backend and how do we complete longer running tasks. What trade offs am I making and what will I be comfortable with and what will I struggle with in a month, a year, or five. It felt good and then I wrote my detailed prompt to codex
and watched it chug along. And then I got depressed. If you have read my previous post on coding agents you know how I feel about them, but things have evolved since I wrote that, both in terms of technology and use cases. I now think “Do I want to work on someone else’s codebase even when it’s my personal project? Do I want to spend time understanding implementation details even in my free time?”. If you use LLMs you probably answered yes to both of those questions or you don’t care. If you are reticent about using them, it might be because you don’t want to do that or you care about understanding from first principles, so any speed up provided by LLMs is lost trying to understand its output.
Let’s set the scene so we know you’re interested in this and can close the tab swiftly and move back to your scrolling through depressing news articles and rage-porn. I will assume you care about the code you write or even the code that gets generated by an LLM. I will assume you plan a new feature or that you thoughtfully work through the design considerations of the product. I will also assume that you considered multi-tenancy, styling, maintainability, deployment, and observability for this new pet project. You “know” what you are about to build quite intimately. If you don’t, you might not think or notice what I’m about to describe, so it’s important we are on the same page.
You’re now ready to prompt the LLM and you have carefully drafted your prompt(s), maybe even with the help of another LLM. You write it. You hit ‘Enter’ and off your helper goes.
What’s next? Running the project? Making a few tweaks? Checking the output? Prompting again?
Any of those things might come with unknowns despite your careful planning. Maybe the LLM decided to put all the components you carefully specified into one folder or one project or they are split across multiple files unnecessarily so. Maybe that component which you’ve carefully explained looks or feels a bit more bloated. All of these feelings, this slight unease, frustration at what you now need to do, which is understand the output, the subtle decisions, are similar to those you might have (I KNOW I have) when working on a brownfield project. It’s not yours, it’s not really new, it’s a mishmash you half understand and you half struggle to match to your mental model.
By the way, do you notice how when talking about something that is being sold to us as exact science, feelings tend to be the main ways of describing it? How we “vibe” code, how we develop “taste”, how we “intuit” when it’s drifting and “guide” the LLM back on track? It reminds me strongly of how Einstein “felt” he had developed a “taste” for relativity. He then “felt” his way through the physics of it and it culminated with a “tasteful” formula that we regurgitate with pride in our deep understanding of physics. But I digress.
No. I don’t. Not for the purposes of this illustration. You’ll have to feel your way through this article, let the vibes set in.
Some, who are more machine than the machines they use, will stick to hard definitions and will yell loud and hard that any new project is by definition greenfield. You can close the article, subtlety is not your forte and if you insist on behaving like a machine, you should go ahead and read machine output.
The joy of a greenfield project or the joy of a personal project is, for me at least, grounded in understanding. Deep understanding. You start from scratch. You build out components, you make decisions, you read technical documentation and then you build the thing you wanted the way you wanted it. “Hey, this crashes when I give an input over 5!”, “Yes, I know, it’s on purpose, when I did X then I wanted to force a hard limit, hence the number.”. You understand why you chose a Channel
over any other data structure. You understand why you chose to create an Interface
for component X and why you decided to use `record`
for that model. That understanding, that depth can of course occur in a brownfield project, but only after the long and arduous task of reading, digging, debugging, testing, and asking questions. I don’t want to do that in my free time (limited as it may be). I sure as hell don’t want to try to understand the output of something that doesn’t understand its output, my prompt, my questions, or what it has built and how that manifests in the world.
What this means really is that each time your prompt vomits out 1000 or 10000 or 100000 lines of code, you are deep in another brownfield project. Sometimes you will get better output that closer resembles your image of what you wanted. Sometimes it will differ more. But at almost no point will it be what you imagined. “But that’s your mistake, you’re prompting an entire project, you should only prompt for clearly defined components, you should only prompt it to make you model or POCOs! I only prompt it to do X and Y so you’re feelings about this are incorrect because you’re using the tool wrong!”. And people wonder why I don’t have comments on the page. Of course you can use it like that, what I’m wondering is why you’re reading this. Go away! As for those who don’t ask or state the obvious like unenlightened dimwits, of course you can prompt for somewhat deterministic things. Of course you can do that. And I do. But that represents a tiny percentage of work. What I’m talking about is the sheer sense of speed or dread at not keeping up, which then pushes you to prompt for a fullstack app in your free time.
That push for speed comes from how our field seems to be “evolving”. Technology isn’t about making our lives better or easier. It’s not here to enable humans and remove the tedium of existence and elevate humans to a higher level. It’s been coerced into the same sort of thing everything else has been. A maximization of productivity and financial value at all costs. So your free time isn’t free or yours anymore. Your personal projects cannot be games or play. “But mine are, I don’t know why you don’t just do stuff on your own, I do!”. I’m glad you do. But surprisingly enough, your experience isn’t everyone’s experience. I’m talking about my experience and the audience is supposed to be people who have had similar experiences. Those out there who make a decent income, but the uncertainty of a future they have no control over pushes them to seek out any other ways to add a bit of certainty.
You’re a developer, engineer of sorts, a tinkerer. You’re in a precarious position so your personal project better yield some solid RoI. You might want to build a static site generator, but who are you selling it to? What is your addressable market? You don’t care? Well, good luck when we won’t need your type anymore. Good luck when the planet starts slowly burning - oh wait, it already is? Well, get on it quickly, you might launch the next SaaS trillion dollar idea and insulate yourself on your private island with the rest of the trillionaires.
In this drive, the personal project is dying. You can’t just idly play around with something. You cannot spend a weekend configuring a home server, reading documentation for that obscure Linux distro to deploy. You cannot solve algorithm problems for fun. You must be productive. You must produce. You’re not producing fast enough. So in that chase you think, “How do I retain some semblance of control? How can I feel that I still have input in the output? Oh, I know, I’ll think about the problem and have the machine guess it for me.” And then you’re sitting in front of it and it’s like work. Because it is work.
(HackerNews commenter) “[…] if you really want to help the planet, have you considered suicide?”. No, thank you kind stranger, I’m happy we’re living times when we can really connect to one another and share a moment to try to understand each other. So if suicide is off the table, for now at least, what’s next?
I am living within a razor’s edge of a perceived financial precariousness, so that makes me somewhat insulated compared to the majority of the planet, so I’m allowed to fantasize about projects that are truly personal, where there is no rush. But not always. Sometimes the dread overcomes me and then I prompt my way into one of these projects. Then I end up with an unintelligible mess I have to understand in my free time. Then I end up with this feeling of tedium, of working on someone else’s code.
So I’m lucky, I can say “not for me” or “I’ll take my time with this one, really dig deep and gain some enjoyment out of it while ensuring my skills don’t rot away”. But sometimes it takes over and I succumb, I prompt and I regret. I wish I didn’t, I wish people had choices or even a choice, but most don’t. So what’s next…
I’d like to tell you about this new app I made! It’s an app where you can put all your fears and worries about the future and it will tell you it will all be OK! I call it “LieToYour53lf” and it’s coming out Q4 2026, enter your credit card below and based on the number of sign-ups I’ll get a Claude Max subscription to vibe it out during a weekend I’m out partying and then subjecting the world to another mediocre mass produced and useless SaaS.
This presentation is the result of fleshy material bashing on a keyboard based on the output of its own wetware. No LLM was used to edit it, correct it, analyze it, prompt it, hack it, clean it, optimize it or arrange it.