Agree 100% . I think also by keeping the perimetre of the product under control; it is easier to understand for the user and the developer, it satisfy the principle of less surprise; it keep the vision and the focus in the long term and in then end make clearer what the product does and what cvalue it brings.<p>I would say my reflection to achieve this would be to define<p>- what is the product perimetre<p>- what architecture&#x2F;design principle will bring you capabilities and useful abstraction<p>- what are the best interface&#x2F;extension points for allowing user to extend the usage easily<p>Then hard work, iteration and pivot