
It is very clear that for systems of reasonable complexity (i.e. anything beyond toy examples) that increasing the complexity by ten percent adds far more than ten percent to the time to deliver, and far more than ten percent to the required effort to deliver. Therefore fighting complexity at every opportunity pays dividends over the life of the product.

Occam’s Razor is one of the most powerful tools in our armoury. Each area of uncertainty adds complexity to the product, adding to the developers workload. Each unit test that delivers certainty simplifies the developers work load. Each opportunity to simplify missed adds cost to the project for all developers. This is one reason why refactoring not only reduces technical debt, but improves the ability to deliver. Just making the code more understandable – ie. simpler, without changing the functionality has changed the rate at which new features can be produced.
