A coder in the world of IT is somebody who writes code in some programming language. More typically they modify code instead of writing it from scratch. This is in response to bugs, feature requests, and so on. In the age of AI, a lot of coding can be automated. While senior people often also code, not all coders are senior.
A software engineer builds systems out of software. This may involve coding, but there are many other ways to create business value with software.
Let’s drive this home through an example.
Suppose the objective is to create some kind of AI-powered analysis engine. A coder would select a few relevant libraries to start with, such as Langchain, get API access to a model or so, and start fleshing out the program code.
A lot of this work can be generated by an AI. The tooling for that is at the moment one of the hottest areas of business development, so it is definitely a realistic approach.
However, a software engineer might consider a few alternative options. Sure, they should be very familiar with the option to write code. But there are a lot of other options.
- It is very conceivable that there exists a SaaS solution (or more than one) that largely fulfills the needs of the business stakeholder.
- It could be a feature from one of the core systems that the data was coming from in the first place.
- Maybe most of the analysis could be done by an Excel or Google Sheets plugin.
- A complete open source package may already exist
These alternatives differ in many dimensions, and the optimal trade-off between advantages and disadvantages is, what I will maintain, an engineering decision.
Dimensions that matter include:
- cost, in particular total lifecycle cost
- speed, as in time to value
- flexibility, to what extent can the solution be customized, or included in a larger portfolio of applications
- the control that the stakeholders have over the solution
- the skills and competences in and around the organization to keep this alive
Just collecting the background information to evaluate these dimensions is a significant task. I have heard estimates that more than 80% of knowledge in organizations is so-called ’tribal’ knowledge. That is the knowledge that is never written down, but is perpetuated in an organization through informal channels. That is the information that, by its nature, will be hard to feed into an AI application.
And then, think of this. The decision to use AI to develop and maintain significant parts of a code base is an important engineering decision in itself.
I have yet to see evidence that an AI tool will bring significant benefit to this situation. Case in point: I asked a chat model for alternative software options for the analysis engine example, and it only came up with lists of technical components and technologies for the coder.
In conclusion, while AI continues to evolve and certainly has the potential to transform certain aspects of coding, and possibly parts of software engineering, I see no evidence that the discipline is in danger of being automated away.