• 0 Posts
  • 45 Comments
Joined 2 months ago
cake
Cake day: June 27th, 2026

help-circle
  • 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.


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



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


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


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