Software Pliability
Quoting myself from former days on Twitter:
Businesses have a mental model of what they do.
Businesses build software to help them do it—a concrete manifestation of their mental model.
A gap always exists between these two.
What makes a great software business is their ability to keep that gap very small.
I think this holds up. And I still think about this idea (hence this post).
Software is an implementation of human understanding — people need X, so we made Y.
But people change. Businesses change. So software must also change.
One of your greatest strengths will be your ability to adapt and evolve your understanding of people’s needs and implement it in your software.
In a sense, technical debt is the other side of this coin of change: an inability to keep up with your own metamorphosis and understanding.
In a way, you could analogize this to the conundrum of rocket science: you need fuel to get to space, but the more fuel you add, the more weight you add, and the more weight you add, the more fuel you need. Ad nauseam.
It’s akin to making software.
You want to make great software for people’s needs today. It takes people, processes, and tools to make software, but the more people, processes, and tools you add to the machine of making software, the less agile you become. So to gain velocity you add more people, processes, and tools, which…you get the idea.
Being able to build and maintain pliable software that can change and evolve at the same speed as your mental model is a superpower. Quality in code means the flexibility to change.