Programming in the age of AI

Over the last couple of months, as I've transitioned out of full-time parenting and back into software engineering, I've been leaning into GitHub Copilot and ChatGPT as part of my workflow. While I can appreciate the fear that some feel around these tools, they are here to stay, so it's incumbent upon everyone to understand how they can leverage them.

What has struck me is that these AI tools are the best unblockers to many programming problems I've ever encountered. I have a pairing partner ready to answer my questions 24/7 and help me work through challenges.

For example, this week, I was deploying a Docker container to AWS Elastic Container Service and trying to put that container behind a load balancer. While I understood what I was trying to achieve at a high level, things needed to be fixed. I've worked with many different services over the years for deployment, including AWS, but this was the first time I'd tried this setup. I'm sure anyone who has tried to stand up a service for the first time can relate.

In days gone by, I would have hammered away, read docs, tried some things, read logs, tried some more things, and muddled through. However, discussing the problem with ChatGPT, I was able to hone my search. Looking back at it, what ChatGPT did was help me debug my challenge as if I were more experienced with the tools I was using. And I solved the problem faster.

The key for me was that ChatGPT didn't solve my problem. Instead, it gave me a list of things to check, given my explanation of what was happening and what my expected behavior was. Working through this list, I found the problem relatively quickly.

There are absolute drawbacks, of course. ChatGPT only sometimes produces results based on the latest documentation, as expected. I've been working a lot with Next.js over the last several weeks and exploring the many fantastic features of the App router. In asking ChatGPT questions, I've found that the answers often skew toward the Pages router. This is a temporary condition, but it's important to remember that the advice you're getting may not represent the bleeding edge of whatever technology you're using. In these situations, it's best to remember, "Read the friendly manual!"

My takeaway is this: these tools will make you better at what you're already good at; they will not stand in your place if you have no idea what you're doing. You must leverage what you already know and work with an open mind. If you can do that, you'll quickly see how much AI can speed up your workflow without removing you from the equation altogether.