The Hidden Costs of Software Complexity
Tony Hoare suggested in his 1980 Turing Award lecture, “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.” Having discussed how the non-obvious deficiencies due to complexity can hurt us, how do we go about defending ourselves against these costs?
Here are some strategies you can use:
- Optimize for simplicity
- Define a mission statement for your team or product to align focus.
- Compose large systems from simpler building blocks.
- Clearly define interfaces between modules and services.
- Periodically pay off technical debt.
- Use data to prune unused features.
- Group ongoing projects around themes.