In previous columns, we've discussed the hard work associated with establishing a reuse environment and considered some of the basic concepts associated with the reuse model. Now let’s look more closely at the benefits that can be gained by implementing a reuse environment, along with the reasons most attempts fail.
Most developers assume that the major benefit to reusing code is that building applications will be faster and less expensive. Actually, they're both right and wrong. First, there's no question that applications can be assembled from reusable objects more quickly than they can be built from scratch, so faster development time is certainly a benefit. Quality should also improve through the use of reusable objects, which are more stable, deliver more predictable results, and are less prone to errors in production.
But while faster delivery times will obviously result in less expensive solutions, this benefit is realized only at the project level. Each project will use less development time and money, and not as much testing will be required because you are using components that have already been tested. However, there are increased costs for the entire organization because of the new processes and tools needed to support the reuse environment. In fact, it is these overall environmental costs that, when they do not get funded, spell doom for most reuse efforts.
In theory, there is no reason why a reuse program cannot be developed and executed successfully at any company. In reality, there are many barriers to overcome. New programs can generally be implemented most easily when they attempt to structure or optimize people's natural tendencies. Building and using reusable components is not a natural tendency.
Although there are various potential barriers, they all come down to failing to implement a complete reuse program and not successfully tackling the issues associated with people, process, and technology. For instance, the program will fail if people are not properly trained or they don't have the right incentives, if the reuse program is not funded over the long term, if management commitment is reduced, or if a poor repository tool is purchased.
Where to start
Reuse can work in every environment and on every project. However, there is a cost to building and implementing the reuse objects and the entire environment, so it makes sense to maximize the initial value you are receiving for the dollars you are investing. It probably doesn’t make sense to build an elaborate reuse strategy for COBOL, for instance. Not only is the technology declining, but the payback for maintenance and enhancement activities may not be high.
Here are some good places to start your reuse environment:
- Unstructured project data, including all major project and project management deliverables (This includes workplans, project definitions, reusable templates, and project key learnings.)
- Structured models from development and database tools, principally including those from the analysis and design phases
- Testing plans and scripts from the testing tools that you use
- Source code, including common libraries and utilities, and custom code that is written for a particular function but that can be reused by other project teams
What it takes to succeed
Most companies have the capability to create a reuse environment. First, you must have an appreciation for the challenges and be prepared to overcome them. Here are some points to keep in mind:
- The effort must be viewed as a major change initiative, not as the implementation of a new technology. It must be implemented holistically. The processes and tools will be the easy part. Changing people’s work habits will be much tougher. Reuse must be a part of everyone’s job.
- You must be prepared for at least two years of investment in building infrastructure and capability before you'll begin to see the payoffs in the subsequent years. Your company must be prepared to fund the centralized support that the reuse program will require on an ongoing basis.
- Your deployment strategy should focus on areas where you have high probabilities for success and then build from there. You can't go from no reuse to total reuse in a short time frame.
It takes commitment
As we've seen, implementing a reuse environment offers significant business benefits, including faster development times, higher quality, and reduced costs per project. But while the benefits are tangible, the barriers are numerous and tough to overcome. You must have strong executive sponsorship and long-term commitment to succeed.
Project management veteran Tom Mochal is director of internal development at a software company in Atlanta. Most recently, he worked for the Coca-Cola Company, where he was responsible for deploying, training, and coaching the IS division on project management and life-cycle skills. He's also worked for Eastman Kodak and Cap Gemini America and has developed a project management methodology called TenStep.
Missing out on the promise of reuse?
Have you been a part of an effort to create a reuse environment in your shop? What problems did you encounter? How did the initiative turn out? Send us an e-mail with your experiences and stories or post a comment below.