"There's plenty of space for "disposable and single use software." Sure, to a trained software engineer, this might be "bad code" but doing today's task has value, even if the code that performs that task isn't "accretive.""
Grant me the serenity to accept the bad code i shouldn't fix, the courage to change the code I can, and the wisdom to know the difference.
show comments
hooptiwhat
When one cannot determine right or wrong its easy to ride the fence and try to please everyone and rationalize motivations and outcomes.
If vibe code is not production code than you are just "reading" your fathers playboy magazines "for the articles" and creating tech debt you or nobody else can maintain.
If you read between the lines there I think vibe coding is a very "generous gesture" towards the folks "doing this"
Also the article bugs me referring to programming paradigms like visual basic as "equivalent to" vibe coding. That is factually incorrect and should be stricken from the record.
onion2k
There's a 'joke' that goes around occasionally that has some truth to it: "Excel is the world's most popular programming language." Occasionally it's 'Excel macros' or 'VBA' instead of just Excel.[1]
The core truth of it is that a massive amount, possibly most, of the world's software is not a carefully hand-crafted application in that lives in Github written by expert software developers. It's a heap of Excel functions in an XSLX file, with no tests, no source control, no PRs, and no real planning behind it. And it works for that one specific task that the person who built it needed at the time.
AI vibe-coding is probably filling in the middle-ground between that stuff and 'real' code - it does more than just building somehting to complete today's task, and it is accretive in the sense that someone can build on top of it, but it doesn't really look that way to someone used to working on 'proper' software.
Isn’t this a question of how much the “terrorised survivors” spend on tokens to make the output “canonised”?
I think the main argument that the billions spent are not going to be recouped is accurate, but I strongly suspect the cost of producing high quality code will remain the same -just being produced faster (speed, cost, quality - you still only get to pick two)
If one Steve Yegge can burn tokens in “Gas Town” that cost as much as me and ten others then you have saved my salary but spent it on Steve’s token use for roughly the same code quality as me steve and ten others would have produced in three months - just it took steve three days
Same price, faster delivery. Is that a win ? I suspect that facebooks recent announcement (“we cannot think of enough things to do with software so who wants our GPUs?” Might suggest that it’s a business model problem more than a software probkem
show comments
kbos87
Corey laid out this line of thinking on a July 1 episode of the Galaxy Brain podcast. It was a good listen and I generally think he has some interesting points, but I also can't help but think that he does himself a disservice by having such a consistently negative bias toward AI and tech in general.
Most of the time he comes off as an objective thinker, but those are really discounted by moments where his own dogma leads him down a path of making weakly supported points that seem like they come more from a place of anger.
show comments
KolibriFly
AI makes it cheaper to create working fragments. It does not automatically make those fragments part of a maintainable system. In practice it may make the canonization step more important not less
ngriffiths
> By canonization, I mean the process of taking a local, one-off formalization and turning it into library mathematics: general, reusable, coherent, efficient, and compatible with the rest
I think this kind of work is constantly misunderstood and undervalued. I don't really see it as a binary thing, more like a complex skill that most people are terrible at, some are good at, and a handful of giants use to be just ridiculously productive in their field.
It reminds me of hedgehogs and foxes - foxes tend to be bad at making one off progress on their own, but are critical for accretive work.
Also I was reading a textbook the other day and thinking wow, it is absurd how much more valuable these things can be than other resources, and it's exactly because they canonize. It would be a massive loss if they stop getting written.
brigandish
> the capital was raised for AI requires that it produce as many reverse centaurs as possible, because the only way to recoup the farcical sums associated with AI production is to fire millions of workers and replace them
I'm not sure that this is the only way, just the way that selfish, sloppy, or impatient actors within business often work. If more wealth is created, more efficiencies found, more problems fixed, new jobs created, these would also bring the returns desired.
jdw64
Realistically speaking, most programs, no, 90% of them are terrible. Including mine. I write terrible code too, so I'm in no position to judge.
The programs I've taken apart and looked at, even ones running in real industrial settings and large corporate factories, 90% of them are terrible.
Most code is just 'Today's Task.' The people who deny this are probably those working at IT service companies, because they build around maintainability and scalability.
But as you go down into hardware, there's an additional pressure: 'We don't know when this hardware will reach end-of-life.' The centaur metaphor is a simplified dichotomy. 'Centaur is good, reverse-centaur is bad.' But in reality, the vast majority of programs end up as disposable one-off code.
These days, AI related articles just seem to amplify whatever values people want to believe, turning into tribal warfare posts. Realistically speaking, you can write maintainable code with AI too. In fact, the 'Canonization' mentioned in this post is essentially pattern-templating, which AI does better.
The fundamental problem with AI code is that as the input prompt gets deeper, it introduces enterprise level complexity rather than the depth the program actually needs. I don't think that's the core issue here.
The advantage of human written code is that it can be complex when it needs to be and simple when it doesn't, but AI code tries to apply the same level of complexity everywhere. Honestly, the most widely used things in the world are CRUD, and I don't think they require that much complexity.
A good programmer applies the right level of complexity to the situation.
Even human written code leaks abstractions depending on requirements.
Take ORM as an example. Can you see the query count? Is there a rule to prevent N+1? Conditions like these keep getting added. It's just a matter of explicitly adding a layer to handle them.
These days, I see a lot of AI articles filled with nostalgia about how things were different in the past, and it catches me off guard. I'm not sure if that's really how Western programming culture was, or if where I am, the vast majority of work has always been just 'get it done.'
In my opinion, good programming is about choosing the right level of complexity based on the code's expected lifespan, likelihood of change, cost of failure, and transferability. I don't think everything needs to be maintainable.
martinclayton
No mention of chikenized reverse-centaurs in this piece?
I find these neologisms helpful as they quite precisely capture the intended meaning and are easy to remember. Doctorow is an impressive and entertaining communicator, and being an author he needs to market himself and his work, so fair play to him for trying to score a hit follow up to "enshittification".
The earliest use of "centaur" in this sort of context I know of is Kasparov's advanced chess idea from the late 1990s: "a bad (chess) player with a good computer program will always beat a good player with a bad program". How far we travelled since then...
mindslight
This article ended waaaay too abruptly. Reverse Centaurs and Canonization would seem to be orthogonal dynamics, and there was synthesis to be had between them.
Centaur + no Canonization -> personal infrastructure, MVPs. probably ever-accruing tech debt, but the scale is limited so it probably doesn't matter
Centaur + Canonization -> libre software, companies with empowered employees. The Canonization process is going to have some differences now that the goal now includes consumption by an LLM.
Reverse Centaur + no Canonization -> Ever accruing tech debt, eventually leading to a situation where nobody understands how the "magic box" works and everyone is powerless to fix it when it breaks down (tech debt accrues to a level where an LLM can no longer achieve the desired results)
Reverse Centaur + Canonization -> It's certainly possible to have an automated process that distills and compresses knowledge at one stage into a succinct representation that can be used down the line. The open question is whether a company could arrive at this with disempowered reverse centaurs, or whether they're doomed to the previous option
Enumerating those 4 quadrants, I don't think I'm even doing a good job capturing where I had thought the article was going to go. But I'm having a hard time getting it back now.
DonHopkins
There's a third case between "today's task" and "accretive work" that I lived through on The Sims, and it's the one that scares managers the most: a system that IS accretive work, but looks exactly like a pile of disposable hacks for most of its life.
Chris Trottier, one of the designers of The Sims and The Sims Online, called the method "Design by Accretion" and "Tuned Emergence" in an interview with the Armchair Empire that I republished on my old blog.
Her description: The Sims and SimCity were incrementally assembled out of "a mass of separate components", like a planet forming out of a cloud of dust -- they had to reach critical mass before tuning could even begin.
Before it was tuned, The Sims was known inside the company, not very affectionately, as "the toilet game", because there wasn't much else to do. SimCity 2000 wasn't fun until six weeks before it shipped.
The Sims didn't come together until a couple of months before ship. In her words: "Being involved in that tuning process, and seeing the game take shape from what had previously been a mass of separate components, was one of the most powerful experiences of my career."
The hard part wasn't the code -- it was explaining to EA not to panic. By every rule in EA's playbook the toilet game would never work, and it took Will Wright's tremendous stamina to keep it from being cancelled. Here's a screen recording of the actual June 1998 "Sims Steering Committee" build we showed EA to buy another year and a half -- bathtubs placeable on hills, placeholder pie menus, Archie Bunker permanently holding a burning cigar:
The distinction Kontorovich/Elliott-McCrea call "canonization" is what Chris called tuned emergence: the late, undervalued pass that turns an accreted mass into a coherent system.
What made The Sims accretive rather than disposable wasn't visible in the code mid-accretion -- it was that the tuning pass was a committed part of the method, held by people with the authority and stamina to protect it.
Which suggests the real question to ask about any AI-generated pile of working fragments isn't "is this slop?" but "who is signed up to tune it, and will management hold its nerve until they do?"
A toilet game with a Will Wright becomes the best-selling PC game of all time. A toilet game without one stays a toilet.
kazinator
It could be that this person has something profound to say, but ... it's about AI. Sigh and swipe left.
show comments
protocolture
Guys really pushing to remain relevant with the reverse centaurs shtick.
show comments
fedeb95
AI is a tool. Stop treating it as something different.
The value you can extract from a tool depends on your skill in using it, and knowing when not using it.
"There's plenty of space for "disposable and single use software." Sure, to a trained software engineer, this might be "bad code" but doing today's task has value, even if the code that performs that task isn't "accretive.""
Grant me the serenity to accept the bad code i shouldn't fix, the courage to change the code I can, and the wisdom to know the difference.
When one cannot determine right or wrong its easy to ride the fence and try to please everyone and rationalize motivations and outcomes.
If vibe code is not production code than you are just "reading" your fathers playboy magazines "for the articles" and creating tech debt you or nobody else can maintain.
If you read between the lines there I think vibe coding is a very "generous gesture" towards the folks "doing this"
Also the article bugs me referring to programming paradigms like visual basic as "equivalent to" vibe coding. That is factually incorrect and should be stricken from the record.
There's a 'joke' that goes around occasionally that has some truth to it: "Excel is the world's most popular programming language." Occasionally it's 'Excel macros' or 'VBA' instead of just Excel.[1]
The core truth of it is that a massive amount, possibly most, of the world's software is not a carefully hand-crafted application in that lives in Github written by expert software developers. It's a heap of Excel functions in an XSLX file, with no tests, no source control, no PRs, and no real planning behind it. And it works for that one specific task that the person who built it needed at the time.
AI vibe-coding is probably filling in the middle-ground between that stuff and 'real' code - it does more than just building somehting to complete today's task, and it is accretive in the sense that someone can build on top of it, but it doesn't really look that way to someone used to working on 'proper' software.
[1] Further reading if you're interested - https://news.ycombinator.com/item?id=27048672
Isn’t this a question of how much the “terrorised survivors” spend on tokens to make the output “canonised”?
I think the main argument that the billions spent are not going to be recouped is accurate, but I strongly suspect the cost of producing high quality code will remain the same -just being produced faster (speed, cost, quality - you still only get to pick two)
If one Steve Yegge can burn tokens in “Gas Town” that cost as much as me and ten others then you have saved my salary but spent it on Steve’s token use for roughly the same code quality as me steve and ten others would have produced in three months - just it took steve three days
Same price, faster delivery. Is that a win ? I suspect that facebooks recent announcement (“we cannot think of enough things to do with software so who wants our GPUs?” Might suggest that it’s a business model problem more than a software probkem
Corey laid out this line of thinking on a July 1 episode of the Galaxy Brain podcast. It was a good listen and I generally think he has some interesting points, but I also can't help but think that he does himself a disservice by having such a consistently negative bias toward AI and tech in general.
Most of the time he comes off as an objective thinker, but those are really discounted by moments where his own dogma leads him down a path of making weakly supported points that seem like they come more from a place of anger.
AI makes it cheaper to create working fragments. It does not automatically make those fragments part of a maintainable system. In practice it may make the canonization step more important not less
> By canonization, I mean the process of taking a local, one-off formalization and turning it into library mathematics: general, reusable, coherent, efficient, and compatible with the rest
I think this kind of work is constantly misunderstood and undervalued. I don't really see it as a binary thing, more like a complex skill that most people are terrible at, some are good at, and a handful of giants use to be just ridiculously productive in their field.
It reminds me of hedgehogs and foxes - foxes tend to be bad at making one off progress on their own, but are critical for accretive work.
Also I was reading a textbook the other day and thinking wow, it is absurd how much more valuable these things can be than other resources, and it's exactly because they canonize. It would be a massive loss if they stop getting written.
> the capital was raised for AI requires that it produce as many reverse centaurs as possible, because the only way to recoup the farcical sums associated with AI production is to fire millions of workers and replace them
I'm not sure that this is the only way, just the way that selfish, sloppy, or impatient actors within business often work. If more wealth is created, more efficiencies found, more problems fixed, new jobs created, these would also bring the returns desired.
Realistically speaking, most programs, no, 90% of them are terrible. Including mine. I write terrible code too, so I'm in no position to judge.
The programs I've taken apart and looked at, even ones running in real industrial settings and large corporate factories, 90% of them are terrible.
Most code is just 'Today's Task.' The people who deny this are probably those working at IT service companies, because they build around maintainability and scalability.
But as you go down into hardware, there's an additional pressure: 'We don't know when this hardware will reach end-of-life.' The centaur metaphor is a simplified dichotomy. 'Centaur is good, reverse-centaur is bad.' But in reality, the vast majority of programs end up as disposable one-off code.
These days, AI related articles just seem to amplify whatever values people want to believe, turning into tribal warfare posts. Realistically speaking, you can write maintainable code with AI too. In fact, the 'Canonization' mentioned in this post is essentially pattern-templating, which AI does better.
The fundamental problem with AI code is that as the input prompt gets deeper, it introduces enterprise level complexity rather than the depth the program actually needs. I don't think that's the core issue here.
The advantage of human written code is that it can be complex when it needs to be and simple when it doesn't, but AI code tries to apply the same level of complexity everywhere. Honestly, the most widely used things in the world are CRUD, and I don't think they require that much complexity.
A good programmer applies the right level of complexity to the situation.
Even human written code leaks abstractions depending on requirements.
Take ORM as an example. Can you see the query count? Is there a rule to prevent N+1? Conditions like these keep getting added. It's just a matter of explicitly adding a layer to handle them.
These days, I see a lot of AI articles filled with nostalgia about how things were different in the past, and it catches me off guard. I'm not sure if that's really how Western programming culture was, or if where I am, the vast majority of work has always been just 'get it done.'
In my opinion, good programming is about choosing the right level of complexity based on the code's expected lifespan, likelihood of change, cost of failure, and transferability. I don't think everything needs to be maintainable.
No mention of chikenized reverse-centaurs in this piece?
I find these neologisms helpful as they quite precisely capture the intended meaning and are easy to remember. Doctorow is an impressive and entertaining communicator, and being an author he needs to market himself and his work, so fair play to him for trying to score a hit follow up to "enshittification".
The earliest use of "centaur" in this sort of context I know of is Kasparov's advanced chess idea from the late 1990s: "a bad (chess) player with a good computer program will always beat a good player with a bad program". How far we travelled since then...
This article ended waaaay too abruptly. Reverse Centaurs and Canonization would seem to be orthogonal dynamics, and there was synthesis to be had between them.
Centaur + no Canonization -> personal infrastructure, MVPs. probably ever-accruing tech debt, but the scale is limited so it probably doesn't matter
Centaur + Canonization -> libre software, companies with empowered employees. The Canonization process is going to have some differences now that the goal now includes consumption by an LLM.
Reverse Centaur + no Canonization -> Ever accruing tech debt, eventually leading to a situation where nobody understands how the "magic box" works and everyone is powerless to fix it when it breaks down (tech debt accrues to a level where an LLM can no longer achieve the desired results)
Reverse Centaur + Canonization -> It's certainly possible to have an automated process that distills and compresses knowledge at one stage into a succinct representation that can be used down the line. The open question is whether a company could arrive at this with disempowered reverse centaurs, or whether they're doomed to the previous option
Enumerating those 4 quadrants, I don't think I'm even doing a good job capturing where I had thought the article was going to go. But I'm having a hard time getting it back now.
There's a third case between "today's task" and "accretive work" that I lived through on The Sims, and it's the one that scares managers the most: a system that IS accretive work, but looks exactly like a pile of disposable hacks for most of its life.
Chris Trottier, one of the designers of The Sims and The Sims Online, called the method "Design by Accretion" and "Tuned Emergence" in an interview with the Armchair Empire that I republished on my old blog.
Her description: The Sims and SimCity were incrementally assembled out of "a mass of separate components", like a planet forming out of a cloud of dust -- they had to reach critical mass before tuning could even begin.
Before it was tuned, The Sims was known inside the company, not very affectionately, as "the toilet game", because there wasn't much else to do. SimCity 2000 wasn't fun until six weeks before it shipped.
The Sims didn't come together until a couple of months before ship. In her words: "Being involved in that tuning process, and seeing the game take shape from what had previously been a mass of separate components, was one of the most powerful experiences of my career."
https://web.archive.org/web/20110408034710/https://www.donho...
Original interview:
https://web.archive.org/web/20111211182436/http://www.armcha...
The hard part wasn't the code -- it was explaining to EA not to panic. By every rule in EA's playbook the toilet game would never work, and it took Will Wright's tremendous stamina to keep it from being cancelled. Here's a screen recording of the actual June 1998 "Sims Steering Committee" build we showed EA to buy another year and a half -- bathtubs placeable on hills, placeholder pie menus, Archie Bunker permanently holding a burning cigar:
https://www.youtube.com/watch?v=zC52jE60KjY
The distinction Kontorovich/Elliott-McCrea call "canonization" is what Chris called tuned emergence: the late, undervalued pass that turns an accreted mass into a coherent system.
What made The Sims accretive rather than disposable wasn't visible in the code mid-accretion -- it was that the tuning pass was a committed part of the method, held by people with the authority and stamina to protect it.
Which suggests the real question to ask about any AI-generated pile of working fragments isn't "is this slop?" but "who is signed up to tune it, and will management hold its nerve until they do?"
A toilet game with a Will Wright becomes the best-selling PC game of all time. A toilet game without one stays a toilet.
It could be that this person has something profound to say, but ... it's about AI. Sigh and swipe left.
Guys really pushing to remain relevant with the reverse centaurs shtick.
AI is a tool. Stop treating it as something different.
The value you can extract from a tool depends on your skill in using it, and knowing when not using it.