Will AI make Software Engineers obsolete?

Will AI make Software Engineers obsolete?

Even if you don't work in the world of technology, you've probably not missed a little thing called "Generative AI" that has been in the news a fair bit recently. It feels like stories about ChatGPT, OpenAI, Gemini and other names in the field are mentioned daily and there's a lot of speculation on what these tools might be capable of and, in particular, whether jobs will be wholesale replaced by them.

Today we'll take a look at this concern with a specific lens on Software Engineering.

Why is there so much excitement?

Recent advancements in Large Language Models have resulted in some really amazing productivity tools for Software Engineering. The biggest leap forward has been the ability for humans to write a description of the behaviour they want in natural language and have the model return back source code that implements it.

Although it's not perfect (more on this later), the ability to go from zero to working code in this way has lowered the bar to entry so much that almost anyone could start to use these tools to code. It takes the ability to program out of the domain of professional engineers and puts it in the hands of the masses. Want to write an Excel macro to automate something in your finance spreadsheets? Ask AI. Want to write a fun game in Python that your kids have come up with a concept for? Ask AI. Want to draw a flow chart and have it give you back a working application? Ask AI!

With this incredible leap in AI capability there is a perfectly sensible question being asked - are Software Engineers on a path to extinction? Can anyone become a programmer now and are humans even needed at all?

Time to look for a new profession?

Well, no, not yet...

The thing is that Software Engineering is about much more than just knocking out code. While AI has got pretty good at the Software bit of the job, it's not so good at the Engineering - and this is where the most important value of the craft comes from.

A recent study of code in GitHub (about 153 millions lines of it) over 4 years shows that there has been a much greater amount of "churn" since Copilot and other code writing AI tools were released - churn is code that has been written and then had to be effectively re-written within 2 weeks because it wasn't up to scratch. There are also indications that the amount of copy-pasted or duplicated code has increased. These can't necessarily be blamed wholesale on AI tools as it is unknown how these code repositories were developed, but there is a substantial uptick in these negative code attributes since their introduction and it's understandable why this would happen.

As described earlier, the bar for entry has been reduced and while this is excellent on the one hand, it is likely to result in the above outcomes. Those who can now use an AI tool to code (almost anyone) but don't know how to engineer code well (almost everyone) will inevitably produce poor code because neither they nor the AI tooling have the skills to scrutinise the code and improve it.

To illustrate this further, here are some of the things a Software Engineer will consider as they write code that current AI models are not capable of:

  • Quality Assurance - testing of code, automated or manual, is crucial if you want your code to behave how your users expect it. Crafting good test scenarios (knowing what to test and how to test it) is a skill and the quality of your suite of tests can mean the difference between a great and poor product. Here's the interesting thing - every piece of code that exists up until recent times has originated from humans and if there's one certainty in life it's that humans write code with bugs as soon as the implementation becomes complex enough to be interesting. And what have our AI companions been trained on? Code written by humans! Which means if they're asked to write anything more complex than trivial examples, they will inject bugs that they've learnt from us. QA is just as important as ever!
  • Performance - if your code needs to be optimised in one way or another to meet user needs, e.g. a highly responsive website, then you'll need to consider carefully how it is implemented and how to achieve the desired user experience without compromising on other requirements, like security...
  • Security - this is a deep and complex field that catches even experienced engineers out, and is also where the highest risk is likely to be if your code is doing anything of importance. Being able to assess your system, identify threats and mitigate them robustly in your code is crucial in the modern day.
  • Maintainability - code isn't just written once and forgotten. It is likely to be written and re-written many times over years of service of whichever system it's in, and as such needs to be maintainable. Considering code design and refactoring code to make it more maintainable by future humans (or machines) is an important skill. It's like saving money for your future rather than leaving yourself with debt!

An AI simply cannot understand these concepts, why they're important and how code should be written to avoid these - and neither does the entry-level programmer who has just picked up the tool to generate something quickly, which is likely why we see the proliferation of poor quality code occurring.

You might ask if this is really a problem. Again, for very simple applications it might not matter. But as you progress to more complex pieces of code, maybe a web site for someone's online shop or a parents' portal for a local school, the importance of security, robustness and quality becomes far more obvious. The risk is that novice programmers, with confidence bolstered by the power of their tools, start putting services on the internet with little consideration of the impact of them being hacked or becoming unavailable.

AI! Huh! What is it good for?

Not "absolutely nothing", but it's good to be clear on where it shines and where it doesn't!

While AI code generation provides a fantastic productivity boost for the novice and professional alike, as we see above that really is where it reaches its limits. I predict the trend towards higher volumes of poor quality code will continue as AI tools become more and more widely used (the bar is lowered).

But I also predict that the practice of Software Engineering has a long future with humans bringing the key value to the process. I would strongly encourage anyone in the field to take up use of some of these tools and see what productivity improvements you can gain from them. I'd also encourage you not to consider changing profession quite yet, as we're a long way from being obsolete!



[Header image designed by Freepik, an awesome AI image generator]

Jen Reid-Schram

VP of Technology @ Cirium | Results-driven leader | Inconsistent swim-bike-runner

7 个月

I find this topic similar to the discussion on whether AI will take over image and video production. No doubt it will be a useful aid, but until it can properly understand the laws of physics and the distinctly human concept of beauty, it will never truly replace humans. The laws of good software engineering are more complex and enigmatic than the laws of physics and beauty combined ??

Adrienne Leonard, PhD

Head of Data Science at Cirium

7 个月

I think jobs evolve, but AI won't make anyone with specialised knowledge obsolete. I welcome the emergence of AI because I've seen so many instances of incredibly smart people spending inordinate amounts of time on things that aren't using their skills and expertise and ultimately are necessary-but-low-value. AI can pick up that load, but despite its appearance of intelligence, isn't anywhere near smart enough to replace real, human intelligence and expertise!

Chris O’Connell??

Scaled & Sold My £25M Recruitment Business ??NED ??Now I Mentor Recruitment Leaders To Do The Same ??Host: Purpose-Led Leadership Podcast ???Speaker

7 个月

I think if we learn to work with AI, rather than battling against it, variations on every job will still exist.

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了