I am the engineer, I am the one that has the vision, and I am the one that needs to understand the thing down to the minute details.
That said, most systems I still write are not so complex I need a very smart assistant, so I rarely use LLMs at all; it is still a valuable skill being able to research and think hard for yourself. An LLM cannot think out of the box (of its training dataset), and there lie the discoveries and paradigm shifts that move tech forward.
LLMs will hallucinate edge cases or worry about things that just aren’t possible within context. It results in more tests than are needed. I personally dont think LLMs are any good at all.
A month ago I was still talking like you. Then I said to an insisting colleague, “watch I’ll try to vibe code a game engine and show you the crap it produces.”
Granted, this wasn’t my first game engine so I knew exactly what to say, but I was completely floored. GPT Sol & Astra at max effort was flawless at nearly everything I threw at it. I’m talking fully ground up, zero dependencies, just the primitives and SIMD. Fully featured engine done in two weeks with deferred 2-stage render pipeline, shadow maps, mesh shaders, MSAA, post processing, collision, physics, the works.
I even intentionally skipped a few important optimizations and went back to refactor them in, thinking there’s no way it can do a wholesale rewrite of major systems, but it did it. I got dry mouth from all the jaw dropping. My prompts got shorter and more ambiguous, so it would ask me clarify. I audited every line of code, and it was good (after adding two skills.md). I gave up. I’m a reluctant believer.
It sucks, but sadly these things are really good. Don’t be last contrarian, there’s nothing to gain. You’re just lying to yourself
But I dropped it and will probably never touch it again.
Are you going to do anything with that game engine? I'm sure there are thousands of others who've written a game engine with the tools. What are they being used for? Is it just to "try it out"? I see people producing a LOT of software. Sure, the code is good, but was it needed? Are people using it?
And maybe that's OK - we're just writing software for ourselves now, because it's so cheap + fast to produce.
You can ask the same about hand written code too.
I have no pressure to use this stuff. I’m still getting paid. I’m still shipping higher quality software at the same speed as the rest of my peers. Why should I sacrifice quality for speed?
In fact, sometimes LLMs write too many tests to the point it significantly slows down your test runs and CI!
In the domains I get paid to work in, it simply doesn't matter.
The code was shit to begin with, because of hundreds of hacks due to underspecified or simply wrong requirements, bad code practices, architecture that couldn't keep up but was never fixed due to stubbornness...
Not saying we humans would do better or worse in general, just sharing my experiences.
I have customers where AI usage is absolutely forbidden and others where it's totally fine and colleagues vibecoded mess will come to bite them/us all.
> The code was shit to begin with, because of hundreds of hacks due to underspecified or simply wrong requirements, bad code practices, architecture that couldn't keep up but was never fixed due to stubbornness...
My coworkers have always produced slop, even before LLMs. Unfortunately, as the lead on the project it’s still my responsibility to get that up to a certain quality level or at least make it isolated and malleable enough that it can be changed and we all won’t have a bad time doing it.
I guess what I’m saying is.. I get it. It’s hard to work with other people who are just pushing whatever is given by the LLM. But I still have fun doing it myself.
No one who cares wants to. That's not the question.
The question is whether you can continue to get paid doing so.
I've always enjoyed it. In my spare time.
Also I wouldn't go as far to say that I myself produce higher quality code than my peers.
I am between a 5/10 and a 7/10 programmer at best.
I bring other valuable skills though.