Maintaining Legacy Systems
Although it's possible to "refactor" (rewrite) legacy systems into modern object-oriented, Internet-aware applications, until organizations have learned how to maintain mission-critical applications, this would be a waste of time and effort. The problem is that no matter how clean, tidy, and up to date the rewritten application is made, it would soon fall into disrepair, just as the original legacy system did.
One organization that was having trouble hiring COBOL developers decided to use Java instead. The crazy thing was that they couldn't hire enough Java programmers for their needs, either. So guess what happened? They ended up paying to retrain all their COBOL developers in Java rather than train a few new hires in COBOL.
All of this activity is a direct consequence of the way that organizations reward developers. All of the high status and pay goes to developers who work on new applications. The maintenance of the mission-critical applications is a low-status position! Absolutely crazy. No wonder these mission-critical systems become legacy systemsthey're being "looked after" by people who can't wait to stop working in maintenance and start working on "real projects."