Software Engineering, Software Architecture, Microservices, Distributed Systems, Systems Thinking.
needs to understand how the entire system works in order to make even a small change, then it shall never scale. Hence your ability to extend is not proportional to how many classes and interfaces you have made, but how little a developer needs to understand about the rest of the system in order to