The hot topic of the day is generative AI and in the last year, it has launched itself headlong into the workplace. We’re seeing tools pop up left, right and centre to help lighten the burden of any number of tasks. This has been particularly interesting for software engineers as tools like Github Copilot and Google Bard offer the ability to generate code on a scale never seen before. Some research shows that Copilot “enabled engineers to complete tasks 55% faster than engineers not using Copilot”. These productivity gains are far beyond anything we could have expected before 2023.

Most engineers I know are using generative AI in some capacity, each leveraging it in a slightly different manner and favouring it for some specific tasks over others. I’m not sure if many of them would claim to be 55% faster as a result of their use, but I doubt any would argue the productivity gains they have indeed received. I think the best way I heard generative AI described is it’s equivalent to having a lightning-fast junior engineer as your sidekick. It’s easy to see only the upsides to this tool and use it with reckless abandon. But I think there’s something that engineers, especially ones with less experience, need to be acutely wary of…

Generative AI is great for producing code at speed, but it’s well known for its hallucinations and for producing code of questionable quality. This is mostly fine if you’re trying to hack a script together to automate some process, especially if no one else needs to maintain the code produced afterwards. But if you’re a professional software engineer working in a team, this isn’t going to cut it. Any programmer can get code working, it’s everything else that comes after this that matters.

Don’t let the speed seduce you

When starting your software engineering career, often many tasks you perform take longer than you anticipated. There are many factors at play here but an obvious one is the fact that you are developing new skills. And as everyone who learned to ride a bike knows, it can be a slow and painful process at the beginning. As you learn and develop those skills you become more efficient at them. When you get firing on all cylinders and you are completing tasks swiftly it can be highly satisfying work. To get to this point can take years of practice. With the advent of generative AI, it can be quite tempting to skip the sweating and reap the benefits of AIs’ speed without developing the various necessary skills. Likely, you will get a lot done leaning on this tool, and impress your colleagues as you fly through your first few tasks. But eventually (and I don’t think it would take long) a task will come along where generative AI can’t help you. Maybe it’s working on some poorly documented legacy project in your team. You’ll find yourself flailing for assistance, without the hard-earned skillset that could get you out of the mess. Your progress will grind to a halt and it may become clear to your team how heavily you were relying on the support of your tools.

With convenience comes a waning of skill

Let’s say you have the skills to debug complex issues and refine your implementation so that it’s secure, performant and well-tested. I think with these skills well developed you are on a more stable platform from which to leverage these tools. You will have the ability to modify and adapt the suggestions of generative AI to your needs and ensure they meet your desired quality bar. However, I believe overusing generative AI still poses a risk to you in this case. It’s one thing to develop the skills to be a competent software engineer, but maintaining them is another issue. If you lean too heavily on the convenience of the generated content, you are at risk of losing the sharpness of your skills. It will be a subtle difference at first, but each passing day not using a highly refined skillset is another day of waning. You know the feeling when you go to perform a process that you haven’t done in 6 months. It feels rusty and slow. You can get through it eventually but it’s not pleasant. I think all software engineers are craft-driven to some degree. Any craftsman knows to keep his skills as sharp as his tools.


So, when starting your next task, hold off the temptation to fire a prompt into your generative AI tool of choice, and sit with the problem at hand. Fundamentally you are a problem solver, so take the time to practice this skill whenever you can. Much is learned from those day-long debugging sessions. I believe enduring the pain can be immensely beneficial to you over the long run.