11 ms·
I’ve never understood the value proposition for Copilot. In terms of difficulty, writing code is maybe on average a two out of ten. On average, maintaining co
by mewse 5y ago
I’ve never understood the value proposition for Copilot.
In terms of difficulty, writing code is maybe on average a two out of ten.
On average, maintaining code you wrote recently is probably a three out of ten in terms of difficulty, and maintaining code somebody else wrote or code from a long time ago probably rises to around a five out of ten.
Debugging misbehaving code is probably a seven out of ten or higher.
GitHub Copilot is optimising the part of the process that was already the easiest, and makes the other parts harder because it moves you from the “I wrote this” path to the “somebody else wrote this” path.
Even during the initial write, it changes the writing process from programming (which is easy) to understanding somebody else’s code to ensure that it’s right before accepting the suggestion (which is much less easy). I just don’t understand how this is a net time/energy savings?
- adminscoffee 5y agoi've actually grown to like it, it seems like it's getting better with each use
- deckard1 5y agoI don't see it either. The context switch between being in the zone/flow and writing the exact code I'm thinking of to suddenly reviewing blocks of foreign and quite possibly wrong code seems like a net negative value proposition. I can't even get autocorrect on my phone to do the right thing half the time. Writing code is easy. Architecture, refactoring, and solving business problems are the hard parts of the job. Writing new code is also generally the most rewarding aspect of the job. Co-pilot promises to turn that into just another unrewarding chore, like slinging 3rd party libraries together.
- jackbrookes 5y agoIts very useful for certain types of tasks that are inherently repetitive. It will construct debug strings very easily, for example e.g. type `pr` in a function with x & t and it may predict... The `print(f"The value of 'x' was {x} at time {t:0.00}s")`
- chii 5y ago> value proposition for Copilot. now, instead of copying off stackoverflow, it's gonna be off copilot. It will enable a lot more people to code who otherwise would not. Whether this is a good outcome or not...
- zoomablemind 5y ago>...now, instead of copying off stackoverflow, it's gonna be off copilot. Eventually, I'm seeing another breed of SO questions, making sense of Copilot suggested fragments and seeking reassurance or alternatives... Then possibly the copying off, just as now.
- BigJono 5y agoThis is even another example of just optimising for the easy bit. I could hire 50 juniors that can code tomorrow if I wanted to. But even with an unlimited budget, finding good devs that can make it through a 2 year project without coming out of it with a big ball of unmaintainable shit is difficult. The gulf from beginner to expert is already big, and the more crutches you use early on, the bigger it's going to get. There's a lot of people that wash out of the industry before they reach the point of being able to comfortably build good software (and be solely responsible for it). I think copilot is another item in a long list of things that's good for big businesses (who optimise heavily for getting passable results with 1,000 mediocre devs instead of 50 good ones) and terrible for individuals in the long run.
- ffhhj 5y agoSooner than later using copilot will be an interview question and it will trigger a big red flag if the company cares about talent.
- baby 5y agoYour comment hides some truth! Imagine coding today without stackoverflow. Possible, but you'd lose so much time looking for simple answers.
- 5y ago
- liquidwax 5y agoCopilot also optimizes for speed to a degree. It's akin to advanced auto complete. IntelliJ auto-completion is great. As much as it pains to say this, I don't think I will be as effective writing Java in Vim as much as I am with IntelliJ. The key differentiator is the auto complete speed. Copilot I feel is just auto complete on steroids. It may not be perfect yet, but there is definitely a problem it solves.
- taormina 5y agoI mean, why only pick vim or IntelliJ? I get them both with IntelliJ and the plugin.
- JohnAaronNelson 5y agoHave you used it? My experience was quite atrocious. Copilot is not auto complete. It’s nonsense. I attempted to use it continuously for three weeks. I tried because I know someone who built it and I wanted to give them the benefit of the doubt. It never prompted me with any code that was useful. It only ever slowed me down and caused me frustration. It’s nothing like Intellisense. It’s just trash.
- baby 5y agoI pretty much use it every day at this point and I notice when it is disabled. > It’s just trash I have a hard time relating to this kind of experience considering how useful it has been for me. What language are you writing in btw? When I use it for OCaml it's not that useful, perhaps because there isn't as much OCaml code to learn from :D
- JohnAaronNelson 5y agoA lot of TS React or Node
- FinalBriefing 5y agoIt's helped me out quite a bit. When I'm writing Angular code, it often fills in the correct boilerplate code, and is especially helpful when writing unit tests. I'm also quite surprised when it autocomplete various filter functions. It isn't perfect, but it's been helpful filling in the mundane, simple stuff.
- rubyist5eva 5y agoThis is for outsourcing farms to dump even more garbage code on ignorant founders for pennies.
- fnoof 5y agoI think professional software devs won’t get much value from copilot. OpenAI’s demo from a few months back showed it as a sort of bridge to convert natural language instructions into APIs calls. Eg converting “make all the headings bold” to calls to a word doc api.
- arvindamirtaa 5y agoIt can still do that. Write a small comment before writing CSS and see it go!
- thereisnospork 5y ago>GitHub Copilot is optimising the part of the process that was already the easiest, and makes the other parts harder because it moves you from the “I wrote this” path to the “somebody else wrote this” path. It is worth mentioning, I suppose, that from Copilot's point of view it is the inverse. Maybe a necessary or at least desirable step towards the inevitable 'Copilot debugger'.
- ArtWomb 5y ago>>> in terms of difficulty, writing code is maybe on average a two out of ten Imagine what's possible when that difficulty level shrinks to 0.0001 / 10 Github Copilot is a "code synthesizer" Xmas time takes me back to one of the most popular "toys" of all time: the Casio SK-1. Music sampler for the masses. It's like that ;)
- highwind 5y agoI feel like 10 years from now we will look at thread like this and laugh akin to 64kb being enough.
- Jensson 5y agoWe do look 40 years back and laugh at people thinking that artificial intelligence will be easy.
- baby 5y agoExactly, I'm already laughing reading the comments here considering I've been using copilot for weeks and it's a game changer
- tmp12g 5y ago640kb, not 64kb, is the value used in that apocryphal quote. A quick google search would have shown that. I wonder if there's a google copilot in the works for social media posts.
- longhand 5y agoMaintaining code that you wrote rises to a nine out of ten. Debugging your code is a ten out of ten or higher.
- nfRfqX5n 5y agoyou're only thinking about the 'write a comment get a block of code' feature. it also has autocomplete/predictive functionality that speeds up coding quite a bit when it works
- megablast 5y agoYou never understood something that only came out this year??? Never???
- baby 5y agoDid you try it? Because I've been using it for weeks and it makes me read these types of comments as "I don't understand the value of the internet" or "what's the purpose of owning a phone". It's night and day if you have it enabled or not. There's just no question about the value proposition once you start using it. I mean, you can tell comments here from people who have actually been using it, and people who have not tried it.
- b215826 5y ago> Because I've been using it for weeks and it makes me read these types of comments as "I don't understand the value of the internet" or "what's the purpose of owning a phone". And yet apart from making this very inaccurate comparison you haven't made any argument for why such a thing as Copilot would be useful to anyone. How do you personally find Copilot useful? And why do you think someone whose job demands more than copy/pasting boilerplate code should try Copilot? The onus is on you to convince the skeptics.
- wokwokwok 5y ago> The onus is on you to convince the skeptics. Is it? Look, I don't care at all if you use copilot; you can use notepad to write your code if that floats your boat; do whatever you want. What the parent post said is: Copilot is useful; it helps you write code with autocomplete suggestions. If you think that you don't get productivity gains from an IDE or you're in the 'no IDE makes you more hardcore and better programmer so never program with an IDE' camp, we just have to agree to disagree. So, I have no interest in that conversation. ... However, there is a more interesting conversation here we can have: Given that you have an IDE and use autocomplete: 1) Does Copilot give suggestions are meaningfully useful? Yes. I honestly can't give you a better answer than that. Yes, it does, it's quite good. If you don't believe me, try it. 2) Is it better than regular autocomplete? Look, forget the 'Look, I typed 'process user form and display on UI' and it autocompleted a whole application for me!!' hype. That's stupid and that's not how it works. It's an autocomplete. It can autocomplete large chunks, but they're generally rubbish. ...but it does two very interesting things: - It suggests things that are contextually correct. For example: even though its rubbish at C++ syntax, it generates valid UPROPERTY and UFUNCTION blocks for unreal code. If I write a `for (y = 0;...` on an array, it generates the associated `for (x = 0;...` when I'm iterating over a 2D array. If I have a function which takes a pointer like: > UFvContainerWidget* UFvContainerWidget::ForEquipmentDef(UFvEquipmentDef* EquipmentDef, bool& IsValid) I press enter and it pops up: if (!EquipmentDef) { IsValid = false; <--- WTF! return nullptr; } Sure, it's a similar pattern to other code in related files, but still. This surprised me. I've never encountered an autocomplete that does that before. Sometimes the suggestions don't make sense, and the larger the chunk, the less sense they make. ...but the suggestions that do make sense, make you regret not having it when you don't have it. Like... regular autocomplete. It's just a tool; it works very well at small scale autocomplete tasks. - It can suggest comments from code as well as code from comments. Literally, I can go above a function and type "/*" and it'll suggest a comment. These don't always make sense, but often they're pretty close, and it saves me 20 seconds typing. You have to carefully read these comments, because they tend to get random crap in them, but once again, for short comments its not bad. Again... it's surprisingly good. Not perfect. It doesn't write your comments for you... but, it's easy to get into the habit of getting it to autocomplete "Returns null if the object is invalid" for you instead of typing it out. 3) Should I use it? Look, I literally do not care if you do or don't. What I take issue with is people saying 'it has no value'. Does autocomplete have a value? Then this has a value. Saying it has no value is just trolling. Is it worth the cost? Well, it's free to use right now.... so, well, you can't beat free right? :) Longer term, would I pay for it? Probably (** Personal opinion only: Maybe... you should try it and decide for yourself?)
- karmasimida 5y agoThere are some code in your life you would wish someone could write that for you. Because such code is dumb, tedious and joyless. I have to bite my lip sometimes to convince myself writing them is not a waste of time, because people demand it, but I hate it to my core. Copilot is that unfortunate boy that has to do all that manual work. It is the ultimate code boilerplate mixer. It is not going to write all code for you, if you goal is to have it THINK for your then you are due to disappointment. But it would be able to help you be a more efficient and slightly happier programmer.
- zhangjunphy 5y agoI guess it really depends on what you are working on. If you are writing some non-trivial algorithms or working on some projects which requires delicate handling of things, then Copilot is most likely going to mess up. But if you are working on many of those frontend code or backend CRUDs which are usually quite repetitive. Then Copilot could be helpful.
- pizza 5y agoThe value prop for things like these is always the same: for the widely - and accurately, although that's irrelevant to my point - lambasted initial release to start the ten year journey down the road towards the creation of an eventual product that will make people link to comments like these the way they link to the original Dropbox Show HN: post. There are levels of ease of which we have not yet dreamed, especially in the realm of information manipulation.
- mewse 5y agoI mean, I'm obviously intensely skeptical that such a thing will happen at all, much less within ten years. But I guess we'll find out eventually! And if mine does become the "640k ought to be enough for anybody" quote of this decade, then I suppose there are worse kinds of fame.
- deleted 5y ago[deleted]
- TedShiller 5y ago> In terms of difficulty, writing code is maybe on average a two out of ten. I’ve never heard talented programmers say that
- emodendroket 5y agoIt's meant to be a souped-up autocomplete. You don't quite remember how to do a common thing, and instead of having to go look it up, the IDE suggests it for you and you can keep doing what you're doing. A bunch of small instances of that can save you lots of time.
- foolfoolz 5y agomaintaining code someone else wrote is much higher on your rating scale. probably need the top end. because it nearly always involves some debugging and usually is not obvious what footguns exist
- zohch 5y agoTo make it faster to pump out go which is maybe > 50 noise with it's poor language features and it's anemic standard library that does not even have abs.
- namelosw 5y agoBy the same logic you've presented, what's the value proposition of the plain-old auto-completion? What's the value proposition of a slick editor? All you need is the built-in notepad and a debugger. Speaking from my personal experience, I usually write code in TDD style, in which I test the properties of the software I desire upfront, then make it pass with a minimal amount of effort. When I see there's a need for refactoring, I refactor. And I repeat this process until it is done. The three parts take roughly the same portion of time, and when I'm writing tests, I'm thinking about the functionality and value of the software. When I'm refactoring I'm thinking about the design. When I'm writing the implementation initially, I want it to Just Work™ in the first place, and I find Copilot is great for this matter: why not delegate the boring part to the machine?
- KronisLV 5y agoYou know, perhaps this is tangential to the point that you're making at best, but i still couldn't help but to notice: > The three parts take roughly the same portion of time, and when I'm writing tests that bit and have some strong feelings about it. At my current dayjob, writing tests (if it was even done for all code) would easily take anywhere between 50% and 75% of the total development time. I wish things were easy enough for writing test code not to be a total slog, but sadly there are too many factors in place: - what should the test class be annotated with and which bits of the Spring context (Java) will get started with it - i can't test the DB because the tests don't have a local one with 100% automated migrations, nor an in memory one because of the need to use Oracle, so i need to prevent it from ever being called - that said, the logic that i need to test involves at least 5 to 10 different service calls, which them use another 5 to 20 DB mappers (myBatis) and possibly dozens of different DB calls - and when i finally figure out what i want to test, the logic for mocking will definitely fail the first time due to Mockito idiosyncrasies - after that's been resolved, i'll probably need to stub out a whole bunch of fake DB calls, that will return deeply nested data structures - of course, i still need all of this to make sense, since the DB is full of EAV and OTLT patterns (https://tonyandrews.blogspot.com/2004/10/otlt-and-eav-two-big-design-mistakes.html) as opposed to proper foreign keys (instead you end up with something like target_table and target_table_row_id, except named way worse and not containing a table name but some enum that's stored in the app, so you can't just figure out how everything works without looking through both) - and once i've finally mocked all of the service calls, DB calls and data initialization, there's also validation logic that does its own service calls which may or may not be the same, thus doubling the work - of course, the validators are initialized based on reflection and target types, such as EntityValidator being injected, however actually being one of ~100 supported subclasses, which may or may not be the ones you expect due to years of cruft, you can't just do ctrl+click to open the definition, since that opens the superclass not the subclass - and once all of that works, you have to hope that 95% of the test code that vaguely correseponds to what the application would actually be doing won't fail at any number of points, just so you can do one assertion I'm not quite sure how things can get that bad or how people can architect systems to be coupled like that in the first place, but at the conclusion of my quasi-rant i'd like to suggest that many of the systems out there definitely aren't easily testable or testable at all. That said, it's nice that at least your workflow works out like that!
- arvindamirtaa 5y agoIt's not so much the parts where think hard and implement that perfect feature. It's insanely useful when you have to make sweeping pesky changes. Like a pulling values from a config dict and initializing a bunch of methods from the class? Or setting up a testcase similar to the one you already have, but with different values? Or cleaning values from a form? It's not a bulk edit. But it's also not thoughtful code-writing. It's monotonous and mundane. And lots of people do a lot of this on a daily basis. Copilot makes this a cinch.
- erikbye 5y ago> In terms of difficulty, writing code is maybe on average a two out of ten. It's not about difficulty, but time. Not the same thing. Easy can still be time consuming. Have you seen how much time the average developer spends on Stack Overflow and googling for answers?
- sireat 5y agoI also fear that Copilot will be teaching anti-patterns. Just tried something really simple: def is_palindrome Copilot suggestion was def is_palindrome(word): if word == word[::-1]: return True else: return False facepalm So good for technically correct solution but still... This is an anti-pattern I think in pretty much any language that I know of and something that about half of my beginning students try when they learn about branching.. UPDATE: more howlers along the same vein def haystack_contains_needle(haystack, needle): if needle in haystack: return True else: return False
- sireat 5y agoUPDATE: The above howlers were in IntelliJ... However in Visual Studio Code on a different computer, I got much better idiomatic suggestions. such as def is_palindrome(word): return word == word[::-1] Very puzzling.
- asxd 5y agoI've had a lot of fun having it generate weird web pages without me writing any code. Stuff like: // Add 100 divs to the DOM in random places ... // Randomize the color and text of all divs every 1 second ... Other than that novelty, it can be genuinely useful if you think about it as a more intelligent autocomplete.
- voldemort1968 5y agoYes, if you use copilot irresponsibly, you will end up with irresponsible code.
- ingvul 5y ago> I just don’t understand how this is a net time/energy savings? At the end of the day is all about trust. Do you trust code you find in SO/Copilot to be good enough for your use case? In my case I do not trust SO code. Whenever I use SO, if I find some snippet that seems to be the code solution I'm looking for, I copy-paste the snippet on my IDE, read through it carefully, rename variable names as needed, handle edge cases, remove unused code, etc., etc. Any code solution I find in SO gives me the "starting" kick, which is about 10% of the total effort of writing code from scratch. The remaining 90% (to understand the code that is being committed) cannot simply go away. I do not expect Copilot will make much of a difference.