Developer and refugee from Reddit

  • 7 Posts
  • 286 Comments
Joined 2 years ago
cake
Cake day: July 2nd, 2023

help-circle


  • I don’t think that comparison is apt. Unlike with music, there are objectively inefficient and badly-executed ways for a program to function, and if you’re only “vibing,” you’re not going to know the difference between such code and clean, efficient code.

    Case in point: Typescript. Typescript is a language built on top of JavaScript with the intent of bringing strong and static type-checking sanity to it. Using Copilot, it’s possible to create a Typescript application without actually knowing the language. However, what you’ll end up with will almost certainly be full of the any type, which turns off type-checking and negates the benefits of using Typescript in the first place. Your code will be much harder to maintain and fix bugs in. And you won’t know that, because you’re not a Typescript developer, you’re a Copilot “developer.”

    I’m not trying to downplay the benefits of using Copilot. Like I said, it’s something I use myself, and it’s a really helpful tool in the developer toolbox. But it’s not the only tool in the toolbox for anyone but “vibe coders.”


  • I’m of two minds on this.

    On the one hand, I find tools like Copilot integrated into VS Code to be useful for taking some of the drudgery out of coding. Case in point: If I need to create a new schema for an ORM, having Copilot generate it according to my specifications is speedy and helpful. It will be more complete and thorough than the first draft I’d come up with on my own.

    On the other, the actual code produced by Copilot is always rife with errors and bloat, it’s never DRY, and if you’re not already a competent developer and try to “vibe” your way to usablility, what you’ll end up with will frankly suck, even if you get it into a state where it technically “works.”

    Leaning into the microwave analogy, it’s the difference between being a chef who happens to have a microwave as one of their kitchen tools, and being a “chef” who only knows how to follow microwave instructions on prepackaged meals. “Vibe coders” aren’t coders at all and have no real grasp of what they’re creating or why it’s not as good as what real coders build, even if both make use of the same tools.







  • But it still manages to fuck it up.

    I’ve been experimenting with using Claude’s Sonnet model in Copilot in agent mode for my job, and one of the things that’s become abundantly clear is that it has certain types of behavior that are heavily represented in the model, so it assumes you want that behavior even if you explicitly tell it you don’t.

    Say you’re working in a yarn workspaces project, and you instruct Copilot to build and test a new dashboard using an instruction file. You’ll need to include explicit and repeated reminders all throughout the file to use yarn, not NPM, because even though yarn is very popular today, there are so many older examples of using NPM in its model that it’s just going to assume that’s what you actually want - thereby fucking up your codebase.

    I’ve also had lots of cases where I tell it I don’t want it to edit any code, just to analyze and explain something that’s there and how to update it… and then I have to stop it from editing code anyway, because halfway through it forgot that I didn’t want edits, just explanations.





  • Not true. Not entirely false, but not true.

    Large language models have their legitimate uses. I’m currently in the middle of a project I’m building with assistance from Copilot for VS Code, for example.

    The problem is that people think LLMs are actual AI. They’re not.

    My favorite example - and the reason I often cite for why companies that try to fire all their developers are run by idiots - is the capacity for joined up thinking.

    Consider these two facts:

    1. Humans are mammals.
    2. Humans build dams.

    Those two facts are unrelated except insofar as both involve humans, but if I were to say “Can you list all the dam-building mammals for me,” you would first think of beavers, then - given a moment’s thought - could accurately answer that humans do as well.

    Here’s how it goes with Gemini right now:

    Now Gemini clearly has the information that humans are mammals somewhere in its model. It also clearly has the information that humans build dams somewhere in its model. But it has no means of joining those two tidbits together.

    Some LLMs do better on this simple test of joined-up thinking, and worse on other similar tests. It’s kind of a crapshoot, and doesn’t instill confidence that LLMs are up for the task of complex thought.

    And of course, the information-scraping bots that feed LLMs like Gemini and ChatGPT will find conversations like this one, and update their models accordingly. In a few months, Gemini will probably include humans in its list. But that’s not a sign of being able to engage in novel joined-up thinking, it’s just an increase in the size and complexity of the dataset.



  • It’s absolutely taking off in some areas. But there’s also an unsustainable bubble because AI of the large language model variety is being hyped like crazy for absolutely everything when there are plenty of things it’s not only not ready for yet, but that it fundamentally cannot do.

    You don’t have to dig very deeply to find reports of companies that tried to replace significant chunks of their workforces with AI, only to find out middle managers giving ChatGPT vague commands weren’t capable of replicating the work of someone who actually knows what they’re doing.

    That’s been particularly common with technology companies that moved very quickly to replace developers, and then ended up hiring them back because developers can think about the entire project and how it fits together, while AI can’t - and never will as long as the AI everyone’s using is built around large language models.

    Inevitably, being able to work with and use AI is going to be a job requirement in a lot of industries going forward. Software development is already changing to include a lot of work with Copilot. But any actual developer knows that you don’t just deploy whatever Copilot comes up with, because - let’s be blunt - it’s going to be very bad code. It won’t be DRY, it will be bloated, it will implement things in nonsensical ways, it will hallucinate… You use it as a starting point, and then sculpt it into shape.

    It will make you faster, especially as you get good at the emerging software development technique of “programming” the AI assistant via carefully structured commands.

    And there’s no doubt that this speed will result in some permanent job losses eventually. But AI is still leagues away from being able to perform the joined-up thinking that allows actual human developers to come up with those structured commands in the first place, as a lot of companies that tried to do away with humans have discovered.

    Every few years, something comes along that non-developers declare will replace developers. AI is the closest yet, but until it can do joined-up thinking, it’s still just a pipe-dream for MBAs.