The story of improving modularization in multiple projects with 15+ contributing teams, hundreds of modules with complex module structure and how making order in the module graph brings the benefits from the modularization to your organization and prevents the high costs.
The talk will first explain the basics of modularization with focus on why we modularize and how to measure the desired impact of the modularization to understand the benefits it brings to your product and organization.
Modularization has been with us for many years, yet there are still many traps to avoid and we will highlight how to not over-modularize.
Module graph will be explained, its impact on build time, engineers’ contributions, how to measure the healthiness of the graph and how to flatten the graph to achieve real improvements. We will highlight the good practices on how to decouple modules, how to loosely connect modules together, which traps to avoid and common sources of module coupling with their solutions.
We will factor into our modularization strategy a “cost of module”, which is not neglectable and balance that against the benefits modules bring. We will look for good modules and bad modules to optimize and make sure that all modules bring positive value.
The talk will show how to measure and automatically identify problematic modules and its dependencies paths within our module graph to enable prioritizing whilst incrementally improving the graph.
Observed impact on the metrics of build time, contributions across teams, cost of modules and more will be shown. Insights will be shared on how to convince the organization to invest engineering time into modularization and how to synchronize the effort across teams from different departments. Modularization is treated and prioritized as a business enabler rather than just engineering.
The modularization journeys keep showing that if we invest effort, the return of that investment can come back soon. Yet modularization also shows us that it is crucial to focus, explain and measure exactly why we modularize and point our efforts in the right direction to prevent getting more cost of modularization than benefits.