People's Issue in Maintaining Legacy System
Prof. Nikhil Agarwal
SP Jain Institute of Management & Research, Mumbai
This article throws light on the reasons why Legacy systems are proving to be difficult to manage as an organization grows especially with people handling the systems changing with time. The methods for overcoming these issues are focused upon. When new workforce joins the organization, what should be done to make managing legacy systems easier for them, is explained. Another aspect which is covered is the importance of change management.
One of the toughest system development problems facing IT organizations today is that of Legacy systems. These systems often contain mission critical data, business rules and processes, but are increasingly difficult to maintain. Most companies view these systems as necessary evils that must be suffered until a replacement can be implemented. However, our text sites a study by the Boston Consulting Group that concludes that most companies would be better served by upgrading and maintaining their legacy systems, rather than replacing them with the latest technology (McNurlin & Sprague 2004, pp.387-388). I believe the stumbling block for many companies with this approach is an issue of staffing. The job of maintaining a legacy system is not a glamorous one. Most of the original system developers have moved on to “newer and better” projects, and it is difficult to find new employees willing and able to work on the older systems. Addressing these issues may be more a task of “refactoring the organization” (McBreen 2002) than refactoring the systems themselves.
Issues in Maintaining Legacy System
The first problem that an IT organization must address is the stigma often associated with the maintenance-programming job. Digging through the old “spaghetti code” of a legacy system can be boring and difficult. Rather than acknowledging the special skills and hard work that a maintenance programmer must employ to do her job well, companies tend to pay these employees less and often relegate the job to the “new kid” or attempt to outsource it altogether. This can send the message that the job is unimportant and isolate the programmers from the social structure at the core of the company culture. With legacy systems maintenance sometimes consuming 80-90% of a companies IT budget (Bakehouse & Wakefield 2005), IS management needs to stop treating these employees as second-class citizen and realize that they are the foundation on which the company is built.
Making Maintenance of Legacy System Enticing
One approach to de-stigmatizing the maintenance job is to form a special maintenance team with the skills and knowledge to not only patch the systems, but also improve them. Staff this team with the technical experts and pay them well. Employees need the intangibles of interesting work, training, and flexibility, but the money does matter (Berkman 2001), and the higher salary conveys the importance the company places on the maintenance task. Employees will take more pride and care with their own work if they perceive that it is of such high value to the company. The team should be viewed as the firefighters – the heroes of the development staff – not the under-appreciated janitors. They should be tasked with mentoring and training other developers, and consulting on the newer projects, both to keep their own skills and knowledge of the newer technologies fresh, and to utilize their technical expertise and experience. Most of the latest technological advances are rooted in older technology (McBreen 2002), to which the maintenance staff can provide historical insight. This will also convey to the rest of the company the importance of maintenance team. The job may never be glamorous, but it should not be thankless.
The next step in attacking the maintenance-staffing problem is to retain the senior programmers that already have the knowledge of the older technologies. By retaining the original developers of a system, companies can save up to 50% of maintenance time that might otherwise be lost to bringing newer employees up to speed (Bakehouse & Wakefield 2005). This is especially true since many legacy systems have little or no up to date documentation. The best people to create such documentation and train newer staff in the ins and outs of a system are those who developed it in the first place. This documentation task can actually be used to entice the senior programmers to stay with a project. Systems developers want to keep their skills and knowledge of new technologies sharp, while companies want to hang on to the knowledge of older technologies – especially programming languages. Newer technologies for documenting and modeling existing systems may be the perfect tools to in which to train the senior developers. They may even be tasked with developing automated testing and documentation systems that exists for newer technologies such as Java and .NET but not for the technologies in use in the legacy systems. This allows the employees to obtain a new, highly prized skill, and integrated with their legacy knowledge. Ben Lieberman, of Biologic Software Consulting suggests in his article Keeping the lights on: Legacy systems and the maturing workforce that “providing training and development on automated tools and new technologies for mature staff will benefit the company three times over: once by giving senior workers an incentive to remain with the company and support the existing infrastructure; once by enabling these workers to produce system models and testing artifacts that everyone in the organization can access; and once by modernizing a capable workforce to prepare for eventual system replacement.” (Lieberman 2005)
If a company has already missed its chance to retain a system's original developers, it can be difficult to find new employees for the maintenance task. It is not, however, impossible. The trick is to hire for the right skills. While it is nice to find employees well versed in COBOL, FORTRAN, or whatever language your legacy systems are written in, this is not the only skill to look for, and becomes increasingly difficult, as the younger generation is not trained in or interested in these “outdated” languages. Code maintenance in general is a learned skill. Companies need to focus not on the new systems a potential employee has developed, but on the systems she has supported and seen through multiple releases, bug fixes and enhancements (McBreen 2002). A developer who has seen a system through to the fourth or fifth version has learned valuable lessons about finding and fixing errors, making enhancements without breaking existing functionality, and how to develop maintainable systems.
Development of maintainable code is another very important factor in system maintenance staffing. In developing new systems, companies must keep in mind that these will one day become the legacy systems. Proper planning can ensure that the code remains maintainable, starting by retaining the original developers to support the system for as much of its economic life as possible. The development team should have a sense of ownership of the system and should know the company's plans for maintaining it. For systems intended for use over several years, management must make the maintainability of the code a priority during the development phase and give the developers adequate time to achieve this goal. And most importantly, the team must have a change management process that will enable them to make future enhancements and bug fixes fit properly into the design. This includes a good project manager with the fortitude and authority to turn away enhancements that do not fit with the designed purpose of the system. Most legacy systems are a mess to maintain, not because they are using out-dated technology and computer languages, but because programmer after programmer has hurriedly patched them without a thorough understanding of the design, making the code impossible to decipher.
As companies look at their legacy systems and determine whether to replace or update them, management must consider their development staff. A company who recognizes the importance of good maintenance programming, and works to hire and retain programmers with the necessary skills, will find that a well designed maintenance team can bring new life to that old reliable system for significantly less cost.