Modularity through components
One of the drivers of maintainability is modularity. Modularity allows us to conquer the complexity of a software system by dividing it into simpler modules. We don’t have to understand the whole system to be able to work on one specific module. Instead, we can focus on that one module and potentially the modules it interfaces with. Modules can evolve mostly independently of each other, as long as the interfaces between modules are clearly defined. We’re probably able to fit a mental model of one module into our working memory, but good luck with creating a mental model if there are no modules in the code base. We would jump around in the code rather helplessly.
Only modularity allows us humans to create complex systems. In his book Modern Software Engineering, Dave Farley talks about the modularity of the Apollo space program:1
1 Modularity of the Apollo space program: Modern Software Engineering by Dave Farley, Pearson, 2022...