Unfortunately, reuse is a lot easier to talk about than it is to implement in practice, at least beyond the personal level. There are several reasons why reuse engineering is difficult to achieve:
- There is a greater impact when shared assets break. When an asset is used in only one place and it breaks, then the impact of that breakage is limited to that one place. When an asset is reused in dozens or hundreds of places, and it breaks, then the impact is significantly larger. This is reusable assets need to be of high quality.
- We must go beyond personal reuse. Reuse is often described as not “reinventing the wheel,” and an important step for succeeding at reuse is to understand that you have more than one option at your disposal (as you see in Figure 1).
- Reuse/sharing requires enterprise awareness. For (re)use to succeed teams must understand that the assets exist, how these assets fit into your overall ecosystem and way of working (Wo), and what the benefits of working with the assets are for them and for your organization. In Disciplined Agile we promote the philosophy that teams should work closely with enterprise architects and asset managers, if any exist, so that they will better understand and appreciate these issues.
- Asset management requires investment. To get beyond ad-hoc reuse your organization will need to invest in an asset management program. Particularly for intangible assets this may include investment in a reuse engineering team, in a reuse repository, in the development/rescue of potentially reusable assets, and the long-term maintenance and support of those assets.
- Fund asset management wisely. A critical success factor for asset management is your approach to funding it. If it is less expensive for a team to buy or build an asset than it is to (re)use an existing enterprise asset then they are motivated to do exactly that.
Although it can be challenging, it is very possible and highly desirable for your organization to succeed at asset management.