You're giving the game away when you talk about the joy LLMs are robbing from you. I think we all intuit why people don't like the idea of big parts of their jobs being automated away! But that's not an argument on the merits. Our entire field is premised on automating people's jobs away, so it's always a little rich to hear programmers kvetching about it being done to them.
I naively bought into the idea of a future where the computers do the stuff we’re bad at and we get to focus on the cool human stuff we enjoy. If these LLMs were truly incredible at doing my job I’d pack it up and find something else to do, but for now I’m wholly unimpressed, despite what management seems to see in it.
Well, I've spent my entire career writing software, starting in C in the 1990s, and what I'm seeing on my dev laptop is basically science fiction as far as I'm concerned.
Hey both things can be true. It’s a long ways from the AI renaissances of the past. There’s areas LLMs make a lot of sense. I just don’t find them to be great pair programming partners yet.
I think people are kind of kidding themselves here. For Go and Python, two extraordinarily common languages in production software, it would be weird for me at this point not to start with LLM output. Actually building an entire application, soup-to-nuts, vibe-code style? No, I wouldn't do that. But having the LLM writing as much as 80% of the code, under close supervision, with a careful series of prompts (like, "ok now add otel spans to all the functions that take unpredictable amounts of time")? Sure.
Don't get me started on testcase generation.
I'm glad that works for you. Ultimately I think different people will prefer different ways of working. Often when I'm starting a new project I have lots of boilerplate from previous ones I can bootstrap off of. If it's a new tool I'm unfamiliar with I prefer to stumble through it, otherwise I never fully get my head around it. This tends to not look like insane levels of productivity, but I've always found in the long run time spent scratching my head or writing awkward code over and over again (Rust did this to me a lot in the early days) ends up paying off huge dividends in the long run, especially when it's code I'm on the hook for.
What I've found frustrating about the narrative around these tools; I've watched them from afar with intrigue but ultimately found that method of working just isn't for me. Over the years I've trialed more tools than I can remember and adopted the ones I found useful, while casting aside ones that aren't a great fit. Sometimes I find myself wandering back to them once they're fully baked. Maybe that will be the case here, but is it not valid to say "eh...this isn't it for me"? Am I kidding myself?
In my last microservice I took over tests were written by juniors and med. devs using cursor and it was a big blob of generated crap that pass the test, pass the coverage % and are absolute useless garbage
If you're not a good developer, LLMs aren't going to make you one, at least not yet.
If you merge a ball of generated crap into `main`, I don't so much have to wonder if you would have done a better job by hand.
I love the way you described it :)
We get to do cool stuff still, by instructing the LLM how to build such cool stuff.