Github Copilot - Will Software Engineering jobs get replaced by AI?
Let's talk about Github co-pilot. If you don't know what it is, GitHub Copilot is an AI pair programmer that helps you write code faster and with less work.
So the million dollar question that everyone seems so worried about — Is GitHub Co-Pilot going to replace your job as a Software Engineer? Short answer: NO. If you are worried about Github co-pilot replacing your job, you probably have bigger problems in terms of your career. But, let us explore the slightly long answer.
If you like watching videos instead, I have a YouTube video on this exact topic, feel free to head over there to watch. If not, continue reading.
Can GitHub Co-Pilot really be a threat to software engineers around the world?
Well, it depends. Because Software Engineer is really a blanket title for many different kinds of job. You could be a web developer, backend developer, solutions architect, automation engineer, reliability engineer, quality assurance engineer and many other things and still identify as a software engineer. And the complexity of the work software engineers do also varies a lot. Some are building state-of-the-art architectures that have 100s of intertwined services and components, while others are simply maintaining existing codebases or creating the same projects repeatedly with minor variations.
When I initially read about GitHub co-pilot, I didn't think of it much — I thought it was just like any other code completion tool, some of which I have even talked about in this channel. However, I decided to dig a little deeper after I got a ton of messages from you guys asking my opinion on it. I tried it for a week and put it through the trials. I started simple by just using it as a code completion tool, then I used it to try to replace some of the repetitive coding I have to do, then I upped the ante by making it solve a bunch of LeetCode problems and finally I tried to make it do my job for an entire day.
The results were surprising, and made me change my stance from "No, GitHub co-pilot is not a threat to your job" to "Well, it depends." Let's look at a few example scenarios. If you are a test engineer and exclusively write unit tests for his job, or if you are an entry level software engineer where you are writing basic Leetcode-type functions or minor optimizations, Github CoPilot can already do some of that, and it wouldn't be hard to imagine it potentially replacing that job function. Or, if you are mostly a front end web developer, it can help you create boilerplate code, write HTML or CSS snippets faster or manipulate elements in the DOM, but design is like art, so I find it hard that AI can fully replace it. It will perhaps evolve the role to be able to produce a fully functional starting point and then the web developer makes changes according to the requirements. Now if you are a full stack engineer with front end, back end with APIs, storage and all, I think this is only going to make you more effective. For example, just a few weeks ago, I had to write a few APIs in C# and the front end was in Python. I hadn't worked with either of those for a while, so I had to look up the semantics of making a POST in Python and parsing the query and reading the POST body as a stream in C#, sanitizing an URL and things like that. Those were simple things, but it took around an hour to look up references, implement and test it out. I tried that this week on Github CoPilot and it can effortlessly produce all that code instantly. That's 1 hour saved for me that I can invest in solving the actual problem. And finally, if you are someone who is more of an architect, who designs large scale systems, there isn't much CoPilot can do for you. You are probably the kind of person that is designing things like GitHub CoPilot itself!
The point I am making here is that Github CoPilot is pretty damn good, and it is only going to get better. However, ideally as a software engineer, your job is ambiguous, full of unknowns, undefined and vague. It will most likely also have a lot of moving parts, cross team collaborations and many different components that run on different technologies and stacks. And if you are doing all this on a daily basis, it will be nearly impossible to replace your job with AI. But if you have gotten complacent to a point where your responsibilities have become repetitive and trivial, it is another story. I see this no different than people asking me if ageism is a thing in Software Engineering. And the answer is NO - you got replaced by a younger, more energetic and more passionate person not because you are old, but because you got complacent and stopped growing. And the only reason you will ever get replaced by AI is also the same. Your only real defense in that case is to keep on learning and continually invest in your growth.
How will something like Github CoPilot most likely be used in the industry?
I can totally see this being used as a "companion" where you inject it as part of your CI/CD pipeline where it scans your codebase and learns code that has been merged into the main branch. Then when you send a pull request, before any humans spend their valuable time, it will give you suggestions and tips for improvement, almost like a Level 1 quality gate before actual engineers review your code. That can prevent feedback roundtrips, save engineering time and also maintain consistency in the codebase.
I was chatting to a friend about this and he mentioned that it could also be used as part of bug triaging. When a bug is filed, Github CoPilot could get context from the bug, then scan the codebase to suggest potential areas to fix. Or if it is simple enough, even provide a potential fix, as a first step in the triaging process. I think this is a great idea and can save a lot of dev hours!
How could Github CoPilot impact the job market?
As far as the impact to engineering in general, as I mentioned before, it can definitely make engineers more productive. As a result, companies could hire less engineers so the market could get more competitive. We don't know yet how much an enterprise version of CoPilot will cost, but as a far-fetched imagination, in big companies that can afford something like CoPilot, perhaps entry level positions will be deprecated altogether. Netflix already follows the "hire-only-senior-engineers" model, and something like this can push other companies to follow the same trend. In that case, fresh graduates may have to get some years of experience from smaller companies before they can join a big tech company.
Obviously these are far fetched thoughts. They may never happen. But whenever a very novel thing happens around computer science, there is always some form of ripple effect in the engineering world. Things like GitHub CoPilot, Tabnine, Kite, they are all trying to do the same thing - make you a more productive software engineer. And that's a good thing! However, whether that will end up also having a negative impact on you will depend a lot on you as an engineer and how these products evolve over time.
Either way, I urge you all to try it out to see how it works for you. I know it's still in Technical Preview right now, so not everyone has access. But join the waiting list if you haven't already and give it a go when you get access and let me know what you think :)