Succeed with systematic reuse by pursuing opportunities across every project. Every single project. Explore synergies across projects to not only identify new reusable components but also update existing ones. Here are a few common areas that yield reusable components:
- Data access and updates – is there a single suite of APIs for managing core data? are there redundant implementations, overlapping calls, across projects?
- Domain rules – are domain rules organized in a clear and well maintainable manner? or are they split across layers and implemented using multiple technologies/strategies?
- Processing templates – are there a common set of steps of relevance in your domain? are these steps always executed in a consistent manner? is there an opportunity to Templatize the steps?
- Config management – how are applications managing configuration properties? how do they enable properties for a particular environment? how does an application get only properties that it is entitled to?
The above isn’t exhaustive but gives you a flavor for the kinds of questions that will drive opportunities for systematic reuse