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