Software mental models

2026-06-06

The code is not the only product

The code is not the only product of a software engineer, the mental model is also a product. This is why so much time has been spent on the different development models and the many ways to describe software. Development methodologies like agile, scrum, XP and devops are about communication among the developers, users, product managers, operations, and other stakeholders. Development paradigms like tdd, ddd, oop, functional etc are about communication among developers to understand how the code is structured and how it can best be modified or extended.

These are the ways we understand software, communicate what it is doing, and help the people who use it get the results they need.

It is often the case that a business ends up being reflected in it's software and data structures. A rigid business has rigid software, a flexible business has flexible software, and a messy business has messy software. You can take guess where I think your business and software should land. I do not believe AI will let you escape this pattern, and it may push things far into the extremes.

When we use AI, it needs to be instructed in these methods and paradigms to produce code that is easiest to maintain and extend. It is not always great at this kind of architecture or planning on it's own and may not be able to translate the code into business or end-user terms. This is what the job of a software engineer is, and always has been. The code is a means of encoding the business into the machine, and that is still the same.

The developers of the software, however it gets made, whether by prompting AI, written in a high-level language, or punched into machine code, those developers hold the mental model of the software. They can explain it to their users and stakeholders, they can determine if it is performing as needed.

We have had code generators for a long time, and even in recent times things like swagger, openapi, and tools like wsdl2java have generated code from xml or annotated specifications. Wherever the specifications live that generate the code, a software developer wrote those annotations and ran the generator tool.

The AI or code generator needs input at some level from a human that is responsible for the operation of the software. Whoever that human is, is now the developer of the sofware, with those software developer responsibilities on their shoulders.

Even if AI generated lots of code, the value is still there in the mental model maintained by the developer, as well as the communication, verification, and business operations you provide to your users.

Did this resonate with you? Let me know what you think.

Got an idea? Let's Talk

Get in touch