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.
Oh fucking hell, we’ve reached the “artisan” stage of the argument.
You’re being hired as one, so I don’t understand what all this contempt is for. I didn’t realize you hated your profession so much.
If you spend only 30-seconds looking at my 20-line changes, I’m just going to skip you and hit the merge button myself. What value add are you possibly providing. A check mark?
I know what the services do. I know which services communicate. I know what the request flow should look like.
Oh, I see. So, by
“Create a sequence diagram showing the interaction between these five services for this request flow”
You did not mean that the AI would discover these connections for you, something I might consider to be saved time, you meant that you would write:
Service A connects to service B. Service A connects to service C. Service B connects to service D. Service D connects to service E with the label “Once per day”. …
You know, this is starting to look like a fairly typical mermaid diagram. I suppose you’re counting the semi-colons as saved time?
You keep trying to erase that distinction because your entire “ticket-to-implementation” continuum depends on it not existing.
My friend, my beloved brother in arms, it’s not just Suno. This “screwdriver” you’re fond of does not live up to my standards. At all. I can only assume that you are satisfied by the tangled mess of bullshit I’ve seen these AI-programmers produce because you care fuck-all about the work you’re doing.
If I have it generate a sequence diagram, and it comes out wrong, and I correct it, and I have it generate a new sequence diagram, and it comes out wrong, and I have to correct it, and I have it generate a new sequence diagram, and it comes out wrong again—I may as well just have made the damn thing myself. This has been my experience every fucking time.
You are free to let the buzzards spread your garden seeds for you, I suppose. But not in my garden. I would ban you from my repos so fucking fast.
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.
You’re being hired as one, so I don’t understand what all this contempt is for. I didn’t realize you hated your profession so much.
If you spend only 30-seconds looking at my 20-line changes, I’m just going to skip you and hit the merge button myself. What value add are you possibly providing. A check mark?
Oh, I see. So, by
You did not mean that the AI would discover these connections for you, something I might consider to be saved time, you meant that you would write:
You know, this is starting to look like a fairly typical mermaid diagram. I suppose you’re counting the semi-colons as saved time?
My friend, my beloved brother in arms, it’s not just Suno. This “screwdriver” you’re fond of does not live up to my standards. At all. I can only assume that you are satisfied by the tangled mess of bullshit I’ve seen these AI-programmers produce because you care fuck-all about the work you’re doing.
If I have it generate a sequence diagram, and it comes out wrong, and I correct it, and I have it generate a new sequence diagram, and it comes out wrong, and I have to correct it, and I have it generate a new sequence diagram, and it comes out wrong again—I may as well just have made the damn thing myself. This has been my experience every fucking time.
You are free to let the buzzards spread your garden seeds for you, I suppose. But not in my garden. I would ban you from my repos so fucking fast.