Extreme Programming in the age of Generative AI, Part 1
Completely incompatible or more important than ever?
In this series, I will define XP and Generative AI and compare the practical applications of both in modern software engineering. How these two seemingly unrelated topics cross paths may very well determine the near-future of software development.
First, however, I need to set the stage. This initial post will give a high-level overview of what Extreme Programming and Generative Artificial Intelligence.
Extreme Programming (XP)
Extreme Programming, or XP, is an agile software development methodology that has been widely and successfully utilized for over two decades. The key values of XP are communication, simplicity, feedback, respect, and courage1.
XP in practice encompasses far more than the act of writing code. It defines best practices for how to structure development teams, how to manage work, and how to ensure code is released quickly and often. Iteration and quick feedback are key values in XP. An organization can adopt some or all of the Extreme Programming practices - any part can exist without the others, but more than likely will produce greater results when combined.
Pair programming, testing code, and keeping code simple and easy to understand are some of the more influential aspects of XP that will affect a developer’s daily routine.
For the purpose of this discourse, it is important to know that software developers practicing Extreme Programming will directly work with other developers consistently. Code is constantly reviewed in real-time. Extensive unit tests and end-to-end acceptance tests are necessary byproducts of the process. Code projects developed using XP will likely look very different than projects developed using alternative ideologies and practices.
Generative AI
Generative Artificial Intelligence, otherwise known as Generative AI, is a type of Artificial Intelligence system capable of generating text, images, or other media in response to prompts2. The seemingly magical ability of these Large Language Models (LLM), trained on vast swaths of text and other data from the internet, to produce conversational text, high-quality responses, and even functional code has captured the attention of nearly every industry in the world.
Some of the most explosively popular Generative AI models are part of OpenAI’s GPT family, which includes GPT-4, GPT-3, Codex, and ChatGPT. While the world is furiously trying to be the first to discover new ways to use this technology, Microsoft and its subsidiary GitHub, have been partnered with OpenAI for years and released Copilot, a GPT Codex model-powered code completion tool, in 2021. While Copilot is not the only AI-infused code development tool, it is the most popular, with over 1 million users. Copilot is also currently the only tool utilizing the GPT-4 LLM, giving it greater capability than its predecessors.
GitHub Copilot
The description of Copilot, taken directly from GitHub’s own documentation, is:
GitHub Copilot is an AI pair programmer that offers autocomplete-style suggestions as you code.3
and
GitHub Copilot is a new AI-powered code completion tool that helps developers write code faster.4
An interesting comparison to Extreme Programming is already presented here by GitHub - “an AI pair programmer”. Does Copilot actually fulfill the XP-derived definition of pair programmer? If yes, how does Copilot compare to the traditional human pairing?
GitHub has claimed, and backed up those claims with survey results and statistics, that software developers are happier and more productive while using Copilot to assist them with their daily programming duties5.
It would seem that even if XP may not be the go-to development methodology for every organization, there is certainly value to the pair programming aspect of it. Would Copilot be so successful if this was not the case?
In the next part of this series, I will dive into how the quickly evolving landscape of Generative AI-powered tooling supplements, replaces, or supports Extreme Programming practices into greater detail.
Disclaimer: Neither the author nor this blog are in any way affiliated with or sponsored by any of the companies or technology products mentioned in this post.
SEO cover photo by Annie Spratt on Unsplash