• V0ldek@awful.systems
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    6 hours ago

    Reading this I had a small epiphany about something I’ve been observing for a really long time wrt. programmers. That term sounds like something I would use to describe a specific category inexperienced or experienced-but-terrible programmers before the entire LLM disaster. Like this very specific kind of coding based on not giving a fuck, where you haphazardly copy snippets from the internet, write no tests, debug based on divine guidance.

    You might know the term “philosophical zombie”. Its usefulness in philosophy aside, I’d call this kind of coder a “programming zombie”. For a programmer, the process of coding is a quite complex internal experience. We build large models inside our minds to capture the context in which we need to perform the task, often spanning multiple abstraction levels. When you’re working on a small project you have a quite detailed model of e.g. the current file you’re working in, but also awareness of the other parts of the projects and how they connect to the file you’re in right now. Everyone has this to some extent after some experience with coding. People who are really good at coding sometimes seem from the outside like fucking magicians, because you’ll come to them with some small issue in one part of the codebase and in milliseconds they’ll be able to utter shit like “ah, this is because of how module X interacts with this syscall in Y.cpp when you’re running an old version of the kernel”, and they’ll be right. In their head they have this intricate deep understanding of what they’re working on and can pull connections and explenations seemingly out of thin air.

    A programming zombie doesn’t have any of that. The moment something doesn’t work and their usual MO of copying or changing random things until it works doesn’t produce effects, they’re completely stuck. It’s like they don’t have a way to reason about their program, they don’t have a mental model of what they’re actually doing. This is what you get when you treat code as just some words on the screen. And it’s something I’ve always struggled to understand and explain, because I don’t actually know how to teach someone to have that process. It seems like an intrinsic part of the job, when I tell you “I’m programming” I don’t mean “I’m writing some funny characters on the screen”, I mean I’m designing a program, the same way an electrician isn’t just connecting random wires and hoping for the best but rather has some larger electrical network in mind.

    In the before times, so far ago I wasn’t even born yet, it was probably quite hard to be a programming zombie because everything about programming was so much harder. I mean, a punchcard had to be a great filter against people without mental models of code. People on interviews started using FizzBuzz to try and weed out people who can write code, but cannot code, and it kinda worked for some time. But now? We’re in the prime time of a vibecoder. You don’t have to know fucking anything now. If you’re a Blockchain Programmer then your code probably doesn’t even run anywhere. It’s all just vibes, man. We’re pretending to be engineers by pretending to write code that we pretend we tested, and then our customers pretend to use it. In actuality it’s code shat out by an LLM deployed to a site visited only by search engine bots, advertising an app with no real use, in service of a number going up somewhere. And what’s that number based on? Yup, just vibes.

    Now I don’t know if this is true because I’m only definitionally a writer in that I write a lot of prose, but the point of “this is what happens when you treat code as just text” seems to generalize to an eerie extent when we’re talking about LLMs. Cause that’s what they do, right? Writing is not just writing words, when you write an article you have a mental model of something more abstract that you’re trying to bring to life with the words. The structure and flow are something that originates from your inner understanding of what you’re trying to convey, it’s just expressed by the language. As in, language is just a tool we use to convey abstract concepts, the same way programming languages are just a tool we use to express abstract functionality. The way LLMs are advertised and so often used puts this on its head, the text is the primary product and a goal in and of itself. Why does LLM poetry suck? Because it’s just words. There’s no poem there, it’s just words arranged in a way to resemble a poem. It’s the same reason their prosaic writing sucks. The same reason its code sucks. Only if you perceive poetry as flowery words, prose as long passages of text, and programs as keywords on a screen, can you be fooled into thinking there’s any substance behind the LLM vibes.

    Anyway, I kinda lost myself in my harrowing philosophical nightmare that is our tragic reality, in conclusion ye, just throwing random AI garbage into your code and seeing if it sticks is very much what I’d call vibecoding.

    • analoghobbyist@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      5 hours ago

      I really appreciate this take. It was able to capture something I couldn’t properly articulate. I am learning programming as a hobby and I am actively trying to avoid LLMs and other things I see as “cheating” because I want to actually learn how to program, not just copy and paste AI slop. Plus, the exercise of having that mental model of what you’re doing is what appeals to me since it’s forcing me to think in ways that I am not accustomed to thinking. That’s the appeal for me. Not the act of mashing a keyboard and hoping something usable comes out.