A few seconds ago I was staring a blank page, right before I started to put down the first bullet points that will eventually turn into this thing that you’re reading right now.
I wouldn’t say I hate the blank page, but I also don’t like it. In fact, I try to get rid of it as fast and as soon as I can. Barf out a first sentence, throw in some bullet points, sketch out where this thing should go as fast as possible. Anything, really, to rid it of its blankness.
The endless possibilities promised by the blank page? Thanks but no thanks. Give me the messy page instead.
Same with programming and software engineering: I really, really don’t like greenfield projects.
There are too many options. Too many tools to chose and decisions to be made. All of the code has to be written, including the boilerplate and the boring stuff.
Thanks but no thanks. Give me a messy project instead.
Something that we already know kinda works but that needs to be extended or scaled or refactored or tested or optimized or ported or shipped. That’s the good stuff, that’s where the fun starts.
Know why? Because there’s less uncertainty. With greenfield projects you often don’t know whether the work you do today won’t be deleted in four weeks, because, hey, we went in the wrong direction. Ah, it’s a horrible feeling, not knowing whether the work you do will pay off or not. I’d be terrible in a research lab or academia, where you could bump into a dead end in 6 months and have to throw everything away. Anxiety would kill me.
The projects I enjoy working on the most have clear product-market fit, somewhat clear requirements, and you “just” need to make it work. Give me some invariants or a rough shape of the thing we’re trying to build and I’m good.
Maybe that’s why I like debugging so much. In debugging there are very clear requirements (“fix this bug”) and you usually know that the effort won’t be wasted (it was labelled a “bug”, so presumably someone thinks that it’s worth fixing it).
Maybe that’s also why I don’t care that much whether an AI coding assistant will produce bugs or not. Because I’d rather have a messy bit of code that has a bug in it than an empty file.
It's the same for me as an entrepreneur. Starting a business is crazy hard. It's a lot easier to fix things that already exist.
But someone has to start it!
This post inspired me to reflect on greenfield projects I'd been involved in in the past. And I realised that they generally didn't go very well. That inspired me to write: https://ghiculescu.substack.com/p/the-greenfield-project-trap