The legacy projects don't produce much return, and often old code is unstable. The CitiMortgage team looks for potentially reusable code in other business units' projects, and either rewrites the code for reuse itself, or has the business unit do the job. Because the reuse team must work with other business units, interpersonal skills are as important as technical skills, if not moreso. Members of the reusability team must deal with working relationships with business units that occasionally get tense. And the relationships can be territorial.
Support is a major issue in code reusability.
Business units need help in supporting reused code, Bhagavan said. Otherwise, supporting that code can inadvertently become a full-time job for the team that wrote it. Managing change is also important. If a reused model is changed, that can break dependencies for other modules that rely upon the original module. The problem can be minimized by robust testing, CitiMortgage's Newman said.