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.
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.
Lmao.
Yes, I hate software engineering because I donât derive spiritual fulfillment from manually performing every mechanical step involved in producing software artifacts.
Do you compile by hand too, or is there an artisanal exemption for that?
I like the part of my profession where I solve problems. I donât need to cosplay as a 14th-century fucking stonemason every time a rectangle needs moving.
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?
This is incredible.
Do you believe code review has a minimum billable duration?
If you change a conditional from && to || and I understand the surrounding code, how many minutes must I stare at it before my review becomes artisanal enough for you?
Should I set a timer?
âSorry guys, found the bug after 17 seconds, but Dave says recognizing correctness faster than producing it is impossible, so Iâm going to stare at the diff for another 14 minutes to add value.â
You are once again accidentally demonstrating the exact distinction youâre arguing doesnât exist.
You did not mean that the AI would discover these connections for you
No, you absolute turnip.
And notice how youâve quietly changed the argument again.
The original claim was that sufficiently describing an output approaches the effort of producing it.
Now apparently AI only saves time if it discovers information I donât know.
Those arenât remotely the same claim.
Also, why the fuck would my prompt be:
Service A connects to service B. Service A connects to service C. Service B connects to service DâŠ
I can point the agent at the fucking codebase.
âTrace the request flow starting at this controller and produce a Mermaid sequence diagram. These five services are relevant.â
There. Done.
Then I read the diagram and compare it against a system I already understand.
Sometimes itâll find something I forgot. Sometimes itâll fuck something up. Sometimes Iâll correct it. Sometimes Iâll throw the whole thing away because the output is garbage.
This really isnât the metaphysical crisis youâre desperately trying to turn it into.
This has been my experience every fucking time.
OH.
There it is.
After all the topology and continua and grand theories of craftsmanship, weâve finally reached the actual argument:
âI tried AI tools, they produced results below my standards, and correcting them took me longer than doing the work myself.â
Thatâs completely reasonable!
Seriously. Thatâs a perfectly coherent reason for you not to use them for those tasks.
You could have said that about six comments ago and saved us both the TED Talk about the ontology of requirements.
Where you keep disappearing up your own ass is taking âthis tool does not produce useful results in my workflowsâ and promoting it into âtherefore anyone getting productivity from it must produce shit work and doesnât care about their craft.â
Maybe your tasks are different.
Maybe your standards are different.
Maybe the tools work better on my codebase.
Maybe Iâm better at identifying tasks where theyâre useful.
Maybe Iâm better at operating them.
Maybe Iâm producing absolute dogshit and havenât realized it.
All of those are empirical possibilities.
But youâve somehow excluded every explanation except the one where youâre an artisan and everyone getting value from the tool is a lazy philistine destroying software engineering.
I would ban you from my repos so fucking fast.
Oh no.
Anyway, while youâre guarding the sacred garden from the buzzards, Iâll continue doing the intellectually demanding work myself and automating whatever boring shit I can get a machine to do reliably.
If it produces garbage, I donât use it.
If it saves me 30 minutes, I do.
Itâs called using tools.
You somehow turned it into a fucking personality type.
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.
Lmao.
Yes, I hate software engineering because I donât derive spiritual fulfillment from manually performing every mechanical step involved in producing software artifacts.
Do you compile by hand too, or is there an artisanal exemption for that?
I like the part of my profession where I solve problems. I donât need to cosplay as a 14th-century fucking stonemason every time a rectangle needs moving.
This is incredible.
Do you believe code review has a minimum billable duration?
If you change a conditional from && to || and I understand the surrounding code, how many minutes must I stare at it before my review becomes artisanal enough for you?
Should I set a timer?
âSorry guys, found the bug after 17 seconds, but Dave says recognizing correctness faster than producing it is impossible, so Iâm going to stare at the diff for another 14 minutes to add value.â
You are once again accidentally demonstrating the exact distinction youâre arguing doesnât exist.
No, you absolute turnip.
And notice how youâve quietly changed the argument again.
The original claim was that sufficiently describing an output approaches the effort of producing it.
Now apparently AI only saves time if it discovers information I donât know.
Those arenât remotely the same claim.
Also, why the fuck would my prompt be:
I can point the agent at the fucking codebase.
âTrace the request flow starting at this controller and produce a Mermaid sequence diagram. These five services are relevant.â
There. Done.
Then I read the diagram and compare it against a system I already understand.
Sometimes itâll find something I forgot. Sometimes itâll fuck something up. Sometimes Iâll correct it. Sometimes Iâll throw the whole thing away because the output is garbage.
This really isnât the metaphysical crisis youâre desperately trying to turn it into.
OH.
There it is.
After all the topology and continua and grand theories of craftsmanship, weâve finally reached the actual argument:
âI tried AI tools, they produced results below my standards, and correcting them took me longer than doing the work myself.â
Thatâs completely reasonable!
Seriously. Thatâs a perfectly coherent reason for you not to use them for those tasks.
You could have said that about six comments ago and saved us both the TED Talk about the ontology of requirements.
Where you keep disappearing up your own ass is taking âthis tool does not produce useful results in my workflowsâ and promoting it into âtherefore anyone getting productivity from it must produce shit work and doesnât care about their craft.â
Maybe your tasks are different.
Maybe your standards are different.
Maybe the tools work better on my codebase.
Maybe Iâm better at identifying tasks where theyâre useful.
Maybe Iâm better at operating them.
Maybe Iâm producing absolute dogshit and havenât realized it.
All of those are empirical possibilities.
But youâve somehow excluded every explanation except the one where youâre an artisan and everyone getting value from the tool is a lazy philistine destroying software engineering.
Oh no.
Anyway, while youâre guarding the sacred garden from the buzzards, Iâll continue doing the intellectually demanding work myself and automating whatever boring shit I can get a machine to do reliably.
If it produces garbage, I donât use it.
If it saves me 30 minutes, I do.
Itâs called using tools.
You somehow turned it into a fucking personality type.