154 lines
8.0 KiB
Plaintext
154 lines
8.0 KiB
Plaintext
• [2]Home
|
||
• [3]About
|
||
• [4]Tags
|
||
• [5]Bookmarks
|
||
• [6]Photos
|
||
• [7]Podcasts
|
||
• [8]Music
|
||
• [9]Software
|
||
• [10]Mastodon
|
||
• [11]Talks
|
||
• [12]Web Archives
|
||
• [13]Feed
|
||
• [14]🎁
|
||
|
||
Why I don't use Copilot
|
||
|
||
June 4, 2023
|
||
[15]programming [16]artificial-intelligence
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
TL;DR Don’t install Copilot. It rots your brain and destroys the environment.
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
[rubber-duc] [17]A rubber duck in use by a developer to aid code review
|
||
|
||
[18]GitHub Copilot is a technology that is designed to help you write code,
|
||
kind of like your partner in [19]pair programming. But, you know, it’s not an
|
||
actual person. It’s “A.I.”–whatever that means.
|
||
|
||
In principle this sounds like it might actually be a good thing right? I know
|
||
several people, who I respect, that use it as part of their daily work. I’ve
|
||
heard [20]smart people say AI coding assistants like Copilot will democratize
|
||
programming, by making it possible for more people to write code, and automate
|
||
the drudgery out of their lives. I’m not convinced.
|
||
|
||
Here’s why I don’t use Copilot (or ChatGPT) to write code:
|
||
|
||
1. Copilot’s suggestions are based on a corpus of open source code in GitHub,
|
||
but the suggestions do not mention where the code came from, and what the
|
||
license is. GitHub is stealing and selling intellectual property.
|
||
2. Copilot lets you write code faster. I don’t think more code is a good
|
||
thing. The more code there is, the more code there is to maintain.
|
||
Minimalism in features is usually a good thing too. Less really is more.
|
||
3. As more and more programmers use Copilot it creates conservativism in
|
||
languages and frameworks that prevents people from creating and learning
|
||
new ways of doing things. Collectively, we get even more stuck in our ways
|
||
and biases. Some of the biases encoded into LLMs are things that we are
|
||
actively trying to [21]change.
|
||
4. Developers become dependent on Copilot for intellectual work. Actually,
|
||
maybe addicted is a better word here. The same could be (and was) said
|
||
about the effect of search engines on software development work
|
||
(e.g. Googling error messages). But the difference is that search results
|
||
need to be interpreted, and the resulting web pages have important context
|
||
that you often need to understand. This is work that Copilot optimizes away
|
||
and truncates our knowledge in the process.
|
||
5. Copilot costs money. It doesn’t cost tons of money (for a professional
|
||
person in the USA) but it could be significant for some. Who does it
|
||
privilege? Also, it could change (see point 4). Remember who owns this
|
||
thing.
|
||
6. How much [22]energy does it take to run Copilot as millions of developers
|
||
outsource their intellectual work to its LLM infrastructure? Is this
|
||
massive centralization and enclosure really progress in computing? Or is it
|
||
a [23]step backwards as we try to [24]reduce our energy use as a species?
|
||
7. What does Copilot see of the code in your editor? Does it use your code as
|
||
context for the prompt? What does it store, and remember, and give to
|
||
others? Somebody has probably looked into this, but if they have it is
|
||
always up for revision. Just out of principle I don’t want my editor
|
||
sending my code somewhere else without me intentionally doing it.
|
||
8. Working with others who use Copilot makes my job harder, since they
|
||
sometimes don’t really understand the details of why the code is written a
|
||
particular way. Over time Copilot code can mix idioms, styles and
|
||
approaches, in ways that the developer doesn’t really understand or even
|
||
recognize. This makes maintenance harder.
|
||
|
||
As far as I can tell the only redeeming qualities of Copilot are:
|
||
|
||
1. Copilot encourages you to articulate and describe a problem as written
|
||
prose before starting to write code. You don’t need Copilot for this. Maybe
|
||
keep a work journal or write a [25]design document? Maybe use your issue
|
||
tracker? Use [26]text to communicate with other people.
|
||
2. Copilot is more interactive than a [27]rubber duck. But, it turns out
|
||
Actual People are even more interactive and surprising. Reach out to other
|
||
professionals and make some friends. Go to workshops and conferences.
|
||
3. I could be convinced that Copilot has a useful place in the [28]review of
|
||
code rather than the first draft of code. It wouldn’t be a replacement for
|
||
review by people, but I believe it could potentially help people do the
|
||
review. I don’t think this exists yet?
|
||
4. Copilot makes me think critically about machine learning technology, my
|
||
profession and its place in the world.
|
||
|
||
Maybe my thinking on this will change. But I doubt it. I’m on the older side
|
||
for a software developer, and (hopefully) will retire some day. Maybe people
|
||
like me are on the way out, and writing code with Copilot and ChatGPT is the
|
||
future. Maybe programming has always been about increasing layers of
|
||
abstraction and this is just the next logical layer. I really hope not.
|
||
|
||
I enjoy programming because it’s about reasoning, thinking, models, concepts,
|
||
expression, communication, ethics, reading, learning, making, and process. It’s
|
||
an art and a practice that is best done with other people.
|
||
|
||
Increasingly I think it’s imperative for programming to be done more slowly,
|
||
more deliberatively, and as part of more conversations with more people. The
|
||
furious automation of everything is eating the world.
|
||
|
||
Programs need to run more efficiently. Programs need to be well understood, by
|
||
a more diverse and varied set of people. Programs need to be robust and
|
||
resilient. Programs need to be easier to change.
|
||
|
||
Can Copilot help with these [29]goals? I think the answer is no, because it
|
||
doesn’t actually understand anything, and more importantly, it doesn’t promote
|
||
understanding.
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Update (2023-06-09): For another take on Copilot that uses this post as a
|
||
jumping off point see Vivek Haldar’s [30]Re: Why I don’t use Copilot.
|
||
|
||
Unless otherwise noted all the content here is licensed [31]CC-BY
|
||
|
||
|
||
References:
|
||
|
||
[2] https://inkdroid.org/
|
||
[3] https://inkdroid.org/about/
|
||
[4] https://inkdroid.org/tags/
|
||
[5] http://pinboard.in/u:edsu
|
||
[6] https://www.flickr.com/photos/inkdroid
|
||
[7] https://inkdroid.org/podcasts/feed.opml
|
||
[8] https://bandcamp.com/edsu
|
||
[9] https://github.com/edsu
|
||
[10] https://social.coop/@edsu
|
||
[11] https://inkdroid.org/talks/
|
||
[12] https://inkdroid.org/web-archives/archives/
|
||
[13] https://inkdroid.org/feed.xml
|
||
[14] https://bookshop.org/wishlists/d7c0224f5440df8d2c174ad2cc38b3fca1aa813f
|
||
[15] https://inkdroid.org/tag/programming
|
||
[16] https://inkdroid.org/tag/artificial-intelligence
|
||
[17] https://commons.wikimedia.org/wiki/File:Rubber_duck_assisting_with_debugging.jpg
|
||
[18] https://en.wikipedia.org/wiki/GitHub_Copilot
|
||
[19] https://en.wikipedia.org/wiki/Pair_programming
|
||
[20] https://changelog.com/podcast/534
|
||
[21] https://www.wired.com/story/tech-confronts-use-labels-master-slave/
|
||
[22] https://dl.acm.org/doi/pdf/10.1145/3442188.3445922
|
||
[23] https://www.washingtonpost.com/technology/2023/06/05/chatgpt-hidden-cost-gpu-compute/
|
||
[24] https://www.jasonhickel.org/less-is-more
|
||
[25] https://en.wikipedia.org/wiki/Software_design_description
|
||
[26] https://graydon2.dreamwidth.org/193447.html
|
||
[27] https://en.wikipedia.org/wiki/Rubber_duck_debugging
|
||
[28] https://en.wikipedia.org/wiki/Code_review
|
||
[29] https://permacomputing.net/
|
||
[30] https://vivekhaldar.com/articles/re--why-i-don-t-use-copilot/
|
||
[31] https://creativecommons.org/licenses/by/4.0/
|