Top-Down Thinking is Holding Back Software Innovation
management
software engineering
A thought about dependency inversion.
Dependency inversion requires well-designed interfaces. If interfaces are abstract, they can act as a contract. With this contract, different software teams can develop the same software.
Could it be that much of today’s software failures result from an effective formulation of those contracts? This results in a strong coupling of software.
Of course, defining those contracts hands over the control to the fulfiller of the contract. If an internal software team is responible, this means less central planning and more local competition to fulfill contracts. Defining contracts and ecosystems would ease contract fulfillment for external suppliers.