Post

At the risk of starting the flame war to end all flame wars... Modern LLMs (GPT-5.1, Claude 4.5, Gemini 3) produce excellent code and can be a significant productivity boost to software engineers who take the time to learn how to effectively apply them - especially if used with coding agent tools

Same here - my hard rule is that if you can't explain how the code works that code shouldn't end up in a commit to anything other than a toy project

10 reposts164 likes

That looks like a very intermediary state of the world. At some point I expect we will just commit the prompt + hash of model, whose output has been proven to work by downstream validation, and only look at the "intermediary assembly" in unusual cases.

Like it's not common to commit the assembly files produced by the C compiler. We commit the .c files – which AI-native engineers endearingly call "Kernighan prompts" – and then look at the assembly only in rare special cases.

Ok I mean it's pretty easy to say this, but rarely can someone actually explain every layer of dependencies underneath the code they CAN explain. Comprehension is always shared across people for complex work.

True, but they're mostly not responsible for those layers. It's basically the same as before LLMs, right? My PR must be human-understood at the usual levels... but it may be mostly LLM written. ...it is quite the quirk, how modern sw dev is a very high % of code review.

I mean same as before, when? It's not the same understanding as it was in the 70s-80s, from which era I was just reading papers claiming that the only people who should be allowed to create code should pass timed math challenges

That's true, I may be able to reason my way through Python libraries I'm using but once you get down to the cPython interpreter I'm mostly out of my comfort zone, and once you get to the operating system calls or hardware I'm completely lost

It is difficult to even comprehend all the layers underneath, when doing web frontend work. A ginormous pyramid of abstraction layers. It is incredible that it works at all. A testament to the power of cooperating humans, built within a few decades.

What level of comprehension/and fixing we want to expect from people, in order for them to do certain kinds of work, is such an interesting and important question! And has been a bit ignored in software so far in a way that isn't helping us now, imho.

I suspect that we really do need to emphasize a much more social learning/collaborative knowledge approach to this versus individual understanding, that's the piece that software culture doesn't like to admit though!

For better (or probably) worse, I think it’s the code you put your name against. I.e. you can use any tool you like, but you need to sign your name to the output. I’d expect someone to understand what dependencies they used and how they used them, as well as the first-party code they write.

As someone in a leadership role in our software engineering organization, this is actually the sticking point for me: there are often perceived or actual (in our case mostly just perceived) incentives to SHIP FAST in ways that very directly undermine the commitment to understanding generated code.

In my experience, how well the tools work is also (a) very context-dependent, not only in the sense of “how much of this is in the distribution?” but also “what kind of work am I doing?” and (b) depends on how comfortable you are with the totally unsurprising tendency to regress toward the mean.

There are ways to deal with both of those, but they aren’t always worth the cost, and *one* part of the push-back is because there are folks saying, “This is a useful thing that you should have in your toolbelt”… and then there are many, *many* folks saying “all software MUST be written by AI!”

The latter will leave a very bad taste in any thoughtful software developer’s mouth, and in particular when the push does *not* recognize where these tools have cliffs and sharp edges or even just take (often *much*) more time than just doing it yourself manually would. I find these all the time!

Good point - yeah, I do disagree slightly there I'm OK with code you couldn't have written without AI assistance provided you completely understand it and can explain how it DOES work

Ope, let’s keep going! What does “completely understand” mean vs “understand”? And I imagine you mean “explain how it will actually work in this given context” when you say “explain how it DOES work”?

(Side note: AuDHD here - when you add words to a statement already made that I thought I understood, I will always need to ask for additional clarification because now I’m questioning my initial understanding)

“Code you couldn’t have written without assistance” is - in my opinion - essentially equivalent to “code you don’t understand”

I thought that at first but I've come to a different conclusion now A huge factor in building something is balancing the time taken to build it with the value of the project - I've rejected so many potential projects in the past because I can't justify the time needed to figure out different parts

And, they’re different in ways that really impact who’s “allowed” to submit code in different situations. I can explain a lot of code that I can’t write, and I can learn what written code is doing far easier than I can learn to write it.

Which is so scary for new grads / college students in CS You need to know what’s going on to be able to use it. We can’t offload thinking, but we can automate a lot of the tedious parts now!