5 ms·
Can I suggest a hypothesis that if you find Copilot useful it means the problem you are solving is a boring one? I might be wrong of course.
by mojuba 4y ago
Can I suggest a hypothesis that if you find Copilot useful it means the problem you are solving is a boring one? I might be wrong of course.
- workingon 4y agoSeems like a narrow vision. Is every line of code you write to solve a problem “not boring”? I solve problems I find interesting, but writing matplotlib code to visualize data never is.
- trention 4y agoThis is true for the current iteration of the model. Probably won't be true at least to an extent in 5 years. Besides, there is nothing wrong with solving boring problems. Not everyone can be Bjarne Stroustrup.
- viraptor 4y agoThe most interesting problem will have extremely boring bits. If you write a cli tool to solve all of world problems by changeling magic, you'll still need to add the parameter handling and do some error management. Which is repetitive and likely well generalised and predictable based on other projects.
- para_parolu 4y agoThe problem may not be boring. Typing boilerplate code is. I work on games as hobby. Sometimes I implement mechanics requiring vector math. Working on mechanics is interesting. Writing down math is not. Copilot helps with later.
- mojuba 4y agoThen another hypothesis: you probably haven't found the right tools for it yet. I find myself writing biolerplate mostly around some obscure system framework calls (iOS/macOS), but that's rather rare. But even OS API's and frameworks do evolve over time into requiring less boilerplate. Just take the evolution of CoreAudio, the modern Swift interface is so much better. So at the end of the day it's about the tools and interfaces: boilerplate is rarely absolutely necessary with the right tools.
- triknomeister 4y agoMaybe github copilot is the right tool.
- mojuba 4y agoI don't think so. A human-verified, tested and maintained code is obviously superior to a snippet blindly copied and mixed by a statistical system.
- mistercow 4y agoThat’s not how you use Copilot, any more than it’s how you’d use any other autocomplete tool. I don’t know why so many people seem to think that using Copilot is just closing your eyes, hitting tab fifty times, and then committing. You work on your code, Copilot makes a suggestion. You read that suggestion and verify that it’s close to what you were already going to do. If it is, you hit tab, then you tweak it. There’s nothing blind about this process.
- dx034 4y agoI'd rather use Copilot than including yet another library just to avoid writing one function.
- triknomeister 4y ago99% of work in 100% of interesting projects is boring.
- alpaca128 4y agoI disagree. Most large projects, software or otherwise, use existing parts. If you design an innovative device you'll still use some standard components like chips, memory modules etc. There's already a way to quickly solve the boring parts in development - libraries which were built and licensed around that purpose. But Copilot passes you code of unknown origin, with unknown license terms and no information about how close it is to an existing codebase. It's like a person trying to sell you Macbooks for a hundred bucks per unit but you don't know where they came from and who made the holiday photos stored on the harddrive.
- alkonaut 4y ago99% of the "problems" I'm solving when I'm working even on very interesting and challenging problems, are boring subproblems. If I can get those out of the way then that would be great.
- mistercow 4y agoThat hypothesis is easily disproven by spending an afternoon on a side project with Copilot. No matter how interesting your problem is, translating it into code is going to involve a lot of grunt work. This isn’t just boilerplate, but also the large portion of your code which is going to be gluing things together. The time you spend working through those menial parts of your code is time when the context of the interesting part of the problem fades. Once you get the mechanical stuff out of the way, you have to load the interesting stuff back into your brain. This is where AI coding tools really shine. They dramatically reduce the intervals between when you can think about the actual problem you’re solving by letting you get the boring mechanics out of the way more quickly.
- mojuba 4y agoI'm very curious to see some examples where Copilot autocompleted something truly useful and saved you time - and that also disproves my hypothesis that you are doing something boring or with the wrong tools/languages/frameworks. Things that a non-ML autocomplete could do don't count.
- mistercow 4y agoI can give you an example of an entire (well, I still consider it alpha) library I wrote several months ago, using Copilot: https://github.com/osuushi/triangulate https://github.com/osuushi/triangulate This is an implementation of a 1991 paper on polygon triangulation into Go. So the deepest thinking about how to solve the problem was obviously already done for me, but there were a number of edge cases that I had to invent my own solutions to, and the translation itself involved keeping a lot of context in my head. I can’t tell you in precise detail what Copilot did, and what I wrote by hand. I wasn’t taking notes or recording my screen. But there’s a reason you don’t see a lot of blocks in there where I forgot to comment anything, because my entire process for this was “type what I want to do in English, and see if Copilot will generate the next snippet, or something close”. I didn’t do this out of bloodyminded dedication to the AI cause, but because it continued to be an extremely effective way to get the code written quickly. I can give a few specifics: - My linear algebra is rusty, and Copilot was extremely helpful here. I would often just type the basic thing I was trying to do in pretty vague linear algebra terms, and it would generate the formula. - I wrote a lot of tests like this https://github.com/osuushi/triangulate/blob/main/internal/split_monotones_test.go https://github.com/osuushi/triangulate/blob/main/internal/sp.... This is a minor thing, but those aren’t copy-pasted. Instead, I would write the first test, and for the most part, I could just type something like `func TestConvertToMonotones_SquareWithHole`, and it would figure out how to adapt the previous test automatically. - It generates exactly the error strings I want based on context an enormous percentage of the time. I want to stress that I’m just giving a few examples of things that I specifically remember because I talked about them at the time, not characterizing the majority of the experience of using Copilot. The majority of the experience of using Copilot is that you write comments, and then the things you were about to type appear on the screen before you have to type them.
- muzani 4y agoYeah, it's for boring problems. Drawing a circle or detecting a specific format of number in some string, for example.