The longer and larger a system grows the harder it is to change its foundations.
This happens because users invest time and resources into many different ways of using a system. As a system grows larger, any change becomes more likely to impact more people.
Examples
- Law: American Constitution has more than 200 years and only 19 amendments.
- Programming languages. HTML was the initial language for creating websites. CSS was invented to expand its capabilities. Further down the road, developers added JavaScript and libraries of predefined HTML/CSS components such as Bootstrap, Tailwinds, Tachyons. HTML is a poorly designed system and it's patched by all the subsequent systems. potentially there could be a better system designed to unify all of the functionality. However, it would be a nearly impossible task to switch to it. The current system is already working. There are a lot of actors are relying on it. It is connected in a long chain of tools, languages and other dependencies. Browsers are built to support it.
- Software: Consider the difference in complexity between old and new software: Photoshop vs. Sketch, Evernote vs. Bear, Microsoft Excel vs. Airtable. Complex software is harder to use. Take Photoshop, for example. As it gained users, it accumulated features without removing redundant ones. Now the software has too many overlapping tools and ways to accomplish the same tasks. Since many users rely on specific features, restructuring or removing them has become nearly impossible. This complexity slows down experienced users and creates a steep learning curve for newcomers.
See more on system design in Mental models create