I’ve written previously about systematic reuse being hard, the rationale for taking an agile approach, and the need for pursuing it within the context of business objectives. How do you know you are succeeding and that your efforts are having a positive impact? Here are a few signs to look for:
- Developers and team leads think about functional capabilities first and implementations next. Teams also start to recognize reusable functionality across applications and projects.
- Teams have constructive conversations about reusable assets.
- Development/maintenance costs are distributed across reusable and application specific assets
- Legacy system capabilities are reused by wrapping native APIs with external/target interfaces
- Reusable assets are identified and evolved at varying levels of granularity i.e. assets could be simple utilities, components, services, business workflows, etc. and reuse is integrated with other initiatives such as business process management (BPM) and service oriented architecture (SOA).
- Applications iteratively get transformed from being mostly consisting of application specific code to a mix of application specific and reusable assets. Over time, reusable assets become more sophisticated and start to provide a variety of technical and domain-specific capabilities.
- Reusable assets are built not for perfection. User stories are continuously aligned with evolving reusable capabilities.
- Reusable assets are organized in a easily accessible location and designers utilize these assets during design and not only when writing code.