Home About Subscribe RSS

Software Complexity

Tackling Complexity in Software Engineering

Why AI Won't Replace Software Engineers

By Andrew Rousseau. Published on March 19, 2023.

OpenAI Copilot

Throughout the years I've been in software engineering It's been suggested that some new thing that comes along will replace software engineers. Whether this was offshore engineering or open source libraries, the reality is this has never come to pass. Instead we've continually had many openings in software engineering and there's usually a lot of competition over talent.

The reason software engineers aren’t being replaced is that there's always a high level of software complexity and engineering tasks that aren't just producing code. Writing code is only a small part of a software engineer's job and not even the most difficult. Understanding complex systems, managing complexity over time, debugging code, and other maintenance tasks aren't so easily replaced by these substitutes. It is no different when it comes to AI so I’ll say it plainly, AI will not replace software engineers.

Software Complexity Pie Chart

As noted in my post Why Complexity Matters, writing code is actually a relatively small part of a software engineer's job. Instead, maintenance and defects constitute the largest portion of where the time is spent. Even when an engineer is engaged in writing code they spend most of that time on comprehension and navigation. So it is really only in this smallest sliver of an engineer’s effort that AI can possibly be of help.

While we will always need software engineers to understand and maintain software, AI will likely change the way we work. Tools like co-pilot and other means of AI anticipating the code an engineer wants to write could unlock efficiencies in software engineering. For some time to come however the software engineer must be vigilant in checking the accuracy of such generated code. There are many good examples out there of AI generated code with defects.

The term ”hallucination” is used in this field for when AI responds with confidence that isn’t justified by the training data. In the case of software engineering the generated code will likely look as though it will do exactly what you intended but a calculation or some other thing might be slightly off. This may not be caught initially but can have consequences later on in the software. The last thing our end users want is hallucinations in the software our engineers deliver to them.

Most engineering organizations struggle to find the balance between delivering features quickly and maintaining quality systems and software. It is through this struggle that we arrive at the best solutions that are also the most maintainable over time. Offshore engineering resources, open source code, and now AI can all be helpful in this endeavor. However, we will always need quality software engineers and leaders to ensure we find this balance.


Next Post: Specificity and Abstraction in Software Engineering