This might kill your vibe, but I’m not worried about AI replacing Software Engineers

I started learning to code in the late 1990’s using gcc, make, and emacs.

The 2000’s were a huge pivot point in Software Engineering. Three major changes which were very related came together to fundamentally change how software saw built. First, modern IDE’s changed how coding was done. Second, high level languages like Java, C#, and Python became more usable. Third, agile fundamentally changed the way that engineers worked with businesses.

These changes are definitely linked in my mind. In the 1980’s and 1990’s coding was a job. Being a good coder was enough. By the 2010’s that had all changed. Coding was a part of the job, but being a great coder alone really didn’t get you anywhere.

As a Software Engineering Manager I evaluate my team on three primary skills.

Technical expertise

Do you write clean code?

Do you make good architectural decisions?

Do you understand the languages and frameworks?

Domain Knowledge

Do you understand the requirements?

How well can you communicate with stakeholders?

Do you understand secondary and tertiary effects of changes?

Development Process

Can you run agile ceremonies?

Can you work with product team on change management?

Do you understand non functional requirements like performance and audit?

I have found that a strong team will have a balance of these three criteria. Each engineer should have some proficiency in all three, and the team as a whole should be strong in all three.

The interesting thing about these criteria is that they aren’t easily replaced with AI.

Even in technical expertise where it performs the best, AI will definitely hit it’s limits in architecturally difficult problems. It tends to produce bloated code that is not as easy to maintain as clean human code.

The domain knowledge criteria could be interesting. I would love to see deeper integration of AI with Jira. Using a company’s internal documentation to help evaluate new user stories and ask follow up questions could really augment team’s ability to plan effectively.

I’ve been using Copilot for a few months now and I actually really enjoy it. I think that it’s a great tool that will advance the productivity of software engineers, but I am not worried that it will start to replace human software engineers in enterprise environments. Like the IDE, it is a potential huge step forward in engineering effectiveness.

I also see a place for vibe coding in the code spike/proof of concept phases of a project. An engineer and a domain expert spending a few days in a conference room could quickly knock out a prototype with these tools. As long as you aren’t expecting a production ready/scalable system then vibe coding can help businesses hash out new ideas.

Software Engineering is far more than coding. I love tools that can make the lives of software engineers better, and AI is a new tool in this category. Talented software engineers will have a place in businesses for years to come.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *