Today, a lot of stress is on code reuse, in the IT industry. In fact, the industry is thriving on the same. The problem is every business requirements have its very own set of specific needs which often are not met with by using standardized software packages and code modules, besides other barriers to success. Ideally software should be designed to complement and automate business processes. But since this becomes costly, modules and packages are standardized and IT business analysts try to fit the standard things to all problem domains. The net result is mayhem and chaos.
In theory, organizations should recognize the value of systematic reuse of internal assets and reward internal reuse efforts. In practice, many factors act as barriers to success in technology reuse. Software reuse often fails for the following reasons:
- Organizational impediments: In house developing of software systematically, to create reusable software assets requires a deep understanding of application developer needs and business requirements. As the organization size grows, coordination problems are often a major challenge.
- Business need impediments: Similar business units within the same organization often have different needs which are not always apparent. Trying to force fit the same solution to different problems is a sure recipe for chaos.
- Economic impediments: Supporting the development of reusable technology requires an economic investment, and often IT teams operate as cost-centers and thus their priorities are ignored.
- Administrative impediments: It is hard to document reusable technology properly for usage across multiple business units within large organizations, although the same may be reusable in the smaller business units. Hence business units may end
- Political impediments: The teams that develop reusable technology are often viewed with suspicion by the rest of the technology team, as they may no longer be empowered to make key architectural decisions. In group rivalry is also a major barrier to the development of reusable technology.
- Psychological impediments: Application developers often feel “top down” reuse efforts as an indication that management lacks confidence in their technical abilities and an insult to their capabilities.