tux snipes-hesitation

you are viewing a single comment's thread
view the rest of the comments
[–] 28 points 7 hours ago* (9 children)

In high profile projects like the Linux kernel, probably yeah but I think people are vastly overstating the quality of the code the average developer writes and also their overall knowledge and skill level, I've seen some shit early in my career where looking back on it now I wish I was reading AI slop, and this was software that earned millions a year.

Fact is a lot of important code that a lot of people depended on has always been kinda shit and yet it worked because there was enough manpower to keep it clanking on.

  • source
  • parent
  • hideshow 9 child comments
  • [–] 9 points 3 hours ago (3 children)

    This notion of “quality of output” misses something important though, which I think our economic system predisposes us to ignore.

    I think most of us have this concept that the function signature of “working on code” is something like:

    implement(spec): CodeChanges;
    

    But I think this hides some stateful side-effects. There’s a monadic thing going on here, and I think it’s really more like:

    implement(knowledge, spec): [CodeChanges, KnowledgeBundle];
    

    …where KnowledgeBundle is a whole bunch of things: latent info about how things currently work, obviously, but also the yet-unnamed missing abstractions you noticed, the existing named abstractions that are starting to strain — basically the sense of the trajectory of the codebase.

    Even really shitty programmers get some sense of the trajectory of the codebase, but this is something that even the best frontier models fail at.

    Tangent:

    I saw a pretty cool visualization of Kalman filters the other day (substantially AI-generated, coincidentally), and I thought it matched something about this dynamic.

    If you’re only concerned about the “next step”, aka “quality of output”, your error will accumulate and you’ll drift over time. You need to be able to evaluate where you are, so you can correct that error and stay on course. And to do that, you need to be present inside of the code and feel where the pain points are, or your estimation will be so far off that it’s useless.

    I think our economic focus on “output” and our obliviousness to internal states (or even denial that they exist at all) is going to make it very easy to fall into the trap of taking a long series of next steps that individually look very sensible, but over time accumulate unmitigated error and drift towards disaster.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 1 hour ago

    Even really shitty programmers get some sense of the trajectory of the codebase, but this is something that even the best frontier models fail at.

    Eh in my experience even good programmers are kinda bad at estimate the future trajectory of the codebase, I've seen experienced people design fancy abstractions only for those abstractions to fall flat on their face when future requirements present themselves.

    If you’re only concerned about the “next step”, aka “quality of output”, your error will accumulate and you’ll drift over time. You need to be able to evaluate where you are, so you can correct that error and stay on course. And to do that, you need to be present inside of the code and feel where the pain points are, or your estimation will be so far off that it’s useless.

    I feel like this inevitably happens to pretty much every piece of software, hell I'd bet Torvalds regrets a some technical decisions he made with Linux decades ago. Are LLMs worse at this than humans? Probably, but I'm not sure by how much.

    I dunno maybe I'm biased because I was always working with fairly crappy and haphazardly written commercial software but I don't see LLMs being that much worse at writing code than humans in general.

  • source
  • parent
  • [–] 13 points 4 hours ago (1 child)

    Youre right about quality but the problem isn't just code quality, its also the sheer volume of code and its unmaintainability. Quality has always been pretty low in commercial software, but there were practical limits to how much of it could be created, and with enough labor thrown at testing and maintenance, as you say it clanked on.

    When it's easier to just generate a whole new page in the UI than fix bugs or make usability improvements though, when it's easier to generate a whole new separate app than to introduce a new feature into the existing one, and when completely nontechnical people are running around doing this stuff without understanding the consequences, risks, etc. I think its very fair to describe it as a dark age. Large parts of the industry and the world are already there in the thick of it, and it is bad.

    Social structures will adapt but that won't bring back the old way of doing things or reduce reliance on AI, if anything it will entrench it further, until/unless costs become prohibitive

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 1 hour ago

    When it's easier to just generate a whole new page in the UI than fix bugs or make usability improvements though, when it's easier to generate a whole new separate app than to introduce a new feature into the existing one

    That's a good point actually, before software became stable and usable only after patching it up after it collided with the real world and real users. If you're constantly rewriting shit you're constantly going to go one step forward two steps back.

  • source
  • parent
  • [–] 12 points 4 hours ago (2 children)

    I don't know how things in the industry are now, but back in my day you didn't deploy a Microsoft product until the second service pack had been released. Trusting software to be reliable and secure was always a no no.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 6 points 3 hours ago (1 child)

    Yeah, computer tech used to be real dogshit back in the day. Everyone waxes poetic about Windows Xp but if we’re actually being honest, Windows 11 blows it out of the water

  • source
  • parent
  • hideshow 1 child comment