What it's like to write code with GitHub Copilot, and why it's not the end of programming

How does AI fit into my workflow?

I'm a full-stack freelancer for early-stage startups--that means I compete with No-Code tools, agencies, and especially offshore.  Every day that I work, I'm expected to deliver significant progress on new features day, since many of my clients are short on funds--therefore, there's quite a bit of pressure.

I'm also "polyglot"--which means I specialize in learning common elements between multiple frameworks and programming languages, and then using that wide understanding to deliver results for my clients--it also means I'm constantly looking stuff up on Google, StackOverflow, and spending huge amounts of time on a spaced repetition system to memorize the important bits of each language/framework.

AI should be able to help me.

GitHub CoPilot: stranded offline

After many breathless software developers exclaiming "the end of programming" on Twitter, I decided to give GitHub Copilot a try, which is an AI plugin you can install in your IDE or text editor to recommend code for you.

In my case, I installed it in Vim, and was quickly disappointed when these outgoing network requests hit my firewall:

You see, GitHub Copilot doesn't ship the model to your computer--it runs the model on a server and then connects a web socket to your local machine, feeding you recommendations--so if you're offline, you're out of luck.

GitHub CoPilot: discovering its helpfulness

After getting the plugin installed and setting up my firewall, I was pleasantly surprised that it gave me useful recommendations that I would actually use in my code:

GitHub CoPilot: awkward workflow for a senior developer

Normally, my workflow looks like this:

  1. read code and understand it
  2. write down a plan of what I want to accomplish
  3. write down the files and functions that needs to be changed to execute the goal
  4. execute the code change

It's an aggressive workflow where I spend as little time as possible writing code--a lot of time is invested up-front, a lot of work is done outside of my code editor, and then the source code change is all executed at once in a final "render" phase, after I fully understand my goal--Step 4 is where GitHub Copilot could really help me.

I was planning on using Copilot as a really smart auto-complete, that could save a lot of typing time, and save time looking up the exact arguments for the different functions that I use.

The reality was, I type very fast, and there was about a half-second to two-second delay before the recommender returned with a code suggestion--often times I would have already typed out the majority of the code snippet before Copilot would return with a recommendation.

I uninstalled it, and continue to run vanilla Vim with syntax highlighting, a couple Git plugins, and that's it.

GitHub CoPilot verdict

In my own case, as a senior developer with a spaced repetition system supporting my work, where the source code is treated as just a render artifact and not the core of my work, Copilot was not useful--hardly "the end of programming".

There was an alternate workflow, where you write comments and have Copilot write the code for you, but I didn't need this, since I already knew how to program, and it was too slow to be useful anyway.

In the future, I could see an open-source version of Copilot being useful to me, that ran locally.

Our role as software developers isn't going away any time soon

If I really tried, I could make Copilot and AI useful to me--but I don't have time for that.  I'm busy solving real problems for real people.
As for junior developers, I could see AI solutions like Copilot both helping them and hurting them:

  • helping them by quickly solving errors and problems in code
  • hurting them by being a path-of-least-resistance around documentation and actual understanding, leaving them helpless in the long-term

I'm very impressed with the technical accomplishments with ChatGPT, but as with most things in life, my overall outlook is people-focused, not tool-focused.

Raphael Spencer

Raphael Spencer

Writing about polyglot software dev in the startup space. I break down the systems for success, and share tech tips I find along the way.
Green Bay, Wisconsin