back
177 comments
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.

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)

LLM output is not like IKEA furniture at all. IKEA furniture is mass produced, identical, furniture that can be combined to accomplish some lifestyle goal.

LLM code is different every time. Sometimes it’s better than the finest custom carpentry. Frequently it is much worse than IKEA quality (in the metaphor).

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.

Just what I need, to wake up and read yet another baseless "soon your job will be replaced" prediction.
Is IKEA just a drop in for "cheap crap" in this analogy? It's not like all furniture is IKEA by a long shot.

I guess in terms of "IKEA is fine if you're 23" AI is fine for throwaway work.

...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

Having not been formally verified, almost all software today feels cheap. Maybe an AI can change that at some point.
I don't think most projects can be as simple as your metaphor points to. Nobody wants to stop at 6 parts single use programs.
Would say it really depends on the area, also don't have historical data how many 'cabinet makers' there were before around here, but I have been trying to get a custom built cabinet (really simple, just exact measurements to make most of a small space) for a year or so. All of the cabinet makers are so overbooked, that they don't even give out quotes anymore. So ymmv, but I think it also fits this analogy.
Ikea cabinet is pleasant to look at, and its design makes sense.
> “Tomorrow's AI coding will be good enough for most corporations”

Or for small businesses today who have a need to get things done, but not the knowledge to hire or manage a skilled programmer, nor the budget to pay them what they deserve.

I find most of the a16z podcast detestable (ethical & morally), but every now and then an episode is interesting or insightful. Here two founders are giving their time to their dentist’s business needs.

Which is to say, the dentist has needs but not the ability to solve them hisself or hire someone. Nevertheless I see opportunities for in-house staff who are working in parallel roles, to take on LLM coding and offering those owners solutions that they can’t hire, or buy—someone who knows the business and can get things done.

https://podcasts.apple.com/us/podcast/a16z-podcast/id8428187...

The problem with this analogy is responsibility. Same set of problems if you have a self driving car imho. Not?
WEE WOO WEE WOO Analogy Police!

Ahem

Libraries are more like IKEA furniture.

LLMs are like 3D printed furniture. Looks flawless. But a flawless version control system in Python is about like a plastic kitchen knife or a solar powered microwave!

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

By your own description: No. Maybe good enough to replace mediocre-and-worse developers, at best. You have to invest disproportionate work to coax better-than-mediocre work out of an LLM.

No, coding is more like building.

A garden shed can easily be built by an AI. A house? Maybe with supervision. A skyscraper? Good luck with that!

And no, garden sheds do not represent 99% of software.

> 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..

So who talks / prompts the agents to do the work - the PM ? he will do his normal job of figma designs, customer strategy , high level requirements etc etc + do all the back and forth and validation with the agent for the actual coding?

Will it be a new type of job or will we still call it a software engineer ? And if its a software engineer why do you determine it is only 1% of current software engineers - and if indeed only 1% then how soon does it happen - will it be in 3 years ? 5 years? 15? Dario said last year that this year maybe 50% of white collar new entries gets decimated. Has it happened? If not why not?

Our predictions currently suck ass. I'm not saying you're wrong - but you could be very early which is almost the same as being wrong. I don't really care if software development as a career collapses in 10 years. I really do care if it happens next year.

> Making software debuggable, maintainable, layered, and composable – that’s still quite a trick. Quite a lot of that work requires extensive, thoughtful reasoning. And that’s where the LLM’s today, even the leading edge of the “capability” from frontier models, fall short.

It’s been my quest during my career to figure out what is maintainable software, what is composable or not, and how the two things, and many other things, are in direct conflict. There is no single answer. If your goal is to take over the market quick, as many here would like, maintainability is a very low priority aspect of your code base. Composability may matter for integrators but can be entirely ignored in your CRUD backend. Beyond that, I don’t know of a good way to measure most of these intangible properties. Highly competent software developers disagree in even basic things, like whether OOP is a good idea, should we all be using pure functional programming etc. Hence, how would you expect an LLM to get good at figuring this out for you? If you describe exactly what trade offs you are willing to make, and give it ways to measure how well it’s doing, then I do think LLMs will be able to not fall short. Given the current state of things, it’s just a matter of opinion whether LLMs fall short, or humans fall short for that matter.

> If your goal is to take over the market quick, as many here would like, maintainability is a very low priority aspect of your code base.

Is it? How long do you expect to keep your momentum after "taking over the market"?

Anecdata time. I once joined a 3 year old project that had ground itself to a near halt with this philosophy. The project's lead seemed almost allergic to the word "refactoring". It had accrued so much tech debt that I was the third "new guy" to join in less than two years, after the previous attempts to hire had successively faltered within 6 months, because my predecessors couldn't deal with the unmaintainable mess. I made it to 9 months.

Maintainability is not tied to OOP or functional, but rather to how much a team cares to manage the cognitive load that comes attached to having to deal with the code base. When that becomes a genuine priority, the code tends to be written with concern for the next human mind's ability to interact with it. And when it makes sense in that one pursuit, functional, OOP, DRY, WET all become valid -- even seductive but toxic affordances like inheritance can sometimes be useful in the right context.

> If your goal is to take over the market quick, as many here would like, maintainability is a very low priority aspect of your code base.

It's low priority in the sense that people in charge tend not to value it.

That's different from saying it is not impactful, or wouldn't lead to a good business outcome, if the software were built better.

Software that needs to be babysat is an ongoing opportunity cost.

Thoughtfully and coherently factorized, abiding a set of architectural rules (i.e: we compose "this" way here, re-evaluated as we go) and following up-to-date framework conventions. LLMs are terrible at this.

