I think this post (and the OSS projects that he mentions that ban AI) are very reactionary.
But the idea that AI has or will surpass humans any time soon in either capabilities or efficiency is simply not true
AI is already better than most developers. I'm not sure what alternative reality people are remembering, but human coders for the most part have been really awful at writing code. I think the average PR from an LLM is head and shoulders above the average PR from a human. Does it write code in the preferred style and architecture of the project maintainer 100% of the time? No, and neither did humans.
I think there are many legitimate criticisms of AI, but "they suck at coding" isn't one of them. The progress we've seen in the last couple of years alone suggest that very soon they will be better at coding than any person. As a coder of over 30 years, I've embraced this fact and come to terms with it. Leverage your knowledge of systems, software engineering and product design and you can be living in a golden era for software development. That's how it feels to me at least.
The problem is that skill at coding is not exactly the same thing as skill at developing and maintaining software, and AI can help there as well, but a swarm of cowboy coder agents will get you to a legacy codebase very very quickly.
And even if the AI is better than most humans, the speed means that you get more defects and issues! If a human developer has a change failure rate of say 10%, (1 in 10 changes causes a defect or issue), and AI is twice as good and only introduces bugs 5% of the time, but submits 10x as many changes, then you go from 1 bug per unit of time to 5 bugs per unit of time, so your velocity is up 10x but your defect rate is up 5x...
That excellent post talks about searching for bugs in extant code, but a similar maxim applies to new code:
With AI, you can choose your position on the speed/quality trade-off curve. You can vibe code crap, you can guide/review more closely and get a higher quality product more slowly.
And that choice can extend past non-AI coding: with AI you can produce software even more slowly but even higher quality than you did in the past before AI.
One straightforward way to achieve this is to code manually and use AI to more thoroughly review & audit your code. But that's not the only way to get there -- you can use AI for coding assistance and still produce higher quality code slower. It's tricky, though.
with AI you can produce software even more slowly but even higher quality than you did in the past before AI
I hadn't thought about it before, but this is precisely what I did in one project.
After replacing a webhook that I've been monkey-patching for ten straight bugs, I had enough of an idea of how the software worked and what edge cases to look out for to reproduce the software without the bugs and with a well-modelled, well-tested foundational client library.
After testing the foundational client library with all the methods I know (unit tests, property tests, mock tests, integration tests, and live tests), I had a race condition in my live tests that accidentally turned into a fuzz test of the live service the client connects to, and discovered a bug in the server.
The actual webhook has been brewing for a long time. For weeks I've just casually added more tests. Nothing interesting happened. I've went live with it now, and nothing comes up. So on to make a load test with mock endpoints.
I love how AI makes advanced, extensive testing techniques (and TDD) take little enough time to justify using them all.
As someone who taught CS for some years, it is very satisfying to finally come to a point where "we're not testing" cannot be justified from an economic perspective, it is purely a cultural (or lack of cultural) decision, and a lack of knowledge of any testing techniques beyond unit testing.
I agree, and I think what you’re describing is only scratching the surface of what’s possible today.
It’s even more powerful with large data and knowledge sources connected.
Takes a lot of work to set up effectively, but when connected to Slack _properly_ (not their MCP; but API which is more powerful), a database of your repo’s PRs/comments, data warehouses including analytics/telemetry and logs; and in a strong harness (including using multiple models simultaneously; like the OMP advisor pattern), what AI can achieve combined your domain expertise and human intelligence is just mind bogglingly crazy.
The larger your codebase / product / volume is; the more powerful it gets. AI has found many needles in haystacks that’s just impossible for a single person or team in large companies; because nobody has all the context.
I’ve embraced it too now. Initially I felt a bit disempowered and just somewhat uncomfortable.
Over time, I realised that I’m still doing serious and interesting engineering: just at a higher level of abstraction.
And for the craft and passion of software engineering, I have a couple of pet projects where I use ‘limited AI’. Good to still keep your wits sharp.
I generally agree with this. One of the strangest things about LLM driven engineering is holding two seemingly contradictory positions in your head: they’re both better than the median developer, and they’re also much worse at producing artifacts that are comprehensible to humans.
I often find myself throwing away large amounts of LLM driven code not because it’s bad, but because it doesn’t fit within my attention span. The code itself looks very reasonable, passes tests, benchmarks well, etc. But I throw it away because the models don’t yet “explain” their decisions in ways that elicit psychological safety. Humans are still very good at that, even when their engineering is worse.
My experience is the same. That is why I write technical specifications for the LLM to follow, and treat the actual code they generate in the same way I treat the assembly produced by a compiler: a black box I rarely peek into.
If the code passes the (extensive) tests, I don't need to read or understand it. That said, I retired before LLMs became popular, so my experience is limited to vibe coding at home.
We (at least some of us) sort of figured out 30ish years ago that waterfall-style software development doesn’t quite work in practice. I don’t think LLMs have substantially changed that.
Did I mention waterfall at all? You are fighting a strawman.
You can write specs for a MVP, write a test plan, yadda yadda, then progressively iterate. I have no idea where you got the idea that I was proposing a waterfall lifecycle.
much worse at producing artifacts that are comprehensible to humans
This has always been the case. Just try making sense of the output of any assembler/compiler/transpiler. Why do we think differently about generated source code?
I mean more in the psychological safety sense. An assembler's process is deterministic, not statistical, and knowing that affects how we interact with it.
It's the same with any tool. You can buy the most expensive drill but if its used by an inexperienced worker, the only result will be more wrong drilled holes.
Charitably, we could say that “agentic” software engineering is less than 4 years old. I say charitably because I think even that’s an extraordinary stretch. But even at 4 years, I don’t think anybody can fairly claim to be experienced in it in a way that’s going to be stable and fungible for, say, the next 30 years.
(My experience has been the polar opposite: the people I know who are the most “AI pilled” are also the ones who have the shortest technical horizons in terms of how transferable they expect their LLM skills to be.)
True, but thats explains why the gap is so huge at the moment. There are some experienced (in coding) devs with a talent in using agent, inexperienced devs with talent, experienced devs without talent and inexperienced devs without talent. And I don't mean talent in a judgmental sense; it's perfectly normal for people to have different aptitudes, and we simply weren't prepared for using computers in a natural language.
The fact that there are currently hardly any established methods, and that the combination of all the LLMs, harnesses, MCP servers, etc., results in extremely different experiences, and that nobody really has a comprehensive overview, only exacerbates the situation.
I agree. It remains to be seen whether the field will even stabilize, beyond some local maxima of everything being a chat interface. I for one hope it does.
In my feeling, it is decades old. With LLMs and agentic coding, it's deja vu of some 200x working with with inexperienced offshore teams. The same misunderstanding problems, the same corners cut, the same attempts to present bullshit as a "production ready", and the same "Yes, Sir, you are absolutely right" answer to criticue.
I've been really struggling to get AI to write good quality c# code, or to be precise, what I see as good quality.
I'm in two minds on if it matters or not.
On one hand I think, I want to be proud of it, I want to be able to explain it, if it breaks I want to be able to figure out why.
On the other hand, AI can do all of that with badly written code, so who cares.
Edit: however, it still feels like an amazing power tool, but it has taken me months to figure out how to use it.
I have the opposite experience of everyone else I follow online, I find it terrible at green field and great at brownfield. Green field it makes horrible choices as it has nothing to follow.
I'm in no way a very good programmer, or very smart, but the code I saw most of my co-workers writing was about the same quality as AI, not very good.
It hasn’t climbed the complexity bar for hard software engineering yet, fable still can’t build a fully functioning C Compiler, I think in the long horizon eval it can sometimes build a C pre-processor (not deterministic) given all the tests and a spec. And given the tests is a big deal, humans actually write the tests on their own while developing btw. Anthropics marketing stunt C compiler doesn’t count (that one didn’t even type check).
Now the thing to claim “a better coder than humans”, is you can’t just stop at making a production grade C Compiler, you then also need to make the leap to make something new that is a definite improvement over everything that existed before it. This is an also a question of taste not just implementation chops. Think Zigs cross platform C Compiler, Rusts memory safety opinionated compiler and more.
The day AI can do both, implement a complex production grade project, and make a conceptual actual improvement upon SOTA is the day I’ll agree AI has become better than humans at coding. I’ve underestimated AI in the past, maybe with 10T of compute they’ll get there, maybe they won’t , we’ll know in the coming years
Leverage your knowledge of systems, software engineering and product design and you can be living in a golden era for software development.
For a short while, maybe. If an LLM can keep track of a 500KSLoC codebase, it's gonna easily replace systems knowledge workers, software designers and product designers.
None of systems knowledge, software engineering and product design is a moat against this.
How do you know your average AI PR is better than a human developer? Most of the teams that I see touting the benefits almost never review the code that's output, or they offload that process to another agent.
Like I see people say this, and yet the teams that are AI maxing produce worse code than ever. Software has rapidly gotten more unstable and unsustainable over the past three or so years than I've experienced in the past 20.
My experience, no its not. It just doesn't fight back as much when you tell it that its wrong.
My sister team is vibecoding the shit out of a couple of product PoCs. There is only one person on that team that appears to understand how to vibe code properly. the rest are just producing shite and breaking the service everytime they deploy. However, the code it creates is fine enough, just the architecture is bad, or the prompter is bad.
_however_ the problem with the post is that its using tangential metrics to prove the point. The opensource maintainer bit doesn't always mean that the output is bad, it means that either:
1) the maintainers hate AI
2) the shit they are getting is huge and takes too long to review
3) The shite they are getting solves a specific problem for one user at the expense of everyone else
4) the PR is nonsense.
only one of those options area signal for code quality from LLMs. the rest are about the skill of the creator, or attitude/time budget of the maintainer.
Make your own benchmark on your own work, keep them to yourself. Try one typical not completely unambiguous spec document like you're likely to have seen. See if the AI asks the right questions, and how it navigates its unknown unknowns.
I have yet to see such research. I've seen research that says the exact opposite. The devs I see making such pronouncements usually aren't exactly the top devs on their teams. Seems like the result of the double burden to me.
... you can be living in a golden era for software development.
Let's assume for a moment that you're correct. That AI is already better than most developers, for whatever definition of "better" you like, and they will very soon be better than any person. (I think this is a total fantasy and you've failed to recognise the limitations as the article points out, but I digress.)
In that case the end goal of these companies is to replace all software engineers. Do you not see that? They've not been hiding this fact. It's a good thing for you and I that these models don't work, because if they did the "golden age" is not coming for us, it's coming for people who own compute capacity and the rest of us will become labourers.
Additionally, if this is true companies that have replaced all their software engineers will discover that they themself can be completely replaced by AI by their former customers.
I think LLMs can be used productively, but I also think the average PR from an LLM is crap. They can be decent (or even excellent) at writing code, but they're mediocre at deciding what code to write, and terrible at deciding what not to write.
Humans have value judgement. AI doesn't. AI doesn't "know" what good code even is. For something to be good, there has to be a purpose. Good is the measure of how well that purpose is fulfilled.
Humans can write better or worse code, but AI is not even in the category of things that can write better or worse code. A human needs to be there to tell bad code from good code.
* * *
Also, in my personal experience with AI code: I'm yet to see good code (but I haven't worked with people who are good at directing AI towards their goals). All code I've seen generated by AI so far ranged from "absolute garbage" to "passable". Which, most likely, reflects the ability of those who managed the tool: before they did that, their code was also atrocious. It was easier to deal with, because the velocity at which these people produced garbage didn't cause a deluge in the same way they do it with AI help.
* * *
A note on what I believe to be good code and its distribution. First of all, I agree with you on that the vast majority of code produced to date is very bad. There are many reasons for it: until few years ago the demand for programmers was smaller than supply and the industry was on course to create conditions for very bad programmers to succeed anyhow (help the losers lose less, tee-hee!). It still didn't recover from all the "paradigms" it created to support bad programmers.
Unlike in well-established fields, where you'd expect normal distribution in terms of how skillful the workers are (i.e. you'd expect very few to be very bad and very few to be very good, but most would be good enough), the distribution in programming is exponential: overwhelming majority are at the proverbial bottom of the barrel, only a few are OK, and you probably will never meet a truly good one. This defies intuition and leads us to assume that the barely palatable is the best it can possibly be. And that's, roughly, where AI is at at the moment.
I kind of agree that the post is a bit too far away from the trenches to be able to claim it will reveal "software engineering reality".
From where I snipe, I see a big divide between those...
1) that try to surrender to AI, aiming to fully replace value-added intellectual effort and often also to augment enterprise value-mask slop busywork...
...they fail, and succeed, and the collective suffers.
2) those that ride AI to get more challenged, more feedback if any kind, to tread further but with attention to the right details
The best point Otto makes is how much time LLMs take off coding a fundamental starting point, but finding and removing edge cases still 100% requires humans to fix and find them.
I think one problem with this whole conversation is that “coding” is not one thing, and skill at it can mean many different things depending on the context.
In my experience, the top models still generate tons of useless slop on any non-trivial implementation request that I do not essentially solve in the prompt beforehand (change this class, this function, etc). They also still make trivial errors that no human would make (although the inverse is also true). In this sense, they do suck at coding.
On the other hand, even weaker models can understand large sections of code, come up with correct implementations of changes, and catch non-trivial edge cases in many situations that is obviously better than most devs. In this sense, they are better than almost all human devs, especially when considering the time and cost.
Perhaps in the long term AI will help us distinguish better between different types of coding tasks and programming disciplines
Comments
I think this post (and the OSS projects that he mentions that ban AI) are very reactionary.
AI is already better than most developers. I'm not sure what alternative reality people are remembering, but human coders for the most part have been really awful at writing code. I think the average PR from an LLM is head and shoulders above the average PR from a human. Does it write code in the preferred style and architecture of the project maintainer 100% of the time? No, and neither did humans.
I think there are many legitimate criticisms of AI, but "they suck at coding" isn't one of them. The progress we've seen in the last couple of years alone suggest that very soon they will be better at coding than any person. As a coder of over 30 years, I've embraced this fact and come to terms with it. Leverage your knowledge of systems, software engineering and product design and you can be living in a golden era for software development. That's how it feels to me at least.
The problem is that skill at coding is not exactly the same thing as skill at developing and maintaining software, and AI can help there as well, but a swarm of cowboy coder agents will get you to a legacy codebase very very quickly.
And even if the AI is better than most humans, the speed means that you get more defects and issues! If a human developer has a change failure rate of say 10%, (1 in 10 changes causes a defect or issue), and AI is twice as good and only introduces bugs 5% of the time, but submits 10x as many changes, then you go from 1 bug per unit of time to 5 bugs per unit of time, so your velocity is up 10x but your defect rate is up 5x...
You forget to account for the rate of error correction.
You can just choose how many bugs you want now:
https://nolanlawson.com/2026/08/16/you-can-just-choose-how-m...
That excellent post talks about searching for bugs in extant code, but a similar maxim applies to new code:
With AI, you can choose your position on the speed/quality trade-off curve. You can vibe code crap, you can guide/review more closely and get a higher quality product more slowly.
And that choice can extend past non-AI coding: with AI you can produce software even more slowly but even higher quality than you did in the past before AI.
One straightforward way to achieve this is to code manually and use AI to more thoroughly review & audit your code. But that's not the only way to get there -- you can use AI for coding assistance and still produce higher quality code slower. It's tricky, though.
I hadn't thought about it before, but this is precisely what I did in one project.
After replacing a webhook that I've been monkey-patching for ten straight bugs, I had enough of an idea of how the software worked and what edge cases to look out for to reproduce the software without the bugs and with a well-modelled, well-tested foundational client library.
After testing the foundational client library with all the methods I know (unit tests, property tests, mock tests, integration tests, and live tests), I had a race condition in my live tests that accidentally turned into a fuzz test of the live service the client connects to, and discovered a bug in the server.
The actual webhook has been brewing for a long time. For weeks I've just casually added more tests. Nothing interesting happened. I've went live with it now, and nothing comes up. So on to make a load test with mock endpoints.
I love how AI makes advanced, extensive testing techniques (and TDD) take little enough time to justify using them all.
As someone who taught CS for some years, it is very satisfying to finally come to a point where "we're not testing" cannot be justified from an economic perspective, it is purely a cultural (or lack of cultural) decision, and a lack of knowledge of any testing techniques beyond unit testing.
How many new bugs get introduced in those fixes?
As many as you allow.
You mean “a codebase of high technical debt” I think
I agree, and I think what you’re describing is only scratching the surface of what’s possible today.
It’s even more powerful with large data and knowledge sources connected.
Takes a lot of work to set up effectively, but when connected to Slack _properly_ (not their MCP; but API which is more powerful), a database of your repo’s PRs/comments, data warehouses including analytics/telemetry and logs; and in a strong harness (including using multiple models simultaneously; like the OMP advisor pattern), what AI can achieve combined your domain expertise and human intelligence is just mind bogglingly crazy.
The larger your codebase / product / volume is; the more powerful it gets. AI has found many needles in haystacks that’s just impossible for a single person or team in large companies; because nobody has all the context.
I’ve embraced it too now. Initially I felt a bit disempowered and just somewhat uncomfortable.
Over time, I realised that I’m still doing serious and interesting engineering: just at a higher level of abstraction.
And for the craft and passion of software engineering, I have a couple of pet projects where I use ‘limited AI’. Good to still keep your wits sharp.
I generally agree with this. One of the strangest things about LLM driven engineering is holding two seemingly contradictory positions in your head: they’re both better than the median developer, and they’re also much worse at producing artifacts that are comprehensible to humans.
I often find myself throwing away large amounts of LLM driven code not because it’s bad, but because it doesn’t fit within my attention span. The code itself looks very reasonable, passes tests, benchmarks well, etc. But I throw it away because the models don’t yet “explain” their decisions in ways that elicit psychological safety. Humans are still very good at that, even when their engineering is worse.
My experience is the same. That is why I write technical specifications for the LLM to follow, and treat the actual code they generate in the same way I treat the assembly produced by a compiler: a black box I rarely peek into.
If the code passes the (extensive) tests, I don't need to read or understand it. That said, I retired before LLMs became popular, so my experience is limited to vibe coding at home.
We (at least some of us) sort of figured out 30ish years ago that waterfall-style software development doesn’t quite work in practice. I don’t think LLMs have substantially changed that.
Did I mention waterfall at all? You are fighting a strawman.
You can write specs for a MVP, write a test plan, yadda yadda, then progressively iterate. I have no idea where you got the idea that I was proposing a waterfall lifecycle.
This has always been the case. Just try making sense of the output of any assembler/compiler/transpiler. Why do we think differently about generated source code?
The two metaphors for vibe coding I keep seeing are:
* it's like a compiler => you can trust it
* it's a revolution like the spinning jenny => what came before is fast becoming an obsolete hobby
It's not just that these metaphors are bad, they are absurd if you think about then for just a few seconds.
I mean more in the psychological safety sense. An assembler's process is deterministic, not statistical, and knowing that affects how we interact with it.
It's the same with any tool. You can buy the most expensive drill but if its used by an inexperienced worker, the only result will be more wrong drilled holes.
Charitably, we could say that “agentic” software engineering is less than 4 years old. I say charitably because I think even that’s an extraordinary stretch. But even at 4 years, I don’t think anybody can fairly claim to be experienced in it in a way that’s going to be stable and fungible for, say, the next 30 years.
(My experience has been the polar opposite: the people I know who are the most “AI pilled” are also the ones who have the shortest technical horizons in terms of how transferable they expect their LLM skills to be.)
True, but thats explains why the gap is so huge at the moment. There are some experienced (in coding) devs with a talent in using agent, inexperienced devs with talent, experienced devs without talent and inexperienced devs without talent. And I don't mean talent in a judgmental sense; it's perfectly normal for people to have different aptitudes, and we simply weren't prepared for using computers in a natural language.
The fact that there are currently hardly any established methods, and that the combination of all the LLMs, harnesses, MCP servers, etc., results in extremely different experiences, and that nobody really has a comprehensive overview, only exacerbates the situation.
I agree. It remains to be seen whether the field will even stabilize, beyond some local maxima of everything being a chat interface. I for one hope it does.
In my feeling, it is decades old. With LLMs and agentic coding, it's deja vu of some 200x working with with inexperienced offshore teams. The same misunderstanding problems, the same corners cut, the same attempts to present bullshit as a "production ready", and the same "Yes, Sir, you are absolutely right" answer to criticue.
Yes, we know that Astral has been bought by OpenAI.
Don't use Astral, they want to make you unemployed!
They are only good in the context of the engineer guiding them.
I really can’t imagine what would happen if I didn’t manually intervene sometimes and just kept prompting it for the new behavior I wanted.
The engineer guiding them only scales to a certain amount of output, complexity and churn.
I've been really struggling to get AI to write good quality c# code, or to be precise, what I see as good quality. I'm in two minds on if it matters or not.
On one hand I think, I want to be proud of it, I want to be able to explain it, if it breaks I want to be able to figure out why.
On the other hand, AI can do all of that with badly written code, so who cares.
Edit: however, it still feels like an amazing power tool, but it has taken me months to figure out how to use it.
I have the opposite experience of everyone else I follow online, I find it terrible at green field and great at brownfield. Green field it makes horrible choices as it has nothing to follow.
I'm in no way a very good programmer, or very smart, but the code I saw most of my co-workers writing was about the same quality as AI, not very good.
It hasn’t climbed the complexity bar for hard software engineering yet, fable still can’t build a fully functioning C Compiler, I think in the long horizon eval it can sometimes build a C pre-processor (not deterministic) given all the tests and a spec. And given the tests is a big deal, humans actually write the tests on their own while developing btw. Anthropics marketing stunt C compiler doesn’t count (that one didn’t even type check).
Now the thing to claim “a better coder than humans”, is you can’t just stop at making a production grade C Compiler, you then also need to make the leap to make something new that is a definite improvement over everything that existed before it. This is an also a question of taste not just implementation chops. Think Zigs cross platform C Compiler, Rusts memory safety opinionated compiler and more.
The day AI can do both, implement a complex production grade project, and make a conceptual actual improvement upon SOTA is the day I’ll agree AI has become better than humans at coding. I’ve underestimated AI in the past, maybe with 10T of compute they’ll get there, maybe they won’t , we’ll know in the coming years
For a short while, maybe. If an LLM can keep track of a 500KSLoC codebase, it's gonna easily replace systems knowledge workers, software designers and product designers.
None of systems knowledge, software engineering and product design is a moat against this.
How do you know your average AI PR is better than a human developer? Most of the teams that I see touting the benefits almost never review the code that's output, or they offload that process to another agent.
Like I see people say this, and yet the teams that are AI maxing produce worse code than ever. Software has rapidly gotten more unstable and unsustainable over the past three or so years than I've experienced in the past 20.
By what measure? How do you even compare developer skill?
My experience, no its not. It just doesn't fight back as much when you tell it that its wrong.
My sister team is vibecoding the shit out of a couple of product PoCs. There is only one person on that team that appears to understand how to vibe code properly. the rest are just producing shite and breaking the service everytime they deploy. However, the code it creates is fine enough, just the architecture is bad, or the prompter is bad.
_however_ the problem with the post is that its using tangential metrics to prove the point. The opensource maintainer bit doesn't always mean that the output is bad, it means that either:
1) the maintainers hate AI
2) the shit they are getting is huge and takes too long to review
3) The shite they are getting solves a specific problem for one user at the expense of everyone else
4) the PR is nonsense.
only one of those options area signal for code quality from LLMs. the rest are about the skill of the creator, or attitude/time budget of the maintainer.
Yeah, it's a bit absurd. There's so many empirically measured benchmarks where LLMs clearly exceed human capabilities and efficiencies!
Make your own benchmark on your own work, keep them to yourself. Try one typical not completely unambiguous spec document like you're likely to have seen. See if the AI asks the right questions, and how it navigates its unknown unknowns.
I have yet to see such research. I've seen research that says the exact opposite. The devs I see making such pronouncements usually aren't exactly the top devs on their teams. Seems like the result of the double burden to me.
it's too bad none of them actually correlate with making good software.
Let's assume for a moment that you're correct. That AI is already better than most developers, for whatever definition of "better" you like, and they will very soon be better than any person. (I think this is a total fantasy and you've failed to recognise the limitations as the article points out, but I digress.)
In that case the end goal of these companies is to replace all software engineers. Do you not see that? They've not been hiding this fact. It's a good thing for you and I that these models don't work, because if they did the "golden age" is not coming for us, it's coming for people who own compute capacity and the rest of us will become labourers.
Fixed weights don't preclude in-context learning and out-of-the-loop weight updates. And that's the only principled limitation mentioned in the post.
Additionally, if this is true companies that have replaced all their software engineers will discover that they themself can be completely replaced by AI by their former customers.
I think LLMs can be used productively, but I also think the average PR from an LLM is crap. They can be decent (or even excellent) at writing code, but they're mediocre at deciding what code to write, and terrible at deciding what not to write.
They are better when copying and pasting expert code, even when they don't understand it.
This is a very misguided idea.
Humans have value judgement. AI doesn't. AI doesn't "know" what good code even is. For something to be good, there has to be a purpose. Good is the measure of how well that purpose is fulfilled.
Humans can write better or worse code, but AI is not even in the category of things that can write better or worse code. A human needs to be there to tell bad code from good code.
* * *
Also, in my personal experience with AI code: I'm yet to see good code (but I haven't worked with people who are good at directing AI towards their goals). All code I've seen generated by AI so far ranged from "absolute garbage" to "passable". Which, most likely, reflects the ability of those who managed the tool: before they did that, their code was also atrocious. It was easier to deal with, because the velocity at which these people produced garbage didn't cause a deluge in the same way they do it with AI help.
* * *
A note on what I believe to be good code and its distribution. First of all, I agree with you on that the vast majority of code produced to date is very bad. There are many reasons for it: until few years ago the demand for programmers was smaller than supply and the industry was on course to create conditions for very bad programmers to succeed anyhow (help the losers lose less, tee-hee!). It still didn't recover from all the "paradigms" it created to support bad programmers.
Unlike in well-established fields, where you'd expect normal distribution in terms of how skillful the workers are (i.e. you'd expect very few to be very bad and very few to be very good, but most would be good enough), the distribution in programming is exponential: overwhelming majority are at the proverbial bottom of the barrel, only a few are OK, and you probably will never meet a truly good one. This defies intuition and leads us to assume that the barely palatable is the best it can possibly be. And that's, roughly, where AI is at at the moment.
The golden era that hasn't produced anything of note yet. More pro-AI advertisements from someone who needs AI crutches.
A tool can only be as good as the person who use it.
I kind of agree that the post is a bit too far away from the trenches to be able to claim it will reveal "software engineering reality".
From where I snipe, I see a big divide between those...
1) that try to surrender to AI, aiming to fully replace value-added intellectual effort and often also to augment enterprise value-mask slop busywork...
...they fail, and succeed, and the collective suffers.
2) those that ride AI to get more challenged, more feedback if any kind, to tread further but with attention to the right details
...they succeed
The best point Otto makes is how much time LLMs take off coding a fundamental starting point, but finding and removing edge cases still 100% requires humans to fix and find them.
that’s the thing, you can have the LLM study and make a skill to only code in the maintainers preferred style or readability.
Based on what I’ve read on HN, no you can’t because they inevitably revert to their bad RL’d habits as the context window grows.
I think one problem with this whole conversation is that “coding” is not one thing, and skill at it can mean many different things depending on the context.
In my experience, the top models still generate tons of useless slop on any non-trivial implementation request that I do not essentially solve in the prompt beforehand (change this class, this function, etc). They also still make trivial errors that no human would make (although the inverse is also true). In this sense, they do suck at coding.
On the other hand, even weaker models can understand large sections of code, come up with correct implementations of changes, and catch non-trivial edge cases in many situations that is obviously better than most devs. In this sense, they are better than almost all human devs, especially when considering the time and cost.
Perhaps in the long term AI will help us distinguish better between different types of coding tasks and programming disciplines