It has become impossible to tell managers mesmerised by artificial intelligence that the tools are not, in fact, helpful. So employees just play along with the fiction to keep their jobs, writes our tech columnist
On the contrary - the people who tell you AI doesn’t add any value and will disappear in a few years are either lying, dumb, or completely ignorant of what AI can already do.
I’m a software developer since the 90s, basically before the internet, we had some C books for reference and that’s it. I can tell you that I started last year to use copilot in vscode and some chatgpt on a web page, and it basically changed my world, and all my 50+ years old coworkers are amazed by what it can do really.
You are right it will not fade at all in software development.
Completely disagree. The difficult part of software development was never writing code OR speed of delivery. It was understanding requirements and problem solving. LLMs still can not do either of those things and there is no evidence they ever will be able to.
An example of how harmful LLMs actually are to development can succinctly be described with an issue I had a few weeks ago. I found an issue in an open source project, code was fine if a bit hard to understand. I came up with a PR to fix the problem.
In the time from me checking out the code to submitting the PR, a little less than 24 hours, the maintainer had completely rewritten the entire project with Claude. It was complete nonsense. Incredibly difficult to understand. Abstracting things that didn’t need abstracting. My PR was useless, because the entire project was new. The maintainer definitely didn’t understand the changes either. If a bug came up there’s no way AI would be able to solve it (the bug was still there even though the code was entirely new).
LLMs don’t understand the code. They just make things that look like they will work. And then a human has to maintain it (or keep paying billions of dollars for Claude to try to fix it).
the person in your scenario is just fkin stupid. When people say that llms are helpful for coding, they aren’t talking about telling an llm to rewrite an entire codebase.
You are right, but right now we are living in a very messy reality where it’s hard to know who’s being stupid and who is using it well. One person I know that, well, I was never a huge fan of his work but at least it was somewhat serviceable is now all-in on AI and his code has been rewritten in a similar manner as the parent poster comments. He’s got no idea how it works or how it should worked, the AI decided to rewrite it in an entirely different language, and it’s a buggy mess and it never fixes the bugs without making new bugs. Then he hit his token quota 3 weeks early and basically said he was going to stop working on it because he no longer could manually work the codebase. He didn’t ask for a rewrite, but AI advised him that his language choice was a poor fit and reworked things in another language, one that none of us use to that level of seriousness. It also made it largely based on super convoluted regular expressions.
The problem is that the leadership is singing the praises of these people, they were on their ‘leaderboards’ of AI adoption and much like the craze of praising “lines of codes”, we are neck deep in the most stupid non-technical evaluation of technical work you could imagine.
In other words, you’re arguing that their usage without discernment is detrimental.
Cory agrees on this very same article, and it also includes the same nuance this chain is trying to give voice to:
The other question Suresh implicitly raises is: “How can you reconcile the failure of AI in the enterprise with the individual claims of skilled technologists who insist that AI is helping them do great work?” The answer is that these AI users are “centaurs” – experienced workers who are assisted by automation on terms that they set for themselves.
Thanks to their skill and experience, these workers possess discernment, the ability to tell good code from bad, and (more importantly) good uses of code-generation tools from bad. They demonstrate the adage that worker-driven automation improves quality, while capital-driven automation improves throughput.
We wouldn’t be having this conversation if LLMs had been given the chance to grow into being the same way the web did. Whereas we would be having this same conversation with the letters swapped if corporations were the ones to spawn the WWW instead of the way it came about.
I’m sorry but to me your comment is a bit misguided. You raise extremely valid point and are completely right in what you say, and yet all your argument fails to prove that software development hasn’t changed.
The difficult part was understanding requirements and problem solving: absolutely true. Yet most of the time of a developer was spent in writing code. Now it’s spent refining the analysis so that the LLM stops producing slop. And many programmers are doing it, even with all its downsides, because for them the fun part is understanding the requirements and problem solving, not writing code nor delivering fast. They are delegating those tasks to a machine, even with all the risks and issues.
Your second point (and the anecdote) further proves how programming changed. Before it was unthinkable that some random person, likely with no clue about what they are doing, would refactor an entire codebase in a night.
Both are massive changes. For the best? Arguably not, but I seriously doubt there will be any going back now.
Now it’s spent refining the analysis so that the LLM stops producing slop
The thing is that actually doing this isn’t faster than writing the code, robs the practitioner of learning, and more often than not doesn’t actually happen, so you have a harder to maintain codebase with more bugs and less knowledgeable developers to maintain it.
Edit: and as a fun bonus accelerates glacier melting!
I think you’re right in general. I think juniors and those who havent yet had experience are not going to understand a goddamn thing and produce broken, insecure, unmaintainable slop.
I’ve written my share of garbage code – completely by hand! And i’m much better for it.
Once you have that experience, once you’ve written a few backends and frontends, there’s not much left to understand. Move the data from here to there. Display it, transform it, slice it up. For webdev AI is a huge force multiplier. I can make a dozen features or apps in the time it used to take me to learn one framework I was curious about. It even helps me learn faster because of how quickly I can test new patterns and ideas.
There’s certainly a right way to use it if you want to continue being edified, burning the planet down aside.
If we only used AI for codegen, this probably wouldn’t be much of an issue. Those cat videos take more energy than building a complete app. Also, it’s all pretty new and the newest tech 40 years ago would have filled a warehouse and had the computational power of a potato, but here we are now. I expect we’ll get more efficient at it and in the ways we use it. And there’s already a huge worldwide shift in energy capture (America aside…)
I’ve written my share of garbage code – completely by hand!
Whenever I look back at old code, mine or others, the first words that usually come to mind are “what you have to understand about this is… we were on a tight schedule, we never thought this was going to be used in production, we weren’t allowed to execute the planned and contracted refactor… etc. etc. etc.”
Unfortunately many people would rather spin the wheel for a chance to win magically produced functioning code, rather than doing the work themselves with sure results - even if it takes the same or more time.
And the kind of current politicians there are around the world proves that most people don’t give a fuck about the ice-caps (though I would also argue that it’s not so much the random person calling an LLM that is poisoning the waters - even though it does have a non-negligible effect -, rather it’s massive sociopaths in charge of the companies creating LLMs that are perfectly fine with destroying the environment and other people’s money in a vain dream of being the owner of some kind of “new order”)
Not at all. It gives the practitioner the option of skipping the learning.
Starting in the 1990s I started skipping the learning of assembly language, compilers got good enough that I just don’t need to know how the latest SIMD/MIMD/ whatever instructions work, I just express what I want in C and gcc or whatever handles the optimization for me.
Comparing it to an (almost) entirely complete abstraction where you (almost) never have any benefit to looking under the covers like c over assembler is completely dishonest.
entirely complete abstraction where you (almost) never have any benefit to looking under the covers like c over assembler is completely dishonest.
Is it, though? In the early 1990s I could still optimize compiler output by hand, here and there. In the 1980s it was common practice and necessary in many circumstances to make complex things happen on the constrained hardware. In the 1970s there were a lot of programmers who never touched Fortran, just practiced assembly all the time because Fortran was too inefficient for their needs.
I’ll say that LLMs, this year, are something like compilers were in the 1960s - a revolutionary improvement in accessibility of coding, being able to express what you want in “natural language” - like COBOL did starting in 1959.
LLMs have plenty of pitfalls that COBOL doesn’t today, but I’ll note that Borland Turbo C++ compiler in 1991 was too damn buggy to do anything much more complex than “Hello, World.” with.
Yes. Acting like an LLM over a programming language is anything close to a higher level over lower level programming language makes you completely full of shit.
This is a point that really sticks with me. Using it for the sometimes spot on cakewalk segments is a fairly productive win. By the time you stubbornly insist on driving it entirely blackbox with chat and trying to get the right results without actually touching code… Well, even when it works, it’s often more work than just doing it yourself.
Someone rebased a UI I worked on in a new version of the UI framework. As a result, there was this one odd gap in the UI in one specific place. A vibe coder spent 3 hours back and forth with the AI trying to get it to correct the gap and finally submitted their merge request. Hundreds and hundreds of lines of CSS. So I declined the merge request, open the gui, looked at the gap, hit f12, adjusted a single padding statement, and it was all good. People are struggling with defining all sorts of criteria and rigging it to let it try and try and try again and hopefully laid out every contingency, every corner case, and spent hours laying the ground work and could have done similar in a more straightforward way.
Using it for the sometimes spot on cakewalk segments is a fairly productive win.
One thing that absolutely blows my mind is how many people will say how much time it saves then with repetitive or boilerplate code. It is obvious these people have never actually tried to optimize their workflow even a little bit before. Regex replace, snippets, and keyboard macros have existed in text editors forever and are actually deterministic.
As little as possible of my work is boilerplate, but some times there will be something like “I want to take width,height, and depth as arguments from the command as variables”, and poof, all the argv tedium is done.
Yet most of the time of a developer was spent in writing code.
That’s what developers told the world. Now they’re exposed, it never really took that long to write the code. (Only partly joking.)
Actually, a whole lot of time went into reading other developers’ code, getting documentation in sync with the actual implementation. And if you didn’t do all that, you tended to have a lot more bugs / vulnerabilities, etc. The LLMs are wicked fast at reviewing code, they don’t find ALL the problems, a lot of problems they do find aren’t worth fixing, but they do find more actual actionable problems per minute than most developers can find per hour in a big code base.
It was understanding requirements and problem solving. LLMs still can not do either of those things and there is no evidence they ever will be able to.
I don’t know… I just made a scheduling / timesheet creation app. Multi-user, overlapping clients and providers, multiple funding sources. Took 10 calendar days to make the initial app working part time, maybe 2-3 hours a day. Initially written in Python, decided at that point I’d rather have it in Go. Because the initial app had robust requirements and design docs, the translation to Go happened in less than 5 calendar days, with almost zero human involvement beyond telling the agent “continue” at each stopping point. After the Go translation was done (and debugged by the LLM to a flawless translation - only difference is that it runs faster), I was given a new timesheet to use for some of the workers, weekly instead of bi-weekly. Pay weeks start on Monday instead of Thursday. Various wrinkles about how the employees and clients and services are identified, weird sub-totals by service. All I told the LLM was: “Here’s a new timesheet that we’ll be using for some workers, design the necessary modifications and extensions to accomodate it.” It did, independently. It highlighted three shortcuts it took and I told it not to take those shortcuts, it adjusted.
That’s not quite rocket science, but it’s still impressive: to dissect the given .pdf, determine what data goes in what fields, in what formats, with what calculations, based on just reading the page, then adapt the existing app to fill it out automatically.
Tech in general. I’m a sysadmin in research computing. You know how many clients at prestigious universities are using AI for mathematics, biology, etc? All of them
I’m my experience people give tech demos, everyone is impressed, my coworkers say it makes them multiples faster, then I have more work making sure the wheels don’t fall off.
On the contrary - the people who tell you AI doesn’t add any value and will disappear in a few years are either lying, dumb, or completely ignorant of what AI can already do.
Read the article
I’m a software developer since the 90s, basically before the internet, we had some C books for reference and that’s it. I can tell you that I started last year to use copilot in vscode and some chatgpt on a web page, and it basically changed my world, and all my 50+ years old coworkers are amazed by what it can do really.
You are right it will not fade at all in software development.
Completely disagree. The difficult part of software development was never writing code OR speed of delivery. It was understanding requirements and problem solving. LLMs still can not do either of those things and there is no evidence they ever will be able to.
An example of how harmful LLMs actually are to development can succinctly be described with an issue I had a few weeks ago. I found an issue in an open source project, code was fine if a bit hard to understand. I came up with a PR to fix the problem.
In the time from me checking out the code to submitting the PR, a little less than 24 hours, the maintainer had completely rewritten the entire project with Claude. It was complete nonsense. Incredibly difficult to understand. Abstracting things that didn’t need abstracting. My PR was useless, because the entire project was new. The maintainer definitely didn’t understand the changes either. If a bug came up there’s no way AI would be able to solve it (the bug was still there even though the code was entirely new).
LLMs don’t understand the code. They just make things that look like they will work. And then a human has to maintain it (or keep paying billions of dollars for Claude to try to fix it).
the person in your scenario is just fkin stupid. When people say that llms are helpful for coding, they aren’t talking about telling an llm to rewrite an entire codebase.
You are right, but right now we are living in a very messy reality where it’s hard to know who’s being stupid and who is using it well. One person I know that, well, I was never a huge fan of his work but at least it was somewhat serviceable is now all-in on AI and his code has been rewritten in a similar manner as the parent poster comments. He’s got no idea how it works or how it should worked, the AI decided to rewrite it in an entirely different language, and it’s a buggy mess and it never fixes the bugs without making new bugs. Then he hit his token quota 3 weeks early and basically said he was going to stop working on it because he no longer could manually work the codebase. He didn’t ask for a rewrite, but AI advised him that his language choice was a poor fit and reworked things in another language, one that none of us use to that level of seriousness. It also made it largely based on super convoluted regular expressions.
The problem is that the leadership is singing the praises of these people, they were on their ‘leaderboards’ of AI adoption and much like the craze of praising “lines of codes”, we are neck deep in the most stupid non-technical evaluation of technical work you could imagine.
In other words, you’re arguing that their usage without discernment is detrimental.
Cory agrees on this very same article, and it also includes the same nuance this chain is trying to give voice to:
We wouldn’t be having this conversation if LLMs had been given the chance to grow into being the same way the web did. Whereas we would be having this same conversation with the letters swapped if corporations were the ones to spawn the WWW instead of the way it came about.
The reason is the same. There is only one war.
I’m sorry but to me your comment is a bit misguided. You raise extremely valid point and are completely right in what you say, and yet all your argument fails to prove that software development hasn’t changed.
The difficult part was understanding requirements and problem solving: absolutely true. Yet most of the time of a developer was spent in writing code. Now it’s spent refining the analysis so that the LLM stops producing slop. And many programmers are doing it, even with all its downsides, because for them the fun part is understanding the requirements and problem solving, not writing code nor delivering fast. They are delegating those tasks to a machine, even with all the risks and issues.
Your second point (and the anecdote) further proves how programming changed. Before it was unthinkable that some random person, likely with no clue about what they are doing, would refactor an entire codebase in a night.
Both are massive changes. For the best? Arguably not, but I seriously doubt there will be any going back now.
The thing is that actually doing this isn’t faster than writing the code, robs the practitioner of learning, and more often than not doesn’t actually happen, so you have a harder to maintain codebase with more bugs and less knowledgeable developers to maintain it.
Edit: and as a fun bonus accelerates glacier melting!
I think you’re right in general. I think juniors and those who havent yet had experience are not going to understand a goddamn thing and produce broken, insecure, unmaintainable slop.
I’ve written my share of garbage code – completely by hand! And i’m much better for it.
Once you have that experience, once you’ve written a few backends and frontends, there’s not much left to understand. Move the data from here to there. Display it, transform it, slice it up. For webdev AI is a huge force multiplier. I can make a dozen features or apps in the time it used to take me to learn one framework I was curious about. It even helps me learn faster because of how quickly I can test new patterns and ideas.
There’s certainly a right way to use it if you want to continue being edified, burning the planet down aside.
If we only used AI for codegen, this probably wouldn’t be much of an issue. Those cat videos take more energy than building a complete app. Also, it’s all pretty new and the newest tech 40 years ago would have filled a warehouse and had the computational power of a potato, but here we are now. I expect we’ll get more efficient at it and in the ways we use it. And there’s already a huge worldwide shift in energy capture (America aside…)
Whenever I look back at old code, mine or others, the first words that usually come to mind are “what you have to understand about this is… we were on a tight schedule, we never thought this was going to be used in production, we weren’t allowed to execute the planned and contracted refactor… etc. etc. etc.”
Fully agree.
Unfortunately many people would rather spin the wheel for a chance to win magically produced functioning code, rather than doing the work themselves with sure results - even if it takes the same or more time. And the kind of current politicians there are around the world proves that most people don’t give a fuck about the ice-caps (though I would also argue that it’s not so much the random person calling an LLM that is poisoning the waters - even though it does have a non-negligible effect -, rather it’s massive sociopaths in charge of the companies creating LLMs that are perfectly fine with destroying the environment and other people’s money in a vain dream of being the owner of some kind of “new order”)
Not at all. It gives the practitioner the option of skipping the learning.
Starting in the 1990s I started skipping the learning of assembly language, compilers got good enough that I just don’t need to know how the latest SIMD/MIMD/ whatever instructions work, I just express what I want in C and gcc or whatever handles the optimization for me.
Comparing it to an (almost) entirely complete abstraction where you (almost) never have any benefit to looking under the covers like c over assembler is completely dishonest.
Is it, though? In the early 1990s I could still optimize compiler output by hand, here and there. In the 1980s it was common practice and necessary in many circumstances to make complex things happen on the constrained hardware. In the 1970s there were a lot of programmers who never touched Fortran, just practiced assembly all the time because Fortran was too inefficient for their needs.
I’ll say that LLMs, this year, are something like compilers were in the 1960s - a revolutionary improvement in accessibility of coding, being able to express what you want in “natural language” - like COBOL did starting in 1959.
LLMs have plenty of pitfalls that COBOL doesn’t today, but I’ll note that Borland Turbo C++ compiler in 1991 was too damn buggy to do anything much more complex than “Hello, World.” with.
Yes. Acting like an LLM over a programming language is anything close to a higher level over lower level programming language makes you completely full of shit.
This is a point that really sticks with me. Using it for the sometimes spot on cakewalk segments is a fairly productive win. By the time you stubbornly insist on driving it entirely blackbox with chat and trying to get the right results without actually touching code… Well, even when it works, it’s often more work than just doing it yourself.
Someone rebased a UI I worked on in a new version of the UI framework. As a result, there was this one odd gap in the UI in one specific place. A vibe coder spent 3 hours back and forth with the AI trying to get it to correct the gap and finally submitted their merge request. Hundreds and hundreds of lines of CSS. So I declined the merge request, open the gui, looked at the gap, hit f12, adjusted a single padding statement, and it was all good. People are struggling with defining all sorts of criteria and rigging it to let it try and try and try again and hopefully laid out every contingency, every corner case, and spent hours laying the ground work and could have done similar in a more straightforward way.
One thing that absolutely blows my mind is how many people will say how much time it saves then with repetitive or boilerplate code. It is obvious these people have never actually tried to optimize their workflow even a little bit before. Regex replace, snippets, and keyboard macros have existed in text editors forever and are actually deterministic.
As little as possible of my work is boilerplate, but some times there will be something like “I want to take width,height, and depth as arguments from the command as variables”, and poof, all the argv tedium is done.
That’s what developers told the world. Now they’re exposed, it never really took that long to write the code. (Only partly joking.)
Actually, a whole lot of time went into reading other developers’ code, getting documentation in sync with the actual implementation. And if you didn’t do all that, you tended to have a lot more bugs / vulnerabilities, etc. The LLMs are wicked fast at reviewing code, they don’t find ALL the problems, a lot of problems they do find aren’t worth fixing, but they do find more actual actionable problems per minute than most developers can find per hour in a big code base.
I don’t know… I just made a scheduling / timesheet creation app. Multi-user, overlapping clients and providers, multiple funding sources. Took 10 calendar days to make the initial app working part time, maybe 2-3 hours a day. Initially written in Python, decided at that point I’d rather have it in Go. Because the initial app had robust requirements and design docs, the translation to Go happened in less than 5 calendar days, with almost zero human involvement beyond telling the agent “continue” at each stopping point. After the Go translation was done (and debugged by the LLM to a flawless translation - only difference is that it runs faster), I was given a new timesheet to use for some of the workers, weekly instead of bi-weekly. Pay weeks start on Monday instead of Thursday. Various wrinkles about how the employees and clients and services are identified, weird sub-totals by service. All I told the LLM was: “Here’s a new timesheet that we’ll be using for some workers, design the necessary modifications and extensions to accomodate it.” It did, independently. It highlighted three shortcuts it took and I told it not to take those shortcuts, it adjusted.
That’s not quite rocket science, but it’s still impressive: to dissect the given .pdf, determine what data goes in what fields, in what formats, with what calculations, based on just reading the page, then adapt the existing app to fill it out automatically.
Tech in general. I’m a sysadmin in research computing. You know how many clients at prestigious universities are using AI for mathematics, biology, etc? All of them
I’m my experience people give tech demos, everyone is impressed, my coworkers say it makes them multiples faster, then I have more work making sure the wheels don’t fall off.
I’ve spent the last 4 months using LLMs to review / ensure that junior coders’ wheels don’t fall off.