Originally posted on my Substack
Looking back in my work experience I can see how often this principle holds true.
Simplicity and flexibility are often in tension with each other. When you focus on simplicity in the design of a system, it becomes easier to change and adapt to new situations. If you focus on flexibility, you may end up with a system that is harder to understand, use, and maintain.
By focusing on simplicity, we strip away unnecessary logic, dependencies, and complexity. This is because we don't try to optimise, or cater, for potential future scenarios. As a result, we create a streamlined system that is easy to understand and change. We reduce the cognitive load of working with the system. This allows more flexibility because there are fewer constraints and dependencies to consider. Making it easier to change and adapt to meet new requirements.
By focusing on flexibility, we may end up with a system that is harder to understand and maintain. This is because flexibility often requires more options, configurations, and dependencies. All which increase the cognitive load to operate and maintain the system.
In summary, simplicity often leads to greater flexibility in the long run. And we do that by avoiding unnecessary complexity.
Top comments (2)
I know this is a pretty abstract concept, but could you provide a code example where this might apply?
Great idea Ben. I will put something together to follow up!