Pairing up with AI: My Unconventional but Effective Programming Partnership

Pairing up with AI: My Unconventional but Effective Programming Partnership

This is the story of creating a demo app in Node.js and the “extreme programming” process I employed.

Jesse Tayler
5 min readApr 10, 2023

--

Firstly, if you’ve read headlines about ChatGPT programming a WordPress plugin for you, or building your e-commerce store, this is not going to be that kind of story.

This is a story about the evolution of computer science and successful software construction process. I often tell students of software management that a Cathedral is made with one million times less stone than a Pyramid; the difference is not the material, the difference is knowledge. Architecture; software construction, has an even greater spectrum of performance than real world materials.

“a Cathedral is made with one million times less stone than a pyramid; the difference is not the material, the difference is knowledge…”

Despite the evolution of programming tools and methods over the years, the most critical aspect of programming remains the same: research and problem-solving. In reality, we tend to overemphasize the coding aspect and overlook the true challenge of programming, which is knowledge acquisition and problem-solving. Mastery of these skills is essential for any successful programming endeavor.

“fast access to knowledge is the ultimate asset…”

As a seasoned computer scientist and software inventor, I’ve dedicated my career to tackling novel and complex problems. This process often involves extensive trial and error. In a field where the speed of problem-solving is critical, fast access to knowledge is the ultimate asset.

From Textbooks To Stack Overflow

Throughout the history of computer science, the unrelenting need for dependable access to knowledge and information has fueled the evolution of problem-solving methods. While the tools we use have transformed from traditional textbooks to online documentation and more recently into platforms like Stack Overflow, the ultimate goal remains the same — to research problems and find solutions. Despite the advancements in technology, research and problem-solving still consume the majority of our time and effort, compared to the actual coding aspect. This fact is often overlooked by project managers who focus on code reviews and visible features.

To make effective and efficient progress, especially when facing complex challenges, the best of us pair up and work together. This is known as Pair Programming or Extreme Programming (XP), a software development methodology that emphasizes collaboration and rapid feedback cycles, and focuses on software design and communication.

The late 1980s was a golden era of software invention and the emergence of Extreme Programming practice, a commonly utilized strategy of agile software development process.

One engineer acts as the “driver” who writes the code while the other acts as the “navigator”. The navigator is doing the research and offering ideas and solutions while the driver is taking control and making final choices over what is written.

In this experiment, ChatGPT, an artificial intelligence, was my navigator while I acted as the driver. Together, we were able to share ideas and perspectives, leading to more creative solutions based on in-depth research.

During one instance, ChatGPT suggested an approach that caught me by surprise. It proposed a test to identify member profiles with verified identity by accessing an HTML CSS tag vs. filtering the array which would be the approach taken by nearly any human. My initial reaction was to ask — “Is that a valid test?”. In response, ChatGPT walked through the logic behind the code and where the tag was created. The proposed test was valid indeed, showcasing ChatGPT’s ability to not only suggest solutions but also explain its functionality and back up it’s own claims.

ChatGPT is a “creative” programmer with mid to senior-level computer science skills. While it can write javascript, create Docker files, and generate documentation, it does not know how to make a finished product. As the computer scientist, you are the driver.

Working with ChatGPT can be both profoundly useful and frustrating. It can offer foolish ideas and consider silly solutions. It can be foolhardy or brain-dead. It can also be delightfully creative and broadly knowledgeable, all while constantly reminding you of collaboration with your real human partner.

With ChatGPT as your navigator, you get tireless support in problem-solving and a running context about what has been done and considered. Interestingly, ChatGPT does not seem to be able to recall its own use of words, for instance, if you ask, ChatGPT will not be able to count the number of times it used a word or other such specifics while it certainly tracks the turn of conversion.

What was it good at?

Reseach. ChatGPT is capable of researching error messages, strategizing solutions, and explaining the logic behind proposed ideas. It excels at processing knowledge, facilitating conversations to ensure shared understanding, and evaluating solutions. Conversation. Collaborating with ChatGPT is akin to pair-programming between two engineers, and AI proves to be a thoughtful partner.

And what was it bad at?

ChatGPT is not able to perform tasks on its own, as it requires human direction. It has no will or intention. It’s not proficient at understanding the broader context of a problem. However, as a navigator it excels at conducting research, suggesting solutions, and explaining the reasoning behind them. ChatGPT can be a valuable tool for complex tasks and collaborating on solutions, but ultimately, it is up to the driver to make decisions and implement solutions.

And what does it all mean?

The experience of collaborating with ChatGPT felt like a typical code review in pair programming — there were challenges, questions, and dialogue that ultimately led to a better outcome, and at a much faster pace. The similarity to human interaction is astounding.

While this tool goes beyond merely searching Stack Overflow, it is important to remember that ChatGPT is a tool, not a magical app maker. To maximize its benefits, you will need to learn how to effectively work with it. You must assume the role of a senior engineer and computer scientist, making the right choices to achieve success in any endeavor.

Overall, ChatGPT’s contributions are impressive, earning it the accolade of being “thinking”, or even “creative” —terms normally reserved for biological beings having a brain.

From this day forward, it will be very hard to imagine programming anything either serious, or casual, without this tool as a dedicated navigator.

This changes…everything.

This story relates to a small open-source project you can review here: https://github.com/jtayler/trusted#readme

If you would like to learn more about software process and Jesse’s uniquely useful methodology, read here: https://beyondagilethebook.com/

--

--