Skip to main content
  1. Blog/

GitHub Copilot — AI Pair Programming Arrives, For Better or Worse

·1043 words·5 mins
Osmond van Hemert
Author
Osmond van Hemert
Developer Tooling - This article is part of a series.
Part : This Article

GitHub dropped a bombshell this week. Copilot, their new AI pair programming tool built on OpenAI’s Codex model, moved into technical preview. It sits in your VS Code editor and suggests entire functions, code blocks, and algorithms based on comments and context. I got access to the preview a few days ago, and I’ve been alternating between being genuinely impressed and deeply concerned.

Let me be upfront: this is the most significant change to the developer workflow I’ve seen since the introduction of intelligent code completion in IDEs. Whether it’s a net positive depends on questions we don’t have answers to yet.

How It Works
#

Copilot is powered by OpenAI Codex, a descendant of GPT-3 that’s been fine-tuned on publicly available code from GitHub repositories. When you type a comment describing what you want, or start writing a function signature, Copilot generates suggestions for the implementation. It can produce entire functions, handle boilerplate, write tests, and even generate regex patterns from natural language descriptions.

The model understands context — it reads the surrounding code, imports, variable names, and comments to produce suggestions that fit your codebase’s style. In practice, this means the suggestions get better the more context you provide. A well-documented codebase with clear naming conventions gets significantly better suggestions than a greenfield file.

The technical implementation is a cloud-based service — your code context is sent to GitHub’s servers, processed by the model, and suggestions are returned. This happens in near-real-time as you type, similar to how autocomplete works in Google Docs. The latency is noticeable but not disruptive on a decent connection.

What It Does Well
#

After several days of use, I’m comfortable saying Copilot genuinely excels in specific scenarios.

Boilerplate and glue code: Writing CRUD operations, setting up HTTP handlers, implementing standard interfaces — Copilot handles these almost perfectly. It’s the code you’ve written a thousand times, and having an AI generate it from a function signature saves real time.

Language translation: I described an algorithm in a comment and Copilot generated Python implementations that I’d estimate were correct about 70% of the time for straightforward algorithms. For utility functions — sorting, string manipulation, date formatting — it’s remarkably reliable.

API usage patterns: When working with well-documented libraries like pandas, requests, or Flask, Copilot generates usage patterns that are usually correct and idiomatic. It’s essentially distilled the collective patterns of millions of developers who’ve used these libraries before you.

Test generation: Write a function, then start writing a test file for it, and Copilot will suggest test cases that cover common edge cases. This was genuinely surprising — it produced test cases I might have missed in a first pass.

Where It Falls Short
#

The failure modes are instructive because they reveal what the model actually is — a very sophisticated pattern matcher, not a reasoning engine.

Complex business logic: Ask Copilot to implement anything that requires understanding domain-specific rules, and it starts generating plausible-looking but incorrect code. It doesn’t understand your business; it understands code patterns. There’s a crucial difference.

Security-sensitive code: This is my biggest concern. Copilot will happily generate code with SQL injection vulnerabilities, hardcoded credentials in example patterns, and authentication flows with subtle flaws. It’s learned from the vast corpus of GitHub code, and frankly, a lot of that code has security issues. The model reproduces common patterns, including common mistakes.

Subtle algorithmic errors: For anything beyond standard algorithms, Copilot produces code that looks correct at a glance but has off-by-one errors, incorrect boundary conditions, or wrong assumptions about data types. The code compiles, the happy path works, but the edge cases fail silently.

The Legal and Ethical Minefield#

Beyond the technical assessment, Copilot raises questions that GitHub hasn’t adequately addressed.

The model was trained on public GitHub repositories, including those under copyleft licenses like GPL. If Copilot reproduces substantial portions of GPL-licensed code in your proprietary project — and researchers have already shown it can reproduce verbatim snippets — the licensing implications are entirely unclear. GitHub’s position appears to be that this constitutes fair use, but that hasn’t been tested in court.

There’s also the question of code ownership. If Copilot generates a function for you, who owns that code? You? GitHub? The original authors whose code trained the model? Microsoft’s terms of service claim you own the output, but the legal landscape around AI-generated content is unsettled territory.

For any organization working on proprietary software, these questions need answers from your legal team before you adopt Copilot broadly. The productivity gains aren’t worth a licensing lawsuit.

The Code Quality Concern
#

Here’s what worries me most as someone who’s spent decades advocating for code quality: Copilot optimizes for code that looks right, not code that is right. The suggestions are syntactically valid and pattern-consistent, but they lack understanding.

A junior developer who accepts Copilot suggestions without careful review is going to introduce subtle bugs at a rate that exceeds what they’d produce writing code from scratch. At least when you write code yourself, you’re forced to think through the logic. Copilot removes that friction, and friction in programming isn’t always bad — it’s often where understanding happens.

Senior developers who can critically evaluate every suggestion will benefit most. They have the experience to spot when Copilot’s output is subtly wrong. Ironically, the developers who need Copilot least are the ones best equipped to use it.

My Take
#

Copilot is genuinely impressive technology. It’s also genuinely dangerous technology if used carelessly. I don’t think it’s going to replace programmers — not this version, not the next few versions. But it is going to change what programming looks like on a daily basis.

My recommendation: if you get access to the preview, use it. But use it the way you’d use Stack Overflow suggestions — as a starting point that requires validation, not as a source of truth. Review every suggestion. Test the edge cases. And for the love of everything, don’t accept security-sensitive code suggestions without thorough review.

The era of AI-assisted coding has arrived. How well it goes depends entirely on how disciplined we are about using it. Given this industry’s track record with “move fast and break things,” I’m cautiously pessimistic. But I’d love to be wrong.

Developer Tooling - This article is part of a series.
Part : This Article