The problem of over-engineering and top down approaches is that the people at the top try to predict the future. They have limited attention resources and the people at the top become a bottleneck to the adaptability of the complex adaptive system.
The answer? To design for complexity and to strategically decide to design resilient, sustainable, adaptable systems. This means moving away from the mechanistic model of design and management.
I encourage all developers to review and comment on this framework.