This is the loop (and honestly, I predicted it way before it started):
1) LLMs can generate code from "natural language" prompts!
2) Oh wait, I actually need to improve my prompt to get LLMs to follow my instructions...
3) Oh wait, no matter how good my prompt is, I need an agent (aka a for loop) that goes through a list of deterministic steps so that it actually follows my instructions...
4) Oh wait, now I need to add deterministic checks (aka, the code that I was actually trying to avoid writing in step 1) so that the LLM follows my instructions...
5) <some time in the future>: I came up with this precise set of keywords that I can feed to the LLM so that it produces the code that I need. Wait a second... I just turned the LLM into a compiler.
The error is believing that "coding" is just accidental complexity. "You don't need a precise specification of the behavior of the computer", this is the assumption that would make LLM agents actually viable. And I cannot believe that there are software engineers that think that coding is accidental complexity. I understand why PMs, CEOs, and other fun people believe this.
Side note: I am not arguing that LLMs/coding agents are nice. T9 was nice, autocomplete is nice. LLMs are very nice! But I am starting to be a bit too fed up to see everyone believing that you can get rid of coding.
But even in the case of magically fixing people problems - for example, if you are working on a solo project - you will still have technical debt because you will still have lack of knowledge. An abstraction that leaks. A test that doesn't cover all the edge cases. A "simple" function that was not indeed that simple.
The mistake you want to avoid at all costs is believing you don't have a knowledge gap. You will always have a knowledge gap. So plan accordingly, make sure you're ready when you will finally discover that gap.
I worked at Google and then at Meta. Man, the amount of "nonsense" of the ACL system was insane. I write nonsense in quotes because for sure from a security point of view it all made a lot of sense. But there is exactly zero chance that such a system can be used in a less technical company. It took me 4 years to understand how it worked...
So I'll take this as another data point to create a startup that simplifies security... Seems a lot more complicated than AI
Or, what's so wrong with anything so people need to replace it with something else instead of improving it?
Let's say I'm an old man favoring improving existing stuffs instead of starting from scratch. I like debugging and wish to work as a sys programmer specialized in debugging and fixing/improving legacy codebase. But again I'm not really a sys programmer so I'm probably on the wrong side.
1) it would really be nice to renovate that old house in the city center of an old Italian town! Oh but hold and behold: you'd have to spend hours, days, months, even years (I am not kidding) just waiting for approval and agreeing on what you can and cannot do with the house. And it would cost twice as much as building a new one. And the new one would have better insulation and a modern layout, and be exactly like you want. That's why it's not always the case to fix and improve an existing thing.
2) it would really be nice to fix that car from the '60ies. Oh but hold and behold: the design doesn't really allow you to have all the safety measures of modern cars. And the maximum speed is going go be 65mph on a good day. And it's going to cost you twice as much as a new car, OR you'd have to learn tons of mechanical stuff to be able to fix it yourself. That's why it's not always the case to fix and improve existing things.
3) it's just more fun to build new things (at least for some people). It's open source. People do this for free, to learn and enjoy their time. They can do whatever they want, and they decided to go with the shiny new thing. Is it better than fixing and improving an existing technology? I don't know. But apparently it's more fun! :)
Again, I might have misunderstood what booing means though (which explains the downvotes at least...)
At Meta we did "fix-it weeks", more or less every quarter. At the beginning I was thrilled: leadership that actually cares about fixing bugs!
Then reality hit: it's the worst possible decision for code and software quality. Basically this turned into: you are allowed to land all the possible crap you want. Then you have one week to "fix all the bugs". Guess what: most of the time we couldn't even fix a single bug because we were drown in tech debt.
If with "booing" you mean "disrespect whatever good idea a person has because it also has very bad ideas", then I wonder who we will end up respecting. Even I have ideas I end up discovering bad. Should I boo myself and ignore everything else I say?
If I am missing another definition of booing then I am sorry.