Systematic reuse is hard because it isn’t a problem that technology alone can solve. It requires a various practices that have to be executed in a coordinated manner across teams and projects. Here is a starter list of practices to consider for success with systematic reuse:
- allocating resources including changes to budgeting practices for funding shared capabilities
- setting up appropriate incentives for developers, technical leads, and management staff
- creating a roadmap for increasing organizational agility – reduced time to market, increased flexibility, increased quality – across multiple processes and applications.
- recognizing failure signs and course-correcting – not only for large initiatives but for individual asset development as well. Don’t forget the need to involve your consumers in addressing delivery and integration challenges.
- utilizing product line management techniques for identifying, managing, capturing, and realizing variability in business capabilities.
- explore reuse opportunities not only business functionality but also with IT processes such as bug tracking, problem management, incident management etc.
- align reuse efforts closely with other initiatives such as service oriented architecture, business process management, master data management etc.
- Provide training to developers, technical leads, and development managers on what is available, what is being planned, and how the resuable asset inventory is managed/evolved. Make your teams buy-into the effort.
- Look for reuse opportunities throughout the entire development cycle- not just during implementation! You can reuse requirements, analysis patterns, domain models, business processes, as well as documentation.
- Aligning reusable assets with business goals/objectives. Remember: the rationale for reuse is to reduce costs and increase revenue for your firm.
- Communicate reusable assets within your immediate team, then your department, before taking it organization-wide. Without a support and maintenance strategy in place, your reuse efforts cannot be sustained.
- Address Non Functional Requirements (scalability, reliability, etc.) when creating resuable assets.
Does this resonate with your experience? what is missing in this list?