Chosing OOP or FP is irrelevant, fundamentals matter more

With generated code, the directory structure, interface design and general state management is usually a haphazard mess. Even with the best frontier models. But what really gets me is the model often tries to make assumptions for me that I didn't specify in the prompt. Subtle things like which error states are "oh shit we need to bail" vs "this isn't a deal breaker." Sometimes it will ask, but more often than not it will just make a decision and it's often the wrong one. If I don't have a fully kitted out test suit and a good type checker to verify the final product against, the the whole looping thing is just useless to me and I'm back to reviewing every line of code it puts out and having to draw on my years of architecture experience to make sure we don't build a giant pile of trash.
Because they are designed to be used by managers who don't know how to answer these questions and don't want to be asked them. Just have the magic answers box pick something.
The generated code is fine at the functional level, the directory structure is usually the standard pattern for the given type of project.

The error types and codes, it will produce to spec.

If you type 'make me that thingy' - yes, it's probably not going to do what you want, but if you give it spec and guidance, it usually will.

The 'interface design' ... not very good though.

> But what really gets me is the model often tries to make assumptions for me that I didn't specify in the prompt.

When the LLM writes a description of a codebase, you are doing transformation from more semantic meaning to less semantic meaning, and you by definition lose some details.

When you go from requirements to code, transformation is from from less semantic meaning to more semantic meaning. The the missing semantic meaning has to be invented. When inventing the missing semantic meaning, the success depends on what the LLM has trained on.

> But what really gets me is the model often tries to make assumptions for me that I didn't specify in the prompt.

This is a problem with your instructions, your specification. An LLM isn't a mind reader. It will attempt to succeed regardless of missing requirements and ambiguity.

Surely this is a solvable problem.

If the average, mediocre software developer can address the issue of directory structure, interface design, general state management, edge cases and subtle assumptions it should be possible to train AI systems to address these issues .

Software development is not some mystical magical activity.

I remember people making similar arguments about autonomous driving...

They're RLHF'ed to an inch of their lives to be able to one-shot complete tasks, since requiring human input defeats the purpose of being able to replace the labor force.

But once the insanity ends LLMs will be packaged as tools for developers to use to boost their productivity, and we'll consider them as we do IDE's and debuggers and stuff. But we have to get through this hype cycle first.

It absolutely hates code that would crash or error in any circumstance. So it adds a ton of dubious fallbacks.
> more often than not it will just make a decision and it's often the wrong one.

Let's not forget these chatbots rely on a random number generator to pick output options.

I have an open question for software engineers out there:

As someone that has never studied CS but has written basic code most of my life (accelerated now with AI), where is the best place to learn software engineering fundamentals?

LLM is the new Excel
But do the same SWE fundamentals apply if the one doing the programming is many times smarter than us?
"They’re foundationally incapable of always and consistently preventing prompt injection attacks. “Alignment work”, safety harnesses, and sandboxes all help to add barriers against the worst, but there are fundamental gap" ...

They seem to be very good at a lot of rudimentary best practices, more so than humans, but more accurately - if you run and audit pass with specific instructions ... they're very good at that.

I mean - it's what they're the best at which is applying 'fuzzy heuristics' in a mechanical way. If can describe issues concisely, the patterns, the styles, the rules then LLMs can very mechanistically and methodologically grind through them.

I don't even see how this is controversial - without getting into 'what their reasoning means' - we can all agree that their synthetic reasoning is pretty good at narrow scales, and they've been 'trained by compilers' and are extremely good at spotting common patterns.

If you back that up with a lot of tokens ... they excel.

Designing architecture, that's difficult, but hammering away at all the 'known-knows across a system' especially to identify things ... they're pretty good at that.

> It helps to know that LLMs don’t “reason”. They predict ..

Semantics. Prediction is the training objective. The ability to reason can be, and very arguably is, an emergent property of that.

The article says what many here like to hear, but in my opinion the core arguments are false.

> Making software debuggable, maintainable, layered, and composable – that’s still quite a trick

Not really. I have been working on a mobile app for months, and I stopped even glancing at the code about two months ago.

150k LOC, around half of that in tests, and the AI still has no problem maintaining the code on my behalf.

Debuggable? It can add extensive instrumentation in seconds.

None of this requires expertise, prompting, or mention of TDD. It's the default.

Frankly I do not believe the author tried developing a large codebase fully agentic and without reviewing the code. I believe many here look at the code produced, deem it substandard, and go hands on.

> They’re foundationally incapable of always and consistently preventing prompt injection attacks

From Anthropic's article about the Auto mode:

> We commissioned an evaluation from a third party, Trajectory Labs, who tested different models within the latest publicly available versions of Claude Code and Codex as of July 17th 2026.1 They tested 72 indirect prompt injection scenarios held out from Anthropic

> In this evaluation, none of the 720 attack attempts succeeded against Claude Fable 5, Opus 5, or Sonnet 5 running auto mode. On the other hand, 5.83% of the attacks succeeded against GPT-5.6 Sol running Codex's Auto-review mode. Notably, this is greater than the 0.09% average attack success rate against our latest models running in bypassPermissions mode without additional safeguards. The tests showed a 19.03% attack success rate against GPT-5.6 Sol when running in Full Access mode

I'm sure someone is going to reply with how they do not trust Antrophic's research, but lacking other data, prompt injection appears to be largely solved already.

Time will tell.
> In the past year, agent harnesses crossed the “can it be done” rubicon.

Brother, I'm still in "Can you get it right?"-mode. What am I doing wrong? (Rhetorical, but advice welcomed).

Its good
Awesome!