This assumes that the models of the future won't find it easier to just throw the code away and rebuild it
This also assumes that the same application build by humans wouldn't become a "spaghetti mess".
I have noticed this with co-workers also, when you have the ability to read/write/understand things very quickly, you tend to spend much less time on making things tidy, clear and maintainable.
Compare that to clean, organized code where patterns and extensibility are established. I’ve seen product manager surprised at how fast a new feature was added when everything is laid out well.
You might say that carefully ensuring good design enables speed in adding new features. But good design isn't a one-and-done thing. It needs tending because requirements change and some of those require more design changes, which again need care. Nobody has the patience to even allow sufficient time for the first good cut, forget about allowing that repeatedly. Attention is all you need and attention is what nobody has time for.
Also, growing ball of mud used to be another name for employment. How else would you get more headcount for that migration project for a rewrite and grow your empire?
With agents, even that is gone. Agents write, agents fix, agents can rewrite too. Mud is fine, it's not like we are cleaning it ourselves. Or at least that is the theory.
You use another AI to document the spaghetti.
You use the third AI to make a spicy meatball from the spec.
sometimes starting from scratch just faster and/or easier.
What about all the undocumented "adjustments" ("bug fixes" in a professional context) that were made to make it actually useful?
The only thing that will work is to have non-llm generated tests. But writing those require thinking, which is what we are trying to avoid. Also capturing every little behavior in tests is exhausting. If you don't like programming, you would also hate writing tests. So chances are that a major part of the program behavior does not show up in tests.
So throw it away and rewrite from scratch is a just wishful thinking that the LLM marketing wants you to commit to...
However provided you stick to the discipline, it’s robust e2e TDD’d versioned worked through CI and in production
You get out of all these tools what you put in
Just consider this for a minute. If re-writes were so trivial, we would be re-writing software all of the time, even before LLMs. It is the fear of losing all the legacy additions that stop us from doing it.
You just have to have discipline and be prepared to to do the plumbing correctly so that you think ahead of the future dependencies etc… its just doing real engineering
Looks like a change of goalposts.
nah, it reflects on how applications built by humans usually do become spaghetti messes with all the resulting brittleness and unintended negative side effects of changes that result
but it probably doesn't matter for a little toy piano app
Sometimes it seems like they're moving very slowly. That makes sense: It's easy to get used to how they work today and it is also easy to forget how much worse they were last year.
When we look back and realize that just 4 years ago these tools didn't really exist at all, it becomes clear that the rate of progress is rather amazing.
In 4 years, we've gone from "hah, good luck with that crap!" to "little kids writing music-learning games on their own in a few minutes"
That's pretty friggin' awesome, and it's not finished yet. :)
Since this is Claude, the models of the future might be more expensive, or more locked down, or might decide your 8yo is actually trying to build a cleverly disguised bomb so her request gets silently downgraded to a dumber model, etc.
I remember when they would always hallucinate APIs that wasn't there or make up fields that didn't exist.. those problems are virtually solved now.
So with that in mind, why wouldn't AI be able to write better code?
The code would have to be maintainable by AI itself (operating based on the assumption that the future will be Agentic Engineering)
I love how people have said this for over a year now, and no matter how often I try it, it's still just as broken.
Try it with any task that isn't in the training data. Say, a custom protocol where you need to cross-reference multiple implementations and the specs to really get it, and with no answers on stackoverflow or medium.
At first it's hilarious, but after a while it just gets exhausting. For all these real-world tasks you need to put so much effort in that it's much easier to just write the code yourself, even with the latest (current Gemini) and greatest (Opus 4.6/4.7) models.
If the parts for your project don't already exist, AI can't help you either. And if they do exist, why spend money on AI if the GitHub search is free and you can just fork and modify what you need?
> might decide your 8yo is actually trying to build a cleverly disguised bomb so her request gets silently downgraded to a dumber model
My contention isn't that models haven't improved or won't keep improving – my position is that the business goals of our American AI firms (Anthropic especially) aren't necessarily aligned with continuing to make those improved models available to the public forever. We need only look at the Mythos/Fable split for evidence of this happening already.
https://www.reddit.com/r/ClaudeAI/comments/1vgpyni/my_opus_5...
https://www.reddit.com/r/ClaudeAI/comments/1vgq0jm/opus_5_af...
https://www.reddit.com/r/claude/comments/1vfvdgz/anthropic_l...
Is that the most charitable interpretation of my comment you could come up with? I don't think you're engaging in good faith.
> the businesses aren't incentivized to make better models
Anthropic and OpenAI are incentivized to pursue regulatory capture. It doesn't take a galaxy-sized brain like mine to understand this.
If I had to guess, the benches aren't measuring what people care about. But you'll have to ask the people in those Reddit threads why their vibes don't match up with your benches, I don't use Claude and don't give a shit.
> Since this is Claude, the models of the future might be more expensive, or more locked down, or might decide your 8yo is actually trying to build a cleverly disguised bomb so her request gets silently downgraded to a dumber model, etc.
I have no idea what you're trying to add.
Same when one points out that yes, quality of life is in general much better now than 20 years ago even.
Someone like you will just pull out some stat "well THIS is worse!! I cant buy a house at 22!! The west is doomed and I LOVE China!"
https://en.wikipedia.org/wiki/Debate
> In a debate, arguments are put forward for opposing viewpoints. Historically, debates have occurred in public meetings, academic institutions, debate halls, coffeehouses, competitions, and legislative assemblies. Debates have also been conducted for educational and recreational purposes, usually associated with educational establishments and debating societies. These debates emphasize logical consistency, factual accuracy, and emotional appeal to an audience. [...] The term "debate" may also apply to a more continuous, inclusive, and less formalized process through which issues are explored and resolved across a range of agencies and among the general public.
tl;dr deal with it
ed sp
Not you, of course. You write exceptional code with zero errors that never needs rework. I'm talking about the rest of us.
i write pretty good code when i need or want to, yeah. sadly LLM code gives me a headache so the current psychosis standard has made work a bit painful.
the codebases are becoming LLM-first human-second so even if i wanted to be natty it's not really viable. might as well spend my employer's money.
Today I don't always need to understand the code. When I do, I can ask the LLM to explain the code or to specify the algorithm in pseudocode or even re-write the code until I can understand it.
I think, as an industry, we haven't yet fully grasped the impact of agentic coding. We don't yet know what software engineering is going to be like in 5 to 10 years.
then ... in some places (maybe cars that people care about working on) it became cleaner again. In the other places, they added a second hood to hide the mess.
There is some clean code out there, like maybe the seL4 kernel:
https://en.wikipedia.org/wiki/SeL4
"with an explicit goal of enabling comprehensive formal verification..." (and lots more stuff)
maybe we can still have niches like this.
The purpose of a car itself didn't change. But the massive inflated demand, as our city planners decided every adult must be put in a rolling metal cage to participate in society, changed the environment it was originally designed for.
Now it's a matter of geopolitical stability, or even basic human habitability of these spaces, that a car converts as much of that chemical energy into movement, and releases as little toxic byproducts in the process. Whereas before, that cost, at scale, was small enough to neglect.
Just like a modern CPU evolved into an incomprehensible mess, even though the basic consumer needs hadn't changed much, because the politics of computing forced them to run expanding institutional cruft at reasonable speeds, on battery-powered always-on addiction machines.
Those cleaner looking engine bays are usually worse to work on. Not better.
When you open up the hood and immediately see lines everywhere, that also means they’re within reach. This is great.
The engine bays that look nice and clean for the showroom still have those same lines. They’re just buried in there. If you need to work on them you’re going to be reaching underneath things, climbing under the car, or even removing other parts to access something simple.
Also, it’s not all about emissions. A lot of those lines are for modern comforts like cruise control and improvements like features that make cold starts easier or make the engine behave better at extreme temperatures. Some of those have been superseded by electronically controlled versions which is why some of those lines are disappearing on modern cars, but the overall complexity has increased further.
another analogy would be opening some computers to add memory/ssd/hd, as judged by ifixit
I remember installing seventy-two individual DIP chips onto an Everex 2-megabyte 8-bit ISA EMS expansion card and downloading software to make it work in MS-DOS from Intel's dial-up BBS. I remember chains of MFM drives being made to work by keying obscure commands into debug to run programs that were built into the hard drive controller card.
Oh, so many fun evenings working out which devices could share IRQs and configuring software to work around the corner cases that developed. Serial mice, PS/2 mice, plus bus mice of several different varieties. XT, AT, and PS/2 keyboards. The veritable plethora of mutually-incompatible CD-ROM interfaces.
A clock card: A whole friggin' card with a clock chip and a battery, just to keep track of wall time. (And the software to make it work.)
I even remember SCSI, which was famously renowned for the number of goat sacrifices that were required to to make it work. (Except, I remember SCSI very fondly. CD burner, reader, 7-disc Nakamichi changer, flatbed scanner, DDS tape, and a few IBM Ultrastar 9ES hard drives all sharing the same bus? Sure, why not? It worked. But it took some care to get there.)
It's simple today. Want more storage? SATA is easy (and everyone will make fun of you, but USB 3 works great for a hard drive in a desktop rig). m.2 is compact, and only has a couple of variations. Video cards -- even multiples of them -- just slot right into motherboards and they don't even have jumbers to configure. Sound cards are forgotten. RAM comes in standard forms that only change once every decade or so. Input devices, basic NICs, and video capture stuff can just plug in with USB. The USB ports themselves can be multiplied using hubs.
It's pretty good today, isn't it? Am I missing something?
lol. the original statement was that AI written code is a mess "under the hood"
And I tried to say - cars were "simple/fixable under the hood", then emissions made them a mess then some (specific) cars became simple/fixable again.
but my analogy wasn't clear, so I tried saying that computers went the same way.
started out with simple s-100 bus/pc with slots... but at some point they became no-user-servicable-parts-inside (per ifixit) but some have gotten servicable again.
in summary - I think AI can make a mess, but maybe AI can make clean/maintainable code someday.
maybe there will need to be an AIfixit.com to rate models.
Yeah, I wasn't quite picking up what you were putting down. :) And I'd apologize for writing about old computers, except I enjoy writing about old computers. I never had much experience with S-100, though; my days of hands-in computing started with PCs in the 80s and I missed the earlier eras.
Anyway, I think you're right: The bot will continue to improve. It will get simpler to operate, and it will also generate cleaner code.
But with a twist: That generated code won't become cleaner because it makes it cheaper/easier for humans to understand and work on. Instead, it will instead get cleaner because it makes it cheaper/easier for bots to understand and work on.
(Why use many token when few do trick?)
I am, here, not counting time for separate instances of Claude (so 10 instances running for a year is not 10 years). So, I think the 8yo is still older.
Full disclosure, I am not a neurologist or computer scientist (although I find both interesting). I would consider fair criticism of this fair and would even like to see what those in those fields would have to say.
A child doesn't get centuries of curated human knowledge and public works as its starting point
That is how compiler-generated assembly looks to humans, as well. Human-produced is typically much more readable. Yet, here we are. Most programmers only know the very basics of assembly programming, but the world keeps spinning just fine.
2. Compilers and building tool chains change all the time. CI and automated testing catch any regressions. Tye same can be done with LLMs.
3. LLM code generation, with some work, can be made deterministic, if that mattered to somebody.
Tests are not a one time thing. They need to be maintained, and if you use same LLM to do it, it will happily delete failing ones, so better use a seaparate agent, and be prepared for the bill.
What is that supposed to mean? Yes, LLMs are often considered to be non-deterministic because, in practice, they rely on unstable floating point rounding. Likewise, compilers are often considered non-deterministic because, in practice, they often rely on arbitrary thread execution order. Of course, those are both just implementation details. You can, albeit at the cost of things like performance, remove those hidden inputs. Computers are fundamentally deterministic! Anything that runs on computers must also be deterministic.
If you were to run a compiler or LLM on a Turing machine, they would both be 100% perfectly deterministic. We only see them as being non-deterministic because, in the real world, we run them on hardware that plays tricks with computation by introducing inputs via hidden side channels. But, again, those are implementation details. Compilers and LLMs are not defined by any particular implementation.
Even the implicit claim that they could deterministically produce "the" correct answer with 100% certainty doesn't withstand any scrutiny.
Nevermind problems posed in English prose, complicated or philosophical questions. Is the correct answer to 2+2 four, or is it 1+3? When you you have 2 apples and give me one apple, how many apples do you have now; one, or half as many as before? What is the correct answer? Without a spaghetti of arbitrary axioms in the system prompt? Even if you come up with something clever about apples, it even fails at "when is your birthday". When it is today, should I say "today" or say the date? Not even God could decide that.
Arguably, the specifications for a compiler is also such a mess of axioms, and you can split hairs and say "it's all random anyway", but you'll still use a seatbelt instead of silly string, so what gives?
For compilers, give or take, there is a correct output for a given input (under which I'll include config, options, the targeted architecture, whatever). With LLM there is no such thing even if you do infinite mental backflips, and there won't be, because there can't be. Even if you could perfect the compilers that are needed to make the software that trains and drives LLM deterministic, you cannot make LLM fully deterministic without making them not an LLM.
If you can find a way to encode what a compiler would do to programs into the weights of a model so that produces the output of a compiler that would be a cool and completely useless feat, because it would probably be bigger, slower and impossible to reason about. But it would still be cool and I would still try it out.
As for your understanding of how LLMs and compilers work, it does not match my experience working on either one, back in the day. I humbly suggest reading some of the literature on reproducible builds, as well as the conditions under which LLM inference is/isn't deterministic, as it is more complex than most people understand.
No they don't. They refer to the weights used for weighted sums. The weights don't have to even between 0 and 1.
And also the 1980s electronic toy, “Simon”
I honestly think people on here are very much overstating 'spaghetti code' when AI does it... first, it works correct? The reason I say that if the AI can continue to upgrade code that might not always look 'the prettiest' (to you..) because it doesn't care about what some of us consider to look like clean code. If it can continue to manage, document, and upgrade the code successfully.. does you calling it spaghetti code actually matter? Maybe you have a hard time reading it but the AI certainly doesn't.. I think that's worth consideration.
Every one of us has our own conventions and ideas of what 'clean' code looks like sometimes. And honestly 95% of the time we only thing it's clean if we wrote it ourselves.
So it's on par with humans, then.
On the other hand an engineer might take a couple hours and build this in a clean way with the right prompting
These “got ‘em” ai criticism comments are getting so old
The fact that this is possible and works at all is mind blowing - even more mind blowing is that my 8 yo is growing up in a world where they can talk to a machine to produce a custom application in seconds and they don’t realise how mind blowing it is!
In terms of the code, it would take even less time than that to tidy it up. For this application you wouldn’t bother. That’s almost a form of “premature optimisation” unless you’re actually planning on doing more work on it.
My hunch is that what the world is about to see a lot of is much bigger bits of work, or changes to other bigger existing systems done by people without the skills to know how to contain the complexity. That’s going to come with a burden.
There's no shortage of examples of unmaintainable spaghetti AI code, Claude Code is just one of many. If you have examples of good codebases maintained by "prompting experts", I'd love to see them.
Recent notable examples would be the Linux kernel or cURL.
I can absolutely prompt AI to following established patterns and produce nice, clean output in a legacy codebase. I also have a completely separate set of skill files that I’ve been building organically by allowing the agent to do make most decisions about conventions. The latter produces code that would be a nightmare to modify by hand, but I’m still able to iterate on it many times faster than I could in the codebase where code quality is a requirement.
“Code quality” is mostly “human readability”, and I’m simply not sure that’s a valuable attribute anymore.
That's an extremely narrow view of programming, and shows a complete lack of experience.
A novice writing code by hand could also write spaghetti code
If you've worked in enterprise software, you might have seen that even competent professionals can write spaghetti code
At this point AI really is just garbage in garbage out
Wild to me that we see this even in what is a relatively more “sophisticated” forum
What does this even mean? Does the software run? Did you plan on extending it? Maybe turning it into a "platform"?
Why doesn't HackerNews understand software exists to solve a problem? No one cares if code is pretty if it does the job. You can talk about "potential issues" until you're blue in the face. It doesn't matter.
Besides, this all revolves around the, I believe false, premise that humans write code better than AI.