Writing code with GitHub Copilot for personal projects and expressing ideas
Published on under the Coding category.Toggle Memex mode
I was just reading a post by Rach Smith on "hedonic adaptation" with GitHub Copilot and a few other developer tools. In the post, Rach makes a thought-provoking statement with regard to improvements in developer experience over the last few years:
These were what occurred to me, but in reality, there are probably hundreds of small and significant improvements to the developer experience that I couldn’t even recall because that is the nature of hedonic adaptation.
This post prompted me to reflect on my experience before and shortly after using GitHub Copilot, an AI-powered companion that automatically generates code for you.
I have been using GitHub Copilot since the technical preview programme was launched, during which time the tool has become a key part of my workflow. I have used Copilot in almost all of my personal projects since I got access to the tool. I used to think "with AI code, I will not properly understand my code, which is a problem" but after using the tool and getting to know how it works I no longer feel this way.
GitHub Copilot helps me turn my thoughts into code. I can think about how I want something to work, start an implementation, and let Copilot guide me through the process. Copilot is not substituting the "what I want to build" or "how should I build it?" part of my coding. Copilot instead helps me with the "what lines of code should I write to accomplish this goal" work.
Sometimes, I already know what code I want to write. Copilot can in many cases guess what I want to write and do a fairly good job at writing that code. Sometimes, I know what I want to do ("write a bookmarklet that takes all of the text after a query string and does X", where X is the intended outcome") but I don't fully know how to articulate my ideas in code or I need a little bit of help. I used to search Stack Overflow and Google more often, but now I can often get the answers I want directly in my terminal.
I don't like writing boilerplate code that much anymore. With bigger tasks, such as learning how to use a new library or programming language feature, I go through a cycle that looks like this:
- I'm learning. I'm not very good but I am practicing and learning the task.
- I feel good about a task. I can write it with some reference to documentation.
- I feel confident doing a task by myself or with minimal reference to documentation.
- I can do a task.
Copilot can help me at all of these stages. I can:
- Get help figuring out what it is I need to do in the first place. Copilot can take my idea ("save the faiss index to a file") and write the code. I often have to search Google when I'm looking to use libraries that aren't that popular, but that's fine. Copilot still helps me explore. If Copilot uses a method I haven't seen before, and it comes up again and again, I'm going to learn the syntax myself. Copilot almost institutes spaced repetition by nature since many tasks need to be done more than once.
- Get help writing the boilerplate code I know how to write.
I want to spend more of my time learning about how different things work and what I can do with them as opposed to typing out every single line of code myself. I am starting to realise I prefer to figure out how to take pieces of a puzzle and make something cool with them. For example, I have been thinking about an idea where I could use a camera to narrate different objects in a room. Rather than learn how every piece of that technology would work in detail, I can use APIs other people have built (all open-source for this idea, amazingly!) and connect them to build something cool.
Similarly, I want to treat coding more like connecting pieces of a puzzle and figuring out how to articulate my ideas. Having an AI-powered tool that I can prompt with questions and ask for help has been immensely helpful in my work. I have learned a lot from the recommendations shared from AI.
Going back to Rach's original point, writing well-formatted and functional code has, I think, become easier over the last few years. VS Code sped up my coding, although I'm still learning the tool. Copilot did, too. GitHub makes collaborating on software easy. GitHub Actions, when set up, made CI a breeze for my website. The easier it can be to express ideas in code and turn them into reality, the better.
Responses
Comment on this post
Respond to this post by sending a Webmention.
Have a comment? Email me at readers@jamesg.blog.