This is an incredibly stupid take, can’t believe people upvoted this shit, lol
Have you not used AI agents anytime in the past 6 months?
They can pull in information that you don’t write down, it can create Powerpoint slides, it can create mermaid diagrams from your description.
Those are not things you just do manually because you can? At that point why not code in Notepad instead of relying on the stupid machine assisted IDEs?
This is an incredibly stupid take, and I genuinely can’t believe people are upvoting it.
Have you actually used an AI agent at any point in the last six months?
Your entire argument seems to rest on the bizarre assumption that describing what you want is roughly equivalent in effort to producing it yourself. It isn’t. That’s literally why abstractions and tools exist.
I can describe the architecture I want in a few paragraphs and have an agent generate a Mermaid diagram. I can give it a pile of documents and have it pull together information I didn’t manually write into the prompt. I can describe the structure and content of a presentation and have it generate the actual PowerPoint. I can give it a repetitive refactoring task that I fully understand how to perform myself and have it apply that change across a codebase.
The fact that I need enough expertise to verify the result doesn’t somehow eliminate the time saved producing it.
I know how to write Java without an IDE. That doesn’t mean IntelliJ becomes useless because I need to understand Java to verify whether the code it generates, refactors, or autocompletes is correct.
And the claim that requiring expertise somehow eliminates AI’s usefulness is particularly strange. Most useful tools require expertise. IDEs require expertise. CAD software requires expertise. Excel requires expertise if you’re doing anything remotely complicated with it. Their purpose isn’t necessarily to let an unskilled person impersonate an expert; it’s to make an expert substantially more productive.
Natural language also isn’t the only interface. Modern agents operate on files, repositories, documents, databases, APIs, tool outputs, search results, and existing context. The prompt can literally be “turn this into a presentation” or “diagram this architecture.” You don’t have to painstakingly reconstruct the entire source material in prose first.
There are plenty of legitimate criticisms of generative AI: hallucinations, unreliable output, loss of control in certain workflows, mediocre prose, inappropriate use cases, people blindly trusting the output, etc.
But “if you know enough to check its work, you might as well have done the work yourself” is basically an argument for coding in Notepad because a competent programmer shouldn’t need a stupid machine-assisted IDE.
Knowing how to do something and wanting to spend your time manually doing every part of it are not the same thing.
I actually don’t need to know how my IDE works to use it.
Neither do I need to know how a transformer works to use an AI agent. What does that have to do with anything?
I need to know Java to recognize whether IntelliJ’s refactoring produced sensible Java, just as I need domain expertise to recognize whether an AI agent produced sensible output. “Requires oversight and expertise” does not mean “requires understanding the internal implementation of the tool.”
With increasing degrees of specificity, it kind of is, yeah.
No, it really isn’t, and this is probably the strangest part of your argument.
Specificity of requirements and effort of implementation are two completely different things.
“Take these 30 classes, rename this field, update its usages, add null checks at these boundaries, update the affected tests, and run the test suite” is a reasonably specific description of a task. It is quite obviously not equivalent in effort to manually performing every edit.
“Create a sequence diagram showing the interaction between these five services for this request flow” can take seconds to describe and considerably longer to manually construct.
“Take these documents, extract these specific metrics, compare them by quarter, and put the results into a PowerPoint using this existing deck as the visual template” is a perfectly comprehensible specification. Actually reading the documents, extracting the data, calculating the comparisons, creating the charts and assembling the slides is where the work is.
This distinction is the entire reason programming exists. A specification describes what computation you want performed. We don’t conclude that because SQL lets me precisely specify which data I want from a database, I might as well manually inspect every row.
And “it only saves time where you don’t care about shit-quality work” is just begging the question. You’ve defined AI output as shit and then concluded that anyone accepting AI output must therefore not care about quality.
The useful workflow isn’t “ask AI for something and blindly ship whatever comes out.” It’s “specify the task, let the machine perform the expensive mechanical portion, inspect the result, and correct or reject it where necessary.”
Sometimes that is slower than doing it yourself. Sometimes the output is shit. Sometimes AI is simply the wrong tool.
But the idea that describing a task with sufficient precision inevitably approaches the effort required to execute that task is just demonstrably false.
If that were true, half of software engineering wouldn’t exist.
There is like a very basic topological fact here that you are just failing to grasp.
Specificity of requirements and effort of implementation are two completely different things.
No, they’re not. Implementations are just requirements with very high specificity. When you roll your eyes over the horribly inept dogshit your AI produces and then correct it, you are adding specificity to the system. This can proceed ad infinitum until you end up just doing the whole thing yourself—which I have done with Suno, because Suno is garbage.
You’ve defined AI output as shit and then concluded that anyone accepting AI output must therefore not care about quality.
It’s a rule that’s served me well. I think I’ll keep doing it.
“Create a sequence diagram showing the interaction between these five services for this request flow” can take seconds to describe and considerably longer to manually construct.
It is extremely funny you would put this up as an example.
I will have to manually construct it anyway because that is literally the only way I’ll know if the AI-that-fucks-up has fucked it up or not.
There is like a very basic topological fact here that you are just failing to grasp.
I think the “very basic topological fact” you’re looking for is that you’ve discovered a continuum and then somehow convinced yourself that this means both ends of it are the same thing.
Implementations are just requirements with very high specificity.
Yes, if you progressively specify every implementation detail until you’ve literally specified the complete implementation, then congratulations: you’ve eventually implemented it.
This is a genuinely fascinating discovery.
Unfortunately, absolutely nothing requires you to do that.
“Rename this field everywhere, update the tests and verify they pass” is more specific than “fix the code,” and considerably less specific than enumerating every character that needs to change in every file.
The entire useful space between those two points is apparently missing from your topology.
I will have to manually construct it anyway because that is literally the only way I’ll know if the AI-that-fucks-up has fucked it up or not.
This might be my favourite part.
No, reviewing something does not require independently recreating it from scratch. I genuinely don’t know how you function professionally if you believe this.
I review other people’s code without first independently implementing their ticket.
I review pull requests without recreating every commit myself.
I review architecture diagrams without drawing a second architecture diagram and holding them up to the light.
I review PowerPoint decks without secretly making my own PowerPoint deck first.
I can inspect a sequence diagram and notice “service B doesn’t call service C there” without first spending twenty minutes lovingly dragging boxes and arrows around myself.
This is, in fact, one of the rather important properties of human cognition: recognizing whether something is correct can be dramatically cheaper than producing it.
Otherwise code review would involve two developers independently implementing every feature so one of them could check the other.
Your Suno example is equally compelling. You found a tool that couldn’t produce output meeting your standards for a particular task, so you stopped using it for that task.
Excellent.
I once encountered a screwdriver that was unsuitable for hammering in a nail. Thankfully I managed to resist developing a general theory of screwdrivers from the experience.
And this:
It’s a rule that’s served me well. I think I’ll keep doing it.
is at least refreshingly explicit. We’ve finally abandoned the argument and arrived at “I have decided AI output is shit, therefore AI output is shit.”
Which is perfectly fine as a personal preference.
It’s just considerably less interesting than the “very basic topological fact” you dressed it up as.
See, I know you can’t understand what’s being said because you’ve already relegated yourself to the role of “reviewer” and are no longer an artisan invested in the state of your craft. You have abandoned the art that supposedly makes your career.
and notice “service B doesn’t call service C there” without first spending twenty minutes lovingly dragging boxes and arrows around myself.
My guy, dragging the boxes is the easy part. If you already know what these services do, what is the AI accomplishing for you? You’re already at a 0.9 on the ticket-to-implementation continuum. Like actually, what the fuck are you talking about?
I once encountered a screwdriver that was unsuitable for hammering in a nail.
Profound.
No, really—I’ve never thought about screwdrivers before. It’s really eye-opening to think about just how much technology is like hammers.
If only some tech-head were around to explain tools to me, maybe I could have convinced my dad to stop misapplying the heroin to his elbow every night.
See, I know you can’t understand what’s being said because you’ve already relegated yourself to the role of “reviewer” and are no longer an artisan invested in the state of your craft.
Oh fucking hell, we’ve reached the “artisan” stage of the argument.
Yes, brother. I have abandoned the sacred art of software engineering by allowing a machine to draw rectangles for me. Somewhere, an ancient guild master has snapped his mechanical keyboard over his knee in disgust.
This is exactly the kind of self-important wank that happens when someone realizes the technical argument isn’t going particularly well and retreats into aesthetics.
My guy, dragging the boxes is the easy part. If you already know what these services do, what is the AI accomplishing for you?
IT’S DRAGGING THE FUCKING BOXES.
Holy shit.
That is literally the point.
I know what the services do. I know which services communicate. I know what the request flow should look like. I describe that information, the machine performs the tedious mechanical transformation into a diagram, and then I verify that the representation matches what I intended.
You’ve somehow managed to identify the exact value proposition while presenting it as a rebuttal.
“But if you already know what you want the PowerPoint to say, what is AI accomplishing by making the PowerPoint?”
Making. The. Fucking. PowerPoint.
The intellectual work and the mechanical production of an artifact are not the same thing. This really shouldn’t require a fucking topology seminar.
And no, knowing that A calls B, B publishes an event, and C consumes it does not mean I’m “0.9” of the way through creating a polished diagram any more than knowing the numbers I want plotted means I’m 90% of the way through formatting a chart.
You’ve simply assigned essentially zero value to execution time and then triumphantly discovered that tools which reduce execution time have essentially zero value.
Very impressive result.
The “artisan” thing makes this even funnier because apparently craftsmanship, in your conception of software engineering, isn’t understanding systems, making good architectural decisions, identifying tradeoffs, debugging difficult problems, or communicating designs clearly.
No, the sacred craft begins when I manually position the fucking rectangle.
And your argument about verification is still just as broken as it was before.
I don’t need to independently produce an artifact to determine whether it represents something I already understand correctly. That’s why reviewing a 20-line diff can take thirty seconds even though discovering and implementing the correct change might have taken someone an hour.
Recognition and generation are different cognitive tasks with different costs.
You keep trying to erase that distinction because your entire “ticket-to-implementation continuum” depends on it not existing.
Profound.
I agree it wasn’t particularly profound.
It wasn’t supposed to be.
It was an extremely simple analogy for an extremely simple point, and somehow we’ve now established that even that needed further explanation.
But please, tell me more about the lost artisanal tradition of manually drawing sequence-diagram arrows. I’m beginning to understand why AI isn’t saving you any time.
Any information that whatever you’re working on hinges upon, you need to already know and have confirmed before you start working on it. So not only did you need to look it up anyway, only you know what aspects of that information are most important for the goals of your work. Of course, there can also be less vital pieces of information that you may consult as you work, like maybe you want to compare the size of something with football fields, to make it harder to understand. Undoubtedly an AI can do that for you, but in the end you still need to look it up to verify it, so you haven’t really saved any time or effort.
It’s a similar kind of story for things like generating PowerPoint slides. Slides based on what? An article? The script? Slides that just summarise the prose make for a terrible presentation and aren’t any better as a starting point for one. Also, anything that can be described using less time and (cognitive) energy than to just write it in Mermaid code, isn’t worth making a diagram out of.
At that point why not code in Notepad instead of relying on the stupid machine assisted IDEs?
This is comparison makes no sense, because an IDE is the very opposite of AI. There is little value in a person manually performing the same algorithms over and over again, other than maybe for a learning process. So if they can be automated, it just means that people can focus their efforts on doing the work that requires, you know, personhood. AI is the opposite in that it’s useless for procedural automation, and the only thing it can do automatically is the kind of work that can only have value if a person is doing it.
I find writing the code is the easy part. The difficult part is figuring out what the requirements are, fitting together all of the data relationships, figuring out the security so the correct people and systems have access to the data. To do these things I need very specific knowledge of the systems I’m working on, knowledge the AI doesn’t have.
I could see it could give you a simple interface that’s similar to something it’s been trained on. But it’s capabilities are very limited in terms of doing anything novel. It can’t actually understand a problem, it can only give some code similar to problems that exist in it’s training data. Sometimes that’s useful, since at times I do have to solve problems that’s been solved by others. But most of the time the AI can’t understand what I’m trying to do and it’s easier to write the code than it is to try to explain to an LLM how to write the code I want it to write.
Maybe you are doing some exotic stuff, but for me it’s more than capable of writing code, coding is mostly about applying existing patterns to solve known problems, very few programmers deal with novel problems.
Design Patterns book has been out for what? 2 decades, and it’s not outdated.
For good team interoperability you want to have code that’s standardized, that’s also where LLMs excel at.
It’s a nice productivity tool, just like an IDE is a nice productivity tool
In software engineering, sure there’s patterns, but that’s just guidelines. Eventually you run up against a problem where an something you don’t have control over isn’t 100% reliable so you have to think through how to handle that scenario. Maybe you retry an API call, maybe you notify some people about the issue, it’s all context dependent what you need to do. The AI doesn’t know what to do, because how would it? There are a massive (I won’t say infinite, but in terms of a human lifespan it may as well be) number of combinations of technology X connecting to technology Y. So there is always going to be a great many problems that no one has ever encountered before. LLMs increasing the number of features in the software doesn’t solve those kinds of problems it just increases the number of problem.
I think it’s fine to think of it as a tool, like an IDE. But just like an IDE, it doesn’t solve the problems, the person using the tool solves the problem.
For instance today, the LLM explained to me how to enable SSL certificate negotiation with TLS 1.3 some shitty IIS setup I have to maintain. I used the LLM because I figured that I’m probably not the only one that has seen that issue. Now the problem I have to deal with is whether the software that updates the certs might break the config, that’s a little less likely the LLM will have a reliable solution to. I might just wait until the software updates the cert an manually test if it broke. The day before I had to launch some stuff in the middle of the night so I wouldn’t interfere with business operations. The launch was to change something from single linked list to a doubly linked list which is important for reasons I can’t explain now. I mean I would explain it, but honestly I can’t remember why. I just have in my notes that it needs to be a doubly linked list for the recursion to work properly. Maybe next week when I fix the FE I’ll remember why, but if I was correct many months ago (it’s a low priority issue), the FE should now have the data it needs to solve whatever problem was there.
So yeah, I use LLMs sometimes for problems that I think other people have seen before but sure as hell can’t be driving on what I do. Someone has to make the various pieces of software work together, know the business the software is being used in. More software means more problems that someone has to figure out. If you make n pieces of software with LLMs, you’re make n! problems to solve.
This is an incredibly stupid take, can’t believe people upvoted this shit, lol
Have you not used AI agents anytime in the past 6 months?
They can pull in information that you don’t write down, it can create Powerpoint slides, it can create mermaid diagrams from your description.
Those are not things you just do manually because you can? At that point why not code in Notepad instead of relying on the stupid machine assisted IDEs?
You may want to have your AI re-summarize that one for you. It seems to have royally fucked up somewhere.
You asked for it:
This is an incredibly stupid take, and I genuinely can’t believe people are upvoting it.
Have you actually used an AI agent at any point in the last six months?
Your entire argument seems to rest on the bizarre assumption that describing what you want is roughly equivalent in effort to producing it yourself. It isn’t. That’s literally why abstractions and tools exist.
I can describe the architecture I want in a few paragraphs and have an agent generate a Mermaid diagram. I can give it a pile of documents and have it pull together information I didn’t manually write into the prompt. I can describe the structure and content of a presentation and have it generate the actual PowerPoint. I can give it a repetitive refactoring task that I fully understand how to perform myself and have it apply that change across a codebase.
The fact that I need enough expertise to verify the result doesn’t somehow eliminate the time saved producing it.
I know how to write Java without an IDE. That doesn’t mean IntelliJ becomes useless because I need to understand Java to verify whether the code it generates, refactors, or autocompletes is correct.
And the claim that requiring expertise somehow eliminates AI’s usefulness is particularly strange. Most useful tools require expertise. IDEs require expertise. CAD software requires expertise. Excel requires expertise if you’re doing anything remotely complicated with it. Their purpose isn’t necessarily to let an unskilled person impersonate an expert; it’s to make an expert substantially more productive.
Natural language also isn’t the only interface. Modern agents operate on files, repositories, documents, databases, APIs, tool outputs, search results, and existing context. The prompt can literally be “turn this into a presentation” or “diagram this architecture.” You don’t have to painstakingly reconstruct the entire source material in prose first.
There are plenty of legitimate criticisms of generative AI: hallucinations, unreliable output, loss of control in certain workflows, mediocre prose, inappropriate use cases, people blindly trusting the output, etc.
But “if you know enough to check its work, you might as well have done the work yourself” is basically an argument for coding in Notepad because a competent programmer shouldn’t need a stupid machine-assisted IDE.
Knowing how to do something and wanting to spend your time manually doing every part of it are not the same thing.
I actually don’t need to know how my IDE works to use it. That is one benefit to not using dice as your main construction technique.
With increasing degrees of specificity, it kind of is, yeah. It only saves time in places where you don’t care about shit-quality work.
Neither do I need to know how a transformer works to use an AI agent. What does that have to do with anything?
I need to know Java to recognize whether IntelliJ’s refactoring produced sensible Java, just as I need domain expertise to recognize whether an AI agent produced sensible output. “Requires oversight and expertise” does not mean “requires understanding the internal implementation of the tool.”
No, it really isn’t, and this is probably the strangest part of your argument.
Specificity of requirements and effort of implementation are two completely different things.
“Take these 30 classes, rename this field, update its usages, add null checks at these boundaries, update the affected tests, and run the test suite” is a reasonably specific description of a task. It is quite obviously not equivalent in effort to manually performing every edit.
“Create a sequence diagram showing the interaction between these five services for this request flow” can take seconds to describe and considerably longer to manually construct.
“Take these documents, extract these specific metrics, compare them by quarter, and put the results into a PowerPoint using this existing deck as the visual template” is a perfectly comprehensible specification. Actually reading the documents, extracting the data, calculating the comparisons, creating the charts and assembling the slides is where the work is.
This distinction is the entire reason programming exists. A specification describes what computation you want performed. We don’t conclude that because SQL lets me precisely specify which data I want from a database, I might as well manually inspect every row.
And “it only saves time where you don’t care about shit-quality work” is just begging the question. You’ve defined AI output as shit and then concluded that anyone accepting AI output must therefore not care about quality.
The useful workflow isn’t “ask AI for something and blindly ship whatever comes out.” It’s “specify the task, let the machine perform the expensive mechanical portion, inspect the result, and correct or reject it where necessary.”
Sometimes that is slower than doing it yourself. Sometimes the output is shit. Sometimes AI is simply the wrong tool.
But the idea that describing a task with sufficient precision inevitably approaches the effort required to execute that task is just demonstrably false.
If that were true, half of software engineering wouldn’t exist.
There is like a very basic topological fact here that you are just failing to grasp.
No, they’re not. Implementations are just requirements with very high specificity. When you roll your eyes over the horribly inept dogshit your AI produces and then correct it, you are adding specificity to the system. This can proceed ad infinitum until you end up just doing the whole thing yourself—which I have done with Suno, because Suno is garbage.
It’s a rule that’s served me well. I think I’ll keep doing it.
It is extremely funny you would put this up as an example.
I will have to manually construct it anyway because that is literally the only way I’ll know if the AI-that-fucks-up has fucked it up or not.
I think the “very basic topological fact” you’re looking for is that you’ve discovered a continuum and then somehow convinced yourself that this means both ends of it are the same thing.
Yes, if you progressively specify every implementation detail until you’ve literally specified the complete implementation, then congratulations: you’ve eventually implemented it.
This is a genuinely fascinating discovery.
Unfortunately, absolutely nothing requires you to do that.
“Rename this field everywhere, update the tests and verify they pass” is more specific than “fix the code,” and considerably less specific than enumerating every character that needs to change in every file.
The entire useful space between those two points is apparently missing from your topology.
This might be my favourite part.
No, reviewing something does not require independently recreating it from scratch. I genuinely don’t know how you function professionally if you believe this.
I review other people’s code without first independently implementing their ticket.
I review pull requests without recreating every commit myself.
I review architecture diagrams without drawing a second architecture diagram and holding them up to the light.
I review PowerPoint decks without secretly making my own PowerPoint deck first.
I can inspect a sequence diagram and notice “service B doesn’t call service C there” without first spending twenty minutes lovingly dragging boxes and arrows around myself.
This is, in fact, one of the rather important properties of human cognition: recognizing whether something is correct can be dramatically cheaper than producing it.
Otherwise code review would involve two developers independently implementing every feature so one of them could check the other.
Your Suno example is equally compelling. You found a tool that couldn’t produce output meeting your standards for a particular task, so you stopped using it for that task.
Excellent.
I once encountered a screwdriver that was unsuitable for hammering in a nail. Thankfully I managed to resist developing a general theory of screwdrivers from the experience.
And this:
is at least refreshingly explicit. We’ve finally abandoned the argument and arrived at “I have decided AI output is shit, therefore AI output is shit.”
Which is perfectly fine as a personal preference.
It’s just considerably less interesting than the “very basic topological fact” you dressed it up as.
See, I know you can’t understand what’s being said because you’ve already relegated yourself to the role of “reviewer” and are no longer an artisan invested in the state of your craft. You have abandoned the art that supposedly makes your career.
My guy, dragging the boxes is the easy part. If you already know what these services do, what is the AI accomplishing for you? You’re already at a 0.9 on the ticket-to-implementation continuum. Like actually, what the fuck are you talking about?
Profound.
No, really—I’ve never thought about screwdrivers before. It’s really eye-opening to think about just how much technology is like hammers.
If only some tech-head were around to explain tools to me, maybe I could have convinced my dad to stop misapplying the heroin to his elbow every night.
Oh fucking hell, we’ve reached the “artisan” stage of the argument.
Yes, brother. I have abandoned the sacred art of software engineering by allowing a machine to draw rectangles for me. Somewhere, an ancient guild master has snapped his mechanical keyboard over his knee in disgust.
This is exactly the kind of self-important wank that happens when someone realizes the technical argument isn’t going particularly well and retreats into aesthetics.
IT’S DRAGGING THE FUCKING BOXES.
Holy shit.
That is literally the point.
I know what the services do. I know which services communicate. I know what the request flow should look like. I describe that information, the machine performs the tedious mechanical transformation into a diagram, and then I verify that the representation matches what I intended.
You’ve somehow managed to identify the exact value proposition while presenting it as a rebuttal.
“But if you already know what you want the PowerPoint to say, what is AI accomplishing by making the PowerPoint?”
Making. The. Fucking. PowerPoint.
The intellectual work and the mechanical production of an artifact are not the same thing. This really shouldn’t require a fucking topology seminar.
And no, knowing that A calls B, B publishes an event, and C consumes it does not mean I’m “0.9” of the way through creating a polished diagram any more than knowing the numbers I want plotted means I’m 90% of the way through formatting a chart.
You’ve simply assigned essentially zero value to execution time and then triumphantly discovered that tools which reduce execution time have essentially zero value.
Very impressive result.
The “artisan” thing makes this even funnier because apparently craftsmanship, in your conception of software engineering, isn’t understanding systems, making good architectural decisions, identifying tradeoffs, debugging difficult problems, or communicating designs clearly.
No, the sacred craft begins when I manually position the fucking rectangle.
And your argument about verification is still just as broken as it was before.
I don’t need to independently produce an artifact to determine whether it represents something I already understand correctly. That’s why reviewing a 20-line diff can take thirty seconds even though discovering and implementing the correct change might have taken someone an hour.
Recognition and generation are different cognitive tasks with different costs.
You keep trying to erase that distinction because your entire “ticket-to-implementation continuum” depends on it not existing.
I agree it wasn’t particularly profound.
It wasn’t supposed to be.
It was an extremely simple analogy for an extremely simple point, and somehow we’ve now established that even that needed further explanation.
But please, tell me more about the lost artisanal tradition of manually drawing sequence-diagram arrows. I’m beginning to understand why AI isn’t saving you any time.
Any information that whatever you’re working on hinges upon, you need to already know and have confirmed before you start working on it. So not only did you need to look it up anyway, only you know what aspects of that information are most important for the goals of your work. Of course, there can also be less vital pieces of information that you may consult as you work, like maybe you want to compare the size of something with football fields, to make it harder to understand. Undoubtedly an AI can do that for you, but in the end you still need to look it up to verify it, so you haven’t really saved any time or effort.
It’s a similar kind of story for things like generating PowerPoint slides. Slides based on what? An article? The script? Slides that just summarise the prose make for a terrible presentation and aren’t any better as a starting point for one. Also, anything that can be described using less time and (cognitive) energy than to just write it in Mermaid code, isn’t worth making a diagram out of.
This is comparison makes no sense, because an IDE is the very opposite of AI. There is little value in a person manually performing the same algorithms over and over again, other than maybe for a learning process. So if they can be automated, it just means that people can focus their efforts on doing the work that requires, you know, personhood. AI is the opposite in that it’s useless for procedural automation, and the only thing it can do automatically is the kind of work that can only have value if a person is doing it.
Ok
And it is usually half right, its really a mess, unless you give it a really good rough draft outline.
I find writing the code is the easy part. The difficult part is figuring out what the requirements are, fitting together all of the data relationships, figuring out the security so the correct people and systems have access to the data. To do these things I need very specific knowledge of the systems I’m working on, knowledge the AI doesn’t have.
I could see it could give you a simple interface that’s similar to something it’s been trained on. But it’s capabilities are very limited in terms of doing anything novel. It can’t actually understand a problem, it can only give some code similar to problems that exist in it’s training data. Sometimes that’s useful, since at times I do have to solve problems that’s been solved by others. But most of the time the AI can’t understand what I’m trying to do and it’s easier to write the code than it is to try to explain to an LLM how to write the code I want it to write.
Maybe you are doing some exotic stuff, but for me it’s more than capable of writing code, coding is mostly about applying existing patterns to solve known problems, very few programmers deal with novel problems.
Design Patterns book has been out for what? 2 decades, and it’s not outdated.
For good team interoperability you want to have code that’s standardized, that’s also where LLMs excel at.
It’s a nice productivity tool, just like an IDE is a nice productivity tool
In software engineering, sure there’s patterns, but that’s just guidelines. Eventually you run up against a problem where an something you don’t have control over isn’t 100% reliable so you have to think through how to handle that scenario. Maybe you retry an API call, maybe you notify some people about the issue, it’s all context dependent what you need to do. The AI doesn’t know what to do, because how would it? There are a massive (I won’t say infinite, but in terms of a human lifespan it may as well be) number of combinations of technology X connecting to technology Y. So there is always going to be a great many problems that no one has ever encountered before. LLMs increasing the number of features in the software doesn’t solve those kinds of problems it just increases the number of problem.
I think it’s fine to think of it as a tool, like an IDE. But just like an IDE, it doesn’t solve the problems, the person using the tool solves the problem.
For instance today, the LLM explained to me how to enable SSL certificate negotiation with TLS 1.3 some shitty IIS setup I have to maintain. I used the LLM because I figured that I’m probably not the only one that has seen that issue. Now the problem I have to deal with is whether the software that updates the certs might break the config, that’s a little less likely the LLM will have a reliable solution to. I might just wait until the software updates the cert an manually test if it broke. The day before I had to launch some stuff in the middle of the night so I wouldn’t interfere with business operations. The launch was to change something from single linked list to a doubly linked list which is important for reasons I can’t explain now. I mean I would explain it, but honestly I can’t remember why. I just have in my notes that it needs to be a doubly linked list for the recursion to work properly. Maybe next week when I fix the FE I’ll remember why, but if I was correct many months ago (it’s a low priority issue), the FE should now have the data it needs to solve whatever problem was there.
So yeah, I use LLMs sometimes for problems that I think other people have seen before but sure as hell can’t be driving on what I do. Someone has to make the various pieces of software work together, know the business the software is being used in. More software means more problems that someone has to figure out. If you make n pieces of software with LLMs, you’re make n! problems to solve.
Yes AI or LLM isn’t able to code solution itself, but it can fill in a lot of gaps based on what you tell it, it can copy existing patterns.
And you can direct it, it’s a tool like an IDE, just much better .