The role of the Software Engineer in the age of AI

A consideration of how AI is going to change the role of Software Engineers and the advent of the Software Engineer 2.0

February 01, 20268 min read

Introduction

For the last year or so, I’ve started using AI tools like ChatGPT and GitHub Copilot to help me with my software engineering tasks.

For most of the time, these tools have been a great help. GitHub Copilot has helped me automate boilerplate code generation and create unit tests.

ChatGPT has been a great help in brainstorming ideas, generating documentation, and even helping me debug some tricky issues.

But so far, I’ve found that these tools are best used as assistants, speeding up my work, helping me be more productive, and enabling me to find better solutions to problems, but nothing that could deeply change the way I work.

That is, until I tried Claude. And I know you may think "yet another AI enthusiast trying to sell you the next big thing", but hear me out: I've always been extremely skeptical about AI hype, but we can't keep ignoring the elephant in the room. AI is a thing, and it is already changing the way we work. It is not like when a couple of years ago they wanted to sell you the metaverse; that thing never took off.

For the last week, I’ve been using Claude Max, and in just one week, my way of working has changed deeply, and so has my perception of the role of the Software Engineer in the age of AI.

AI is no longer just an assistant; it is a real component of the software engineering process.

But I want to be clear: This is not a dystopian vision of the future, where AI replaces Software Engineers. On the contrary, I believe AI will just change this role, with pros and cons we can’t ignore.

The role of the Software Engineer today

Before discussing how AI will change the role of the Software Engineer, I want to take a moment to reflect on what this role is today.

I think the role of the Software Engineer today can be summarised in mainly two parts:

  • Engineering: which means designing architectures and finding solutions to problems.
  • Coding: which means writing code, testing it, and debugging it.

This means that currently, the role of the Software Engineer is a mix of high-level thinking and low-level implementation.

There are many engineering roles in other fields, such as civil engineering or mechanical engineering, where the role is mainly focused on high-level thinking, with implementation handled by technicians.

Have you ever seen a civil engineer building a wall? No, because that’s not their job. Their job is to design the wall, find the best materials, and ensure it’s safe and durable. The actual building is done by construction workers.

The changing role of the Software Engineer

The Software Engineer 2.0

With the advent of advanced AI tools, which, as I said, already exist today, I believe the role of the Software Engineer will shift from a mix of engineering and coding to mainly engineering; this is what I call the Software Engineer 2.0.

The so-called Vibe coding just doesn't work. Human engineering is still required to build complex systems, and AI is not yet capable of fully replacing human creativity and problem-solving skills; perhaps it never will.

I've witnessed this with my eyes: I was able to build things exactly as I wanted, by providing a plan to Claude and having it generate the code for me. And the code, no matter how complex, was almost always perfectly written, with an excellent test coverage. When the code wasn't perfect, it was easy for me to guide Claude in improving it.

The fact is, I achieved the same exact results I would have by coding everything myself, but in a fraction of the time. I didn’t feel like I was "cheating" or "taking shortcuts"; I felt like I was using a powerful tool to help me achieve my goals faster.

I felt more like an engineer, focusing on the system's high-level design and architecture, while Claude handled the low-level implementation details.

Would Claude be able to write the same code without a strong engineer guiding it? Absolutely not. It needs a human engineer to provide the right context, requirements, and constraints to generate the code.

Are we just going to become "prompt engineers"?

This is a valid concern, but I believe that the role of the Software Engineer 2.0 is not just about writing prompts for AI tools. It’s about understanding the problem domain, designing solutions, and guiding the AI to implement those solutions effectively.

After all, nowadays, software engineers are more considered for their ability to design systems and solve problems than for their coding skills. Coding is just a means to an end. And writing code has nothing to do with architecturing the code itself, which is still required to build maintainable and scalable systems, even with the use of AI tools. It's just the code's manufacturing that is changing.

So we won't need to learn how to code anymore?

Not exactly. I believe that learning how to code is still essential for Software Engineers, even in the age of AI. However, the focus of learning may shift from mastering specific programming languages and frameworks to understanding fundamental programming concepts and idiomatic patterns. Also, I think in some cases there will always be a level of coding required to fine-tune and customise AI-generated code for specific use cases.

In any case, I still expect the next few years to see reviewing AI-generated code as a core skill for Software Engineers.

But I like coding

That's what concerned me the most when I first started to realise this shift. I love coding, and the thought of not coding anymore was a bit unsettling.

However, I realised that this shift doesn't mean we'll stop coding altogether. We can still code when we want, for our personal projects or when we need to implement something very specific that AI tools can't handle yet.

What about programming languages?

As a Rustacean, I am a bit worried that programming languages could, at some point, be “abstracted away” by AI tools, making them less relevant.

However, I still believe that part of engineering is choosing the right tools for the job, and programming languages remain a crucial part of that.

Will we still be able to be fans of our favourite programming language, though? That may be hard to tell. What I think, though, is that engineers will just have different tools at their disposal for doing their jobs, and perhaps we’ll attend enthusiastic talks at conferences about these frameworks rather than programming languages.


Impact on the job market

It’s worth considering how this shift will impact the job market for Software Engineers.

Since I’m talking about speeding up coding, one could argue that this could lead to a reduction in demand for Software Engineers.

But I believe this may not be the case. I indeed think that what we do today is often done poorly, with many inefficiencies, poor documentation, technical debt, limited test coverage, and so on. Not because we are bad, but because we are humans with limited time, we are often lazy and make mistakes.

Reducing time spent on coding could lead to higher-quality software by focusing more on design, architecture, and testing.

Just for the record, I created a cookbook for my dbms library in 12 minutes, which would have taken me several hours to write myself, and the quality was excellent.

Or what about coverage? Achieving 100% test coverage is one of the most tedious tasks for a Software Engineer, because you often have to write many tests for edge cases you may not even think about. With AI tools, achieving high test coverage could become much easier, leading to more reliable and maintainable software.

So I firmly believe that the demand for Software Engineers will not decrease; instead, the quality of the delivered software will improve significantly.

The victim of the AI revolution: the coder

Any technical revolution has its victims; for example, music streaming platforms killed the CD industry. AI in software development will likely kill the role of the “coder” as we know it today.

Not every person who codes today is a Software Engineer; many people just write code for a living without deeply understanding the problems they are solving or the systems they are building.

Unfortunately, these people may find themselves out of work as AI tools become more prevalent in software development.

I hate to be this negative, but these people should not think this future is far away: it is already happening. Many low-level coding tasks are already being automated by AI tools, and this trend is likely to continue.

However, I believe it's not too late. If you think you are not capable of engineering software systems, you can still learn. There are many resources available online to help you improve your skills and become a better Software Engineer.

Conclusion

In conclusion, the role of the Software Engineer is changing rapidly with the advent of AI tools. While coding will still be a relevant part of the job, the focus will shift more towards engineering and high-level design.

This change is splitting the roles of engineering and manufacturing from the Software Engineer, leading to the emergence of the Software Engineer 2.0.

Of course, this consideration does not take into account many other factors, such as possible limitations of AI tools or the sustainability of AI models, since even those who pay for these services are probably not paying the real cost of running them.