I think it helps experienced coders a lot more than junior coders because you see the mistakes it makes, fix them, and save time.
This is interesting, because what I've heard before is that it mostly helps juniors move forward faster, while hurting their qualiity as a trade-off, but using it for experiments can help people progress in skill.
@clacke my fear with junior developers is that you "don't know what you don't know" and that is why more bugs get through and it can be actally dangerous. I don't know if the payoff is there.
Now, I do use the AI to experiment. I think it's a bad idea though to copy-paste that code in most cases. What you do is you experiment around in a sandbox and then copy over the parts by hand.
Another way I use it is, when I completely don't know where to start. I can often get it to give me a very small "this is how you even get it started" example. I may have over 30 years of experience but I don't know anything about ${NEW_LANGUAGE} at all.
So one last thing I'll say is, I have very gradually moved from internet searching for answers to problems to, just asking the AI first. It saves time because a bunch of guides really really suck. And I don't just mean the ChatGPT-generated garbage, which is increasing rapidly. I mean even official docs and legitimate blogs trying to help. Examples often omit setup or boilerplate to make the code work. When you ask Claude it straight up tells you what you need to do beforehand, and if you don't understand a part you ask for clarification and it gives you one! I have found that code examples that Claude give me are more comprehensive than guides from websites. Also it JUST gives me the technical stuff, it doesn't wrap it up in a SEO "story of my life before I get to the recipe", or a pile of ads. Oh also, Claude gives you references to where it got its answers from.
It works INCREDIBLY and I am losing patience with the "stochastic parrots" people. I understand that term came from a credentialed AI professional working at google but it's now like a "technically true" thing you say that obscures understanding instead of illuminating it. Like calling a man a "featherless biped".
@clacke one admission: I don't use copilot. I use Claude where I ask it questions and followup questions and it gives me link references back to where it got its information.
I have found a few things it's not good at. One example is there is a popular library in the cryptocurrency space that you use to make a webpage interact with a smart contract. There are three major versions of it in common use, versions 4, 5 and 6. The guides are constructed in such a way that I think it's difficult for AI scraper to extract which version is being documented, and example code just uses the library name. Guides online to use it frequently don't even tell you which version they are using. The three versions are SUBSTANTIALLY different.
When I ask for help, the code it generates often is a mishmash of the three versions and will in no way work. I found that I could struggle with the AI for a long time and still not get even close to correct code. So I had to abandon it for that particular library. The reason I needed AI even though the libraries are documented is that the documents are not very good. They give you a big list of modules and functions and tell you very vaguely what they do, but then don't accurately describe what functions you have to call to instantiate those objects so they are usable. they frequently don't give you the types of parameters or return values.
@iska@clacke it depends. I found that if there is english documentation, it can help you. I am still trying to understand how well it understands the actual code and can synthesize answers to questions from the code. For example, when I ask for JavaScript code, it gives me clean and modern code. But if you look at source code for javascript projects, overwhelmingly it is written in "old" javascript style before ECMAScript 6 improvements that make everything more readable. Obviously Copilot was trained on Github so it must work but I am having a hard time understanding how it differentiates between older and newer style javascript. To tie it back to the question, if there is code and documentation then i bet it works.
side note: I also use it to explain complicated software specifications to me and answer specific questions about them .W3C specs are large and comprehensive and in understandable English. I ask it questions like "can X document type and Y document type be the same document" or "how and where is this document's location actually found before you can read it" or "does this spec allow this type be used" and it does a GREAT job of answering those questions, ften with references inside the documents. It is a MASSIVE time saver. When people talk about how does AI help coders, I wonder if they ONLY mean coding, as opposed to reading and understanding public specifications and standards you have to incorporate.
@sun I saw a GitHub person demo CoPilot at an internal event my employer held, and I admit that it could cut down on a lot of typing, but I can't help thinking that:
1. It's mostly boilerplate, and all this boilerplate indicates that the languages we use and the libraries we write in them just aren't expressive enough. 2. The typing is usually not what holds us back. Maybe in greenfield experimentation.
I'm already seeing IntelliSense and stuff like that help people reduce how much attention they're paying to the code, and it's allowing e.g. spelling mistakes propagate through the codebase unnoticed. I expect further assisted code writing will only make this worse.
@sun On the other hand, from a "this is where we are" perspective, where we don't see how we'll change our languages and libraries, I can see how prompt-driven code generation can help one developer do less code-monkeying and spend more time on higher-level development work.
It's a collective action problem, where we should upskill everyone, spend more effort on our reusable code etc, but it's cheaper for each actor in the system to push the cost down the value chain and the one at the end of the chain pushes it into the electrical budget.
@iska@clacke give me an unpopular language you'd know about and a very simple task to do in it (or I can think of one) and I'll see what it gives me and post it here
@sun If the thing helps you, it helps you. Whether it reasons is not important for the applied use. "Stochastic parrot" is commentary on the reasoning aspect.
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim." -- Edsger Dijkstra