We’re about to learn a painful lesson about delayed gratification in software engineering.

New data from China, 26,811 students tracked January 2023 through June 2025. Students using AI for homework saw their scores jump 20 percent. Completion time dropped nearly half. They aced the assignments.

Then exam season came. Those same students scored 20 to 40 percent worse when they couldn’t use the tool.

The homework phase is over. The exam phase is coming.

We’re doing this in software right now. Vibe coding feels incredible. Features ship fast. Nobody’s asking what happens in Month 18 when the original dev has left and nobody understands the codebase.

Commercial pilots fly with autopilot for most of every flight. They’re required to maintain manual flying proficiency regardless. If the system fails mid-air and the pilot can’t take over, people die.

Most teams using AI right now have forgotten how to fly manually. They’ve become passengers in their own systems. The autopilot flies, nobody checks instruments, and the first sign of trouble will be a breach notice or outage.

Three rules:

  1. Command the mission. Define architecture before prompting. Ambiguity kills in code and in flight. Delegate selectively. Offload mechanical work. Keep design and security reviews human. Verify everything. Audit before production.
  1. Never trust the automation without checking instruments.
  1. Quick wins feel good. Sustainable engineering feels boring. Boring keeps systems standing.

Organisations surviving the next two years won’t ship the fastest. They’ll be the ones who remember how to fly without the aids.


