AI generated code is like IKEA furniture.

IKEA furniture embodies many elements of good cabinet making but skips many nonessential elements. And does this more consistently than cabinet makers who can be bored, incompetent, depressed, burnt out, resentful, tired, having a bad day.

In the future AI code inevitably will embody most good software engineering practices. And will do this more consistently than software engineers who can be bored, incompetent, depressed, burnt out, resentful, tired, having a bad day.

Just look at the messages on HN or around you at your colleagues to see how mediocre the average software engineer is..

Today's IKEA is good enough for most people.

Tomorrow's AI coding will be good enough for most corporations.

Good enough to vastly reduce the need for fine craftsmen and women / software engineers.

Good enough to deskill those who call themselves cabinet makers / senior software engineers. These days the cabinet makers I personally know just do contract kitchens for project builders.

But IKEA is and AI will be, bad enough that at the high end with special requirements / taste / money / an inflated sense of self worth, some furniture makers still exist and thrive.

Perhaps 1% percent of current software engineers of today will be needed in the future when AI code inevitably has the ability to follow good software engineering practice.......

And as usual it will mainly be the mediocrities that remain ( so there is hope for you too ), with occasional islands of excellence.

The problem with this analogy (actually one of many) is that most people can make do with a cabinet that is literally identical to everyone else's. IKEA is great for that.

If you want software that is literally identical to what someone else is using then you don't need AI. You need a license to that software! That is just the traditional software model.

AI gives software that is bespoke with hundreds of decisions made, hidden from you, in the background. If it's a throwaway script, that's fine (and I don't mean to undersell this - this is a huge application). If you want a larger program that is going to form part of your business process then it will need at least some level of supervision from an actual expert.

> it will need at least some level of supervision from an actual expert.

An expert? An expert or two? Maybe a few experts? Sure, even that is a lot less than how many we use today. Therein lies the issue.

What a sad analogy. IKEA furniture is mostly cheap particle board crap and it's a shame that we as a humanity have cheapened our lives to the point where IKEA is some kind of standard (and the only thing) most people can afford. Back in the day furniture was artisanal and hand made yet people were able to afford and have it. Isn't that in fact weird, supposedly our societies are richer than ever before but most people can't afford artisanal goods that our forefathers would be able to afford even though they were supposedly so much poorer.

(Hint, distribution of wealth matters a lot)

It's not weird, it's because we define wealth in terms of buying IKEA furniture that we are considered much wealthier than the past. If the affordability of handmade goods or services were the measure of wealth, then perhaps we are much poorer today. I can see how each viewpoint exhibits some contradicting insights.

There's probably also a factor of less artisanal goods being made but yes, I agree

However, Ikea furniture does not tend to collapse a critical moment 90 days after it's been put together because it was unforeseen that the cup you sat on the table would be green, which it wasn't designed to account for.

Software isn't furniture, in other words.

Having not been formally verified, almost all software today feels cheap. Maybe an AI can change that at some point.

By Dijkstra's standards, we've been vibe coding for an entire century!

I had similar thoughts recently, that now that machines are good at writing proofs, this could help with their reliability in software development.

Then I had a funny incident where an LLM implemented a feature completely backwards. Plenty of tests were supplied which demonstrated that the completely broken feature was correctly implemented.

I realized that formal verification would not have helped here, if I had left the task to the machine. It would simply have written a mathematical proof of the correctness of the incorrect feature!

Apparently this is an issue for humans as well, called the "spec gap" or something like that.

It is the reason why user stories were established, so that the person interpreting the spec knows why. Generally speaking this reduces the likelihood of this gap occuring with humans significantly. At least when they're not incompetent.

Yay let’s lock ourselves into the formal verification toolsets, so that we can never use new language features again.

When you board a plane, don't you love thinking about how the controllers can make use of the hottest new language features? Perhaps JSON in the stdlib?

Yes. Correct software is more important than developer convenience.

OR new languages and frameworks ever again, since they'll slow down code generation due to lack of training, and from LLM generation standpoint this is a terrible thing to trade off.

...ah the classic middle manager analogy of code is X, where X is nothing like code at all but is being used to drive a point that is just standing on poor grounds.

keep it, we have been through "is like building a house", "like following a recipe", "like a living organism", "like $SOMETHING_WITH_COMPONENTS", etc...

we can handle your IKEA furniture, thanks you for your contribution

Ikea cabinet is pleasant to look at, and its design makes sense.

But how many times can you take a piece of Ikea furniture apart and put it back together again? I have friends who have moved apartments with the same Billy bookshelf 2-3 times and if they tried it one more time the thing would collapse.

Not to belabor the metaphor as heavily as my friend's Billy, but there's a maintenance corellary to be made here. Most Ikea furniture can be put together once, in one place, and left there for a long time. But once you want to change it in place it may just collapse.