10 ms·
Why Copilot Is Making Programmers Worse at Programming
- kayodelycaon 2y ago> When a developer writes every line of code manually, they take full responsibility for its behaviour, whether it’s functional, secure, or efficient. In contrast, when AI generates significant portions of code, it’s easy to shift that sense of responsibility onto the AI assistant. I’m not sure how true this is. Any place I worked, whoever checked in the code is responsible for it.
- marcellus23 2y agoThere's no evidence of any of that, it's pure speculation. I bet people were saying the same thing about Intellisense, and Google, and documentation-on-hover, and live compiler errors, etc. etc.
- wanderingstan 2y agoForget the sources, but I recall people saying the same about syntax highlighting even.
- abraxas 2y agoI'm feeling both nostalgic and elated. The first time a friend gave me a version of Turbo Pascal with syntax highlighting was an epiphany. The same feeling struck about a decade later after trying actually usable auto-complete for the first time in JBuilder. Pure magic. Tools like the replit bot evoke similar emotions. I have no idea why they generate so much negativity from most HN comments. This cohort must be on average younger than myself. I'm pushing 50 and for the first time in decades I fee like we are actually about to witness actual productivity boost in programming craft because let me tell ya, server side js or spa or nosql certainly weren't it.
- flanked-evergl 2y agoThey were absolutely. I recall when Stack Overflow was the great evil. Luddites should get over it. We are moving forward. There is no putting the LLM back in the box, and even if there was a way to do that, it would be dumb.
- kelseyfrog 2y agoLuddites weren't against technology for the sake of it. They were critical of the social ramifications of technology because they were being put out of jobs and their livelihoods. How should then Luddites simply get over mass unemployment? Until we "solve" the problem of unemployment, this problem will continue to exist.
- flanked-evergl 2y agoLLMs are here, they are staying, we either learn to live with them or accept it's the end of our time. There is no putting LLMs back in the box. Whoever does not use them will become irrelevant. Societal progress is not one way, but technological progress is — and there is a good reason for that; the universe is biased towards processes that are better at increasing entropy, if we aren't that, we will be replaced. It may suck, but facts are facts. Dealing with them is better than pretending they don't exist.
- kelseyfrog 2y agoNo one is asking for technology to be un-invented. We're asking for the societal consequences of technology to be addressed. Technology can be disruptive, but "just deal with the disruption," is not a viable response. It breads resentment. It favors populism. It says, "sorry, but your problems are not worth fixing."
- flanked-evergl 2y agoThis article is not about that, it's about how a technology supposedly makes people worse at something, when in reality the technology transforms the activity. It's about as sensible as modern input methods make people worse at programming. If humans can no longer be useful at some ancient, irrelevant practice because of a quantum leap in technology ... so what? To quote most historic person that has ever and will ever live; what difference, at this point, does that make?
- caseyy 2y agoYou don’t need evidence for something to be true. The observations made by this article are self-evident to those working in industries that have adopted copilot. However, in this case there is empirical evidence copilot makes code quality worse: https://visualstudiomagazine.com/articles/2024/01/25/copilot-research.aspx https://visualstudiomagazine.com/articles/2024/01/25/copilot...
- marcellus23 2y ago> The observations made by this article are self-evident to those working in industries that have adopted copilot I work in such an industry and it's certainly not "self-evident". Clearly it's also not self-evident to many other people commenting on this post. > However, in this case there is empirical evidence copilot makes code quality worse: https://visualstudiomagazine.com/articles/2024/01/25/copilot https://visualstudiomagazine.com/articles/2024/01/25/copilot... One study does not prove anything, although at least it is _some_ evidence. But other studies linked in that very article show opposite results. To be clear I don't know if LLMs are better or not for developer productivity. I think it's too early to tell. But given that people, in general, are prone to conservatism, combined with the fact that past developer tooling enhancements have not caused the negative outcomes that many people at the time predicted they would cause, leads me to believe LLMs will probably be a positive change.
- spencerchubb 2y agoPeople have said that types make people worse at programming too lol
- ebiester 2y agoNote: This is absolute speculation - it has no evidence or even anecdotes around it.
- wokkel 2y agoBut it does. The same holds for Google and stackoverflow: the majority of developers have trouble with sql.since the introduction of or mappers and plenty of other examples. Ask a junior dev about the difference between a stack allocated and a heap allocated object and be amazed.
- throwaway314155 2y ago[flagged]
- qsort 2y agoI read comments like this all the time in all sorts of variants (we don't need math, we don't need CS theory, we don't need regexes, we don't need pointers). What do you people even do? Most of my work is with managed languages, but lower level concerns bubble up multiple times per project; you can't write great Python if you can't write decent C.
- throwaway314155 2y agoi never said we don't need it. just that not everyone should be expected to know it and you don't need it except in particular situations.
- fsloth 2y agoI'm not sure what type of code you develop but it sure ain't the entirety of the real world. In my corner of the real world we are quite concerned about the difference between stack and heap and profile our applications to pinpoint any opportunities for optimization in e.g. heap allocations. Like, most of the world runs on puny chips, and if the chips are not puny, the workloads are still going to eat up battery and contend with all of the other crap running on the end users device.
- s_dev 2y agoI feel like we'll be having the same arguments forever. Sure LLMs bring some issues but programmers will always find ways to write bad code no matter what tooling or techniques we have available. His critique is basically the same as 'calculators' will make us poorer at mathematics -- at lest in Europe PISA Maths skills have been steadily increasing since the introduction of calculators to school syllabi.
- patrickmay 2y agoThe analogy to calculators isn't particularly close. A calculator will help with the mechanics of arithmetic or even graphing but it won't help a student who doesn't understand when and why to multiply, add, or subtract. Copilot will generate working code (for some definition of "working") that the programmer might not understand at all.
- rincebrain 2y agoGraphing calculators, with applications that you can black box pattern match and plug into, might be argued to have done so, since you don't need to understand the machinery, just pattern match on the problem type.
- darby_nine 2y ago> His critique is basically the same as 'calculators' will make us poorer at mathematics Calculators did make us bad at arithmetic. It's just that people stopped caring. I don't think this is bad, though, anything to avoid typing repetitive boilerplate, which is pretty miserable regardless of your skill level.
- kelseyfrog 2y agoWriting made us bad at remembering. Socrates was famously a critic of writing for this reason[1]. If we can say anything about the effectiveness of the argument, it's that it's completely impotent against new technology and tools. 1. https://fs.blog/an-old-argument-against-writing/ https://fs.blog/an-old-argument-against-writing/
- Carrok 2y agoSome of these points may be true, but as someone who just started using Copilot at a new job, on an unfamiliar code base and programming language, it's been a lifesaver. Obviously you have to read the code to make sure it makes sense, and much of the work is deleting the main bit of functionality it attempted to implement, and re-implementing it correctly. However, having it autocomplete entire function definitions, including all the {} () => | : `${x.y}` fiddly bits, sure saves a lot of time. The one point I don't agree with at all is `Dependency on Proprietary Tools` there are already plenty of open source alternatives, and these will only improve with time.
- deleted 2y ago[deleted]
- regularfry 2y agoFrom the point of view of corporate use, there absolutely isn't an open source alternative. At least, not yet. The critical feature, which also counts out some paid tools, is the ability to avoid regurgitating training data into your codebase. GitHub has the raw dataset to be able to offer that (and the legal indemnification that comes with it). I don't know of any open source system that can offer the same, even in principle.
- mewpmewp2 2y agoSeems like stretched reasons. Similar things could be said about using libraries or languages that abstract away low level complexities. Also pretty sure it's AI generated article which I guess could be stronger point about writing skills being eroded than the arguments itself.
- pton_xd 2y agoFrom TFA: "Erosion of Core Programming Skills, Over-Reliance on Auto-Generated Code, Reduced Learning Opportunities, Narrowed Creative Thinking, Dependency on Proprietary Tools, False Sense of Expertise" Personally, I've been making the same arguments against using even vanilla auto-complete. It's a distraction, erosion of the mind, encourages bad habits, etc.
- TrackerFF 2y agoI get his point, but let's be real here: 10, 20 years from now, how many will actually be programming - the we know programming today? In 10 years time, we will have a generation of coders where the majority have never coded anything without the help of some LLM. If that's even the thing, when that time comes. Some posters here are living in some luddite delusion, if they think the "AI hype" will somehow just blow over, and people will go back to sifting through stack exchange, or simply read the man pages for something. Sorry, that's just not going to happen. In the past two years we already have junior devs that are dependent on LLMs to work efficiently. These posts remind me of how older folks (25-30 years ago) warned about search engines, and how they'd make the youngins lazy and uncritical.
- xyst 2y agoThis just means job security for me. We will be the next "Fortran/COBOL Cowboy's"
- jumploops 2y ago"Why C is making assembly programmers worse at programming" "Its going to make you reliant on the [compiler], and you will never be able to do anything that the [compiler] cant already do." LLMs are here to stay, even if they don't write perfect code -- they are clearly very useful to an increasing number of existing developers and, more importantly, bringing new developers into the art of software creation.
- sgarland 2y ago> more importantly, bringing new developers into the art of software creation. Counterpoint: the field is already chock-full of juniors trying to get a job, and the ones who are actually good at coding are now even more diluted in a sea of shiny nonsense.
- jredwards 2y agoIf your premise is that the world is a better place when programmers all have regex syntax committed to memory, then sure, I guess AI tools are bad. Personally, I don't think the aspects of writing code that AI tools help with the most are the important parts. I think AI tools are great at taking out the rote aspects and the glue code so that programmers can concentrate on the core issues and broader structure.
- sgarland 2y agoI doubt this was your intent, but regex syntax is actually a great example of why it is important to fully understand what you’re doing [0]. It’s also quite useful; once you know a decent number of the symbols, it’s faster to write than it is to describe to an LLM what you want. I have no problem with using LLMs to act as rubber ducks, or find alternative ways to do something, or filling in boilerplate. But for the first two, anyway, you really need to already know how to do the task in order to determine if the LLM got it right or not. Or at the very least, know the language well enough to spot problems. [0]: https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019 https://blog.cloudflare.com/details-of-the-cloudflare-outage...
- plasticeagle 2y agoThis article 100% read like it was written by AI. I will personally never use Copilot, or any other AI code generation tool, for the simple reason that I enjoy writing code. Even if I were unfamiliar with a new language, I'll still never use it. Instead, I'll consult the documentation and follow examples. I like coding, and I neither need nor want a machine to do it for me. It's exactly the same as writing English. There is great pleasure to be found in writing, it's worth your time. Just be careful when doing so to not end up sounding exactly like ChatGPT.
- progforlyfe 2y ago> This article 100% read like it was written by AI. I noticed that too, found it quite ironic =)
- mewpmewp2 2y agoAsked ChatGPT to create an article on this title and "Erosion of Core Programming Skills" was exact word by word one of the headings it used. And of course the fact that each heading has exactly 2 paragraphs in similar lengths and the overall tone as well. The whole blog including the other articles looks like AI generated.
- deleted 2y ago[deleted]
- zwnow 2y agoI also enjoy writing code a lot. Sometimes I try to let GPT help me by me providing some context or debugging something. It's been good at that so far, as I sometimes don't have the time at work to scroll through the depths of the internet. I still write 99% of the code myself though. It's typing practice for me. Typing is a good thing.
- com2kid 2y ago> I will personally never use Copilot, or any other AI code generation tool, for the simple reason that I enjoy writing code. I had an XML file format, I needed it converted to JSON. I haven't parsed XML in over a decade, and I didn't want to relearn. I also didn't want to match up XML fields to JSON fields. Both file formats had well defined schemas available, but were also common enough that most major LLMs were trained on them. I just asked Claude to write a program to convert from one file format to another. There is no joy in that task. Doing it myself would have been the very definition of a useless chore.
- deisteve 2y agothis article is just a rehashing of the same tired contrarian takes about AI-assisted coding that we've been hearing for years. 'Programmers will become lazy and reliant on AI' is not a new problem, and it's not like Copilot is somehow uniquely capable of eroding fundamental programming skills. in reality, Copilot and other LLMs are just tools, and like any tool, they can be used well or poorly. If a programmer is relying on Copilot to do all their thinking for them, then yeah, they're probably not going to learn much. But if they're using it as a starting point to explore new ideas and learn from the code it generates, then that's a different story. And let's not forget that AI-assisted coding is not a replacement for human judgment and critical thinking. If a programmer is not reviewing and understanding the code they're writing, then that's a problem with their workflow, not with the tool they're using. I'd love to see some actual data on how Copilot is being used in the wild, rather than just anecdotal evidence and hand-wringing about the 'dangers' of AI-assisted coding. Until then, I'll remain skeptical of this article's claims.
- skeptrune 2y agoImo, there's something to be said newer devs feeling self-pressure or anxiety to use the Copilot for everything which is a massive time sink and slows skill progression. I also don't think it's a great starting point for exploration. There's a lot more value out of learning a couple different quirky frameworks and reasoning through why they exist than there is hacking together something quickly within the bounds of what the LLM's can do.
- deisteve 2y agoi personally dont use Copilot so im fairly unbiased here and will admit to some of the negative points you raised: yes you can absolutely sink time and lose efficiency i encounter it many times, i have it generate large amount of code that seemingly does what i asked it to do but then it takes many revisions to finally arrive at edge-case-free state I also end up having to read through the code generated to build a mental model of what the app is doing and to gate keep future revisions. But what makes all this worthwhile is that it saves my employer a lot of money. For example: We've generated a large enterprise react application for roughly $100 USD within a month using all the available code gen tools out there. I'm talking the entire stack: backend, frontend, documentation. Trying to pull that off with a real team? it would cost 1000x minimum and roughly 3 quarters, maybe the entire year. A business won't care about the "art" side of things. They just see they can generate software at almost 99% discount. I'm very worried about our software engineering jobs beyond 2024. It's going to massively shrink and wages are going to reflect this new cost saving that code gen provides.
- amflare 2y agoPass. This article could have been published as "Why Internet Message Boards Are Making Programmers Worse at Programming" 30 years ago, "Why Google Is Making Programmers Worse at Programming" 20 years ago or "Why StackOverflow Is Making Programmers Worse at Programming" 10 years ago. Its the same-old-same-old. Has it been true in the past? Maybe, if your criteria for "good programmer" is "someone who went through the same struggle I did". But the industry grows and adapts. The next generation of programmers is going to be good at different things than we are. As long as they can get the same job done, who are we to say that they are wrong?
- levistamper 2y agoAgreed. If you're getting paid to ship features, no one cares whether you're learning, or learning the "correct" way. You simply have to get the job done. If tools like copilot help you meet your goals and budget, then they are a good thing. I heard the same thing in the 90s when Java (and even C++) came on the scene. The C programmers bristled at the idea that you no longer had to deal with memory management. They thought it would make the programmers sloppy, generating poorly performing code bases. They were right, and it didn't matter.
- HeyLaughingBoy 2y ago> The C programmers bristled at the idea that you no longer had to deal with memory management The funny thing is that is the same example I was thinking of.
- sevensor 2y agoA generation later, most C programmers are bad at performance anyway. And they get segfaults.
- sevensor 2y agoYou’re right on with the parallel with stack overflow, google, and message boards. I take a different conclusion though, which is that lazy irresponsible copy pasting has always been with us, but that doesn’t make it good. Remember the “full StackOverflow engineer?” Competence and diligence will continue to produce different results than faking it.
- Fergusonb 2y agoWhile this raises valid concerns, Copilot and friends can actually enhance learning by exposing devs to new patterns and approaches. They still require problem-solving and critical evaluation skills. By handling routine tasks, they free up time for higher-level thinking. It's just another abstraction layer, like high-level languages were. Responsible use combined with continuous learning can boost productivity without sacrificing knowledge. The impact differs between experienced devs and beginners. As these tools evolve, we'll likely develop new meta-skills around AI collaboration. Like any tool, it's about how we use it.
- skeptrune 2y agoI think it's important to actually think through problems and read error messages yourself before hammering out some request and throwing it to a coding bot. Copilots may be pushing out how much time it takes for newer devs to actually do that which feels like the most damaging aspect relative to skill progression. It's been frustrating to request a simple feature or tool and see interviewees spend hours fighting with a LLM to make it do what they want instead of just trying to do it themselves first and correctly picking the spots to use the AI.
- vydra 2y agoI found the error rate of Copilot unacceptable for most of my daily work, so 2 months ago we kicked off a project to write a tool more appropriate for someone who practices TDD -- specifically, I don;t want to see generated code unless it passes my tests. The early results are very promising for my stack which is backend Java/Spring. See https://testdriven.com/testdriven-2-0-8354e8ad73d7 https://testdriven.com/testdriven-2-0-8354e8ad73d7
- aPoCoMiLogin 2y agoit doesn't make them worse, they just stay at the same level. the tool doesn't change that the person using it doesn't care about the end result. making systematic mistakes is the trait of the character, there is nothing that can fix that, except the subject itself
- Night_Thastus 2y agoI'm in the "it doesn't matter" camp. Over time, more people will realize that tools like Copilot aren't worth the headache. The solutions are often wrong, the explanations of those solutions are wrong, the corrections when you point out a mistake are wrong, etc. Once "AI" hype dies down and people see these tools for what they are, glorified Markov chains, it won't really matter. Maybe it will get some use in making boilerplate code for the most basic of applications, but that's about it. And the occasional junior dev stumbling into it not realizing just how bad their output can be.
- spencerchubb 2y agoSolutions from any source are often wrong. Stack Overflow, intellisense, human peers. The question you have to ask is: does it make you more productive even though there are mistakes?
- null_point 2y agoI have a moderate sized legacy project where I need to migrate tests from Enzyme to React Testing Library (RTL). Probably 150+ test files, each containing upwards of 10 test cases. While not using Copilot, I have GTP-4o assistant with a system prompt setup from trial and error to convert a given test from Enzyme to RTL. There are certain scenarios where a given test cannot actually exist in RTL due to a difference in testing philosophy between the two frameworks and I am required to make some decisions, but overall this is probably 10x faster than refactoring these tests by hand. One of the important aspects of this, though, is when a I encounter a repeated failure of the LLM, I update the system prompt going forward. Even though this is a simple 1-shot approach, it still works well for a task like this.
- phendrenad2 2y agoSome reasons you shouldn't drive a car: - Erosion of core horse-riding skills Getting from point A to point B used to be a highly-skilled task, involving a fusion of man and beast working in tandem to accomplish the job. Now, by using a so-called "automobile" (more like "auto-mo-blah", am I right?) we're losing these core skills. Rather than deeply understanding the inner working of the horse's digestive tract, we're left with only the choice: basic petrol or premium? - Over-reliance on roads When driving a car, drivers can quickly reach their destination without understanding the underlying terrain. This leads to what experts (me) call "road dependence", where drivers are too reliant on roads, without checking if the route is the most efficient. There could be a badger path cutting 20 minutes off of your commute! - Lack of ownership and responsibility When going from point A to point B, car drivers shift responsibility for the drive to the roads they drive on. But the roads could expose them to rockslides, ice, highway robbers, bank robbers, and dangerous wildlife. They may think "if the road goes through here, it must be safe", rather than do due diligence and thoroughly research the route beforehand. - Reduced learning opportunities Getting from point A to point B used to be a highly trial-and-error process that forced you to LEARN THE HARD WAY that certain cliffs are too steep for the average horse. Rather than falling off a cliff repeatedly, road drivers don't learn these lessons at all. - Narrowed creative riding When riding a horse, you are beset by constant questions. "Is that cliff safe for my horse to scale", "are those berries safe for my horse to eat", "is that a bee nest in my path or just a lumpy tree branch". These force you to think creatively about your travels. As a road driver, the way is predetermined for you, and you won't be as adaptable if you run into unusual situations. - Dependency on proprietary engines All horses are exactly the same, right down to the color and number of hooves! This makes it easy to transfer your expertise from one horse to another. Unfortunately, once you become a car driver, you'll find that the manufacturers put the damn volume knob in a different place on every single model. And there's nothing you can do to change it, because it's proprietary.
- semiinfinitely 2y agoI also dislike using AI for programming but for what its worth, I cannot reconfigure my neovim lua settings without AI
- rychco 2y agoThere’s not much to talk about here. Of course you won’t improve when a third party is producing your code. That being said, I’m interested to see what happens to LLM effectiveness over time as the amount of LLM-generated code starts infecting training data.
- dyeje 2y agoWhy Hammers Make Builders Worse at Building
- chrisml 2y agoTreat Copilot (or any other AI system) as a TOOL. Each tool has its purpose and use. But remember YOU are the craftsman...
- siliconc0w 2y agoRight now its a bit like Tesla's self driving. It mostly works but mostly works isn't a great standard and maintaining supervision to correct errors involves continually re-building state and trying to debug AI-code which can be more taxing than just doing the thing yourself. This is case by case of course.. I used it the other day to generate fairly idiomatic table-driven tests. It took a few swings plus some manual tweaking but as I don't particularly enjoy writing tests I was pretty satisfied with the outcome and it had more coverage than I probably would've written. Well worth the 25 cents in API credits. On the other hand, there have been more than a few times I've given up trying to nudge the AI and just did it myself. In those cases it was just a net negative and just wasted time. So the trick is feeling out where that line is for each model so wasted time < saved time.
- simonw 2y agoI will happily argue that Copilot, used thoughtfully and responsibly, can make programmers better at programming. The very, very short version is that it lets programmers move faster and try more things, which helps them learn quicker. The rate at which I learn new libraries, frameworks and languages has accelerated dramatically over the past two years as I learned to effectively use Copilot and other LLM tools. I have 20+ years of experience already, so a reasonable question to ask is if that effect is limited to experienced developers. I can't speak for developers with less experience than myself. My hunch is that they can benefit too, if they deliberately use these tools to help and accelerate their learning instead of just outsourcing to them. But you'd have to ask them, not me.
- ergonaught 2y agoEven if the assertion is correct (which I believe to be the case), the most probable reality-based outcome is that decision makers will continue to push toward automation. If some significant portion of the humans doing the job can be replaced by LLM, or by much cheaper humans augmented by LLM, they will be so replaced. By the time it creates a real problem, those folks will have cashed out and moved on. That isn't new behavior, but folks who fall back to that as a way of dismissing concerns lack a good grasp of the scale enabled by technology, here. "Interesting times".
- JohnMakin 2y agoReplace "code generation" with "stack overflow" and you have essentially the same rant people were making 10+ years ago about that site - even more poignant in that a large amount of copilot's training comes from sites like stack overflow
- arbol 2y agoCopilot is useful for auto completing glob or writing a simple regex. Anything more complicated and it will often make mistakes. Finding mistakes in 20 lines of AI generated code is slower than writing it yourself.
- kjellsbells 2y agoIt's not so much that Copilot is a threat because it could produce tight, elegant code that handles all the edge cases and so on, but because employers still see coders as expensive keyboard jockeys whose code is not significantly better than what a Copilot user could cargo-cult into existence. Blaming Copilot feels a bit like the wrong target. Like the Luddites, the real question is the relationship between employer and employee, and how the presence of the machine empowers or endangers the worker. To put it another way. Suppose a perfect Copilot existed, that required a human to drive it but made that human a 10x developer. Do you think they would get paid 10x as much? Or would the worker stay where they were, perhaps under threat of replacement, and the employer take the spoils? https://www.flyingpenguin.com/?p=28925 https://www.flyingpenguin.com/?p=28925 Edit: to be clear, I am actually a big fan of Copilot for increasingly one's personal productivity, rather like a super-Google or a non-snarky-Stack Overflow. But I remain rather cynical about how those benefits might work in the new corporate environment.
- plutoh28 2y agoCopilot comes free for students through GitHubs student developer pack[0]. I’ve gotten to try it out and I’ve found it to just be a great cheating tool in my classes. Most assignments done by students are basic problems that have been solved tens of thousands of times and could be found everywhere all over GitHub. Assignments where you have to write algorithms like bubblesort or binary search are as easy as typing the function signature and then having copilot fill in the rest. Therefore, using copilot as a student will make you worse at programming, since you are robbed of the fundamental thinking skills that come from solving these problems. [0] https://education.github.com/pack https://education.github.com/pack
- twodave 2y agoA better thesis might be that copilot is making programmers _that_ are worse at programming, which is to say new developers or those who otherwise aren’t very good are able to use it to pass as more competent than they are. Copilot saves me a lot of time. It frees me up to think more critically of the code I’m writing.
- jmclnx 2y agoWell you know the old saying. There was only ever one COBOL Program written from scratch. All others were copied from it or other programs decedent from it.