people insisting that you actually be skilled, independently of your tools, doesn’t make them Luddites. Rather, being unable to do so makes you a phony.

  • FaceDeer@fedia.io
    link
    fedilink
    arrow-up
    11
    arrow-down
    23
    ·
    1 day ago

    Nobody’s asking what happens in Month 18 when the original dev has left and nobody understands the codebase.

    Throughout my career, I’ve often had to sync a git repository for some random project that I’ve never worked with before and then had to muddle through whatever was in there hoping that the documentation was vaguely complete and accurate.

    Nowadays it’s actually much easier. If the documentation isn’t complete or accurate I just turn my coding agent loose on it and tell it to write the documentation.

    I get the impression that the guy writing this hasn’t actually used modern coding agents, this is not a problem.

    I see coding AI as being similar to a compiler. Before compilers came along programmers had to work in assembly language. Nowadays very few programmers ever do anything in assembly and that’s perfectly fine.

    • Pup Biru@aussie.zone
      link
      fedilink
      English
      arrow-up
      10
      ·
      1 day ago

      i’d say it’s not quite like a compiler because you still need to know what the code does… a compiler you largely don’t care, and it’s deterministic… an LLM hallucinates, so you can’t just trust it, which means you have to be able to assess when it’s doing the wrong thing

      i agree that setting an agent going helping you learn a codebase is reasonable, largely because it can quickly point out connections in the code quicker than you can understand the architecture, and its guesses are usually just as good as your guesses until you get knowledgeable with the codebase

      however, and that’s a very load-bearing however, i don’t think you should just jump into a codebase and just go ahead and tell the LLM to write new code without understanding what it’s done… the understanding is exactly what this graph is trying to show: actually learning is critical, so your review of the code becomes doubly important: you’re gaining institutional knowledge, and you’re making sure the output isn’t slop

      • locuester@lemmy.zip
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        6
        ·
        1 day ago

        an LLM hallucinates, so you can’t just trust it, which means you have to be able to assess when it’s doing the wrong thing

        Unless you can define what the right thing is. Then you just have it write proper tests, and it’s able to verify itself.

        • trebach@sh.itjust.works
          link
          fedilink
          arrow-up
          4
          ·
          24 hours ago
          Assert.IsTrue(true);
          

          There! That’s a passing test but doesn’t test anything. That’s why you write your own tests instead of having a machine do it for you.

        • Pup Biru@aussie.zone
          link
          fedilink
          English
          arrow-up
          3
          ·
          1 day ago

          an LLM frequently writes shit tests… you’re just moving the architecture problem: either you properly understand and review the initial code, which means you catch not just binary “correct input/output” but also performance, layout, DRY, style, heaps of things

          OR

          you properly review the tests because “passing” doesn’t mean tested

        • Honytawk@discuss.tchncs.de
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 day ago

          Don’t let an AI verify itself, it will just make the exact same mistakes.

          Verification should still be done by a human. You can use a different AI in addition to human verification, but a human should still be in the chain somewhere.

    • idriss@lemmy.ml
      link
      fedilink
      arrow-up
      6
      ·
      1 day ago

      (talking about non-trivial code bases here)

      Not being able to understand a code base and needing an agent to do that is one thing (skill issue I guess), but not knowing the intention behind a piece of program is a complete different thing (the agent can’t read the mind of the original author on why certain business compromise was made, how the design evolved to this point, …).

      I get the feeling all these people defending vibe coding never worked on a non-trivial project and something that has to live and serve large volume of requests for 5+ years.

      • FaceDeer@fedia.io
        link
        fedilink
        arrow-up
        2
        ·
        20 hours ago

        Heck, I’ve been using them to untangle years worth of me working on codebases. I’ve got a lot of random little scripts and “applications” and whatnot that I threw together to perform various tasks on my home computer over the years and most of them were extremely sloppy because “who cares, this is just for me and just for this one weird thing I need to do.” I’ve been pointing my AI agent at these things and telling it to clean them up. I’m hoping this isn’t putting me a lot higher on Skynet’s naughty list when the time comes for the robots to punish all those who have been mean to them.

    • BlueÆther@no.lastname.nz
      link
      fedilink
      English
      arrow-up
      7
      arrow-down
      1
      ·
      1 day ago

      I’m no dev, but did do my HND in computing some 25 years ago. I have also tinkered with scripts to solve an itch and have has plenty of VBA and of late DAX and power query.

      I did a project for myself around a year ago that was much larger than I normally would these days and I used Gemini. It was a constant battle with the LLM (man it’s hard not to gender and personify these LLMs) to keep it on track and not keep breaking shit all the time. It struggled to writ valid rules for it’s own firebase/firestore. It generally felt like a bad time.

      This past week end I got codex to migrate the PWA from google’s services and database into a selfhostable docker stack. It was a pleasure, it documented the whole process map, built a full test environment, followed through and imported my data. It the suggested a few improvements. It even rewrote a a complex equation that Gemini could nust not get correct and added manufacture safe/max bounds.

      all this to say ‘yes, modern agents do seem to do a good job of a codebase that they have never seen’

      • FaceDeer@fedia.io
        link
        fedilink
        arrow-up
        7
        arrow-down
        2
        ·
        1 day ago

        Yeah, I’ve been tinkering with coding agents for a while now and it feels like some sort of “phase transition” happened earlier this year - the models and their harnesses went from being the sort of clumsy barely-passable student coders that people make fun of to being actually highly competent. Lately even the small local models have reached that level - I’ve been using Qwen3.8 27B on my own machine and it’s been doing just fine. I suspect a lot of the folks making fun of them tried them early on and wrote them off, not giving the latest versions a second chance.

        The compiler comparison works there too, IMO. I remember back when I was learning the tricks of the trade there were all sorts of ways you were supposed to write code to trick compilers into generating more efficient results. Coding standards would say to use ++i instead of i++ for incrementing loop indices, use x*0.1 instead of x/10 because division was way more expensive than multiplication, using memcpy instead of copying values with =, using int instead of bool, and so forth. Lots of stuff. Some of it was never useful, it was just folklore and superstition. Other stuff did make a difference with early compilers but modern ones know these tricks themselves and can often apply them better than the human programmer can. So the old-school greybeards who still insist on doing that stuff can actually make things worse these days (disclaimer: my beard is pretty grey these days too).

        I expect so too will this “hah, vibe slop” attitude eventually pass away. AI is getting quite good quite quickly.

          • FaceDeer@fedia.io
            link
            fedilink
            arrow-up
            3
            ·
            1 day ago

            To be serious for a moment here on programmer_humor, yeah, it’s a real puzzler. For now there’s still a role for programmers like us in all this because we’re still good at knowing how to translate the requirements of non-technical people into the things we actually ask the coding agents to build for us. But AI’s getting good at that too. As might be expected, they’re language models so interpreting what people tell them using language is kind of their jam.

            If I were advising someone who’s looking at whether to get into programming as a profession right now, I’d tell them to only go that route if they had the resources to take a mulligan on their education and try something else if a couple of years from now it turns out that the robots have completely taken the job over. I think it’s a real possibility, and will lead to some interesting times indeed.

            Until then, I guess we keep making jokes about it? Just make sure not to take them too seriously. AIs can count how many Rs are in “strawberry” now. They can whip up a bit of Javascript to do it for them in their harness’ sandbox.