From a Washington Post article on the software glitch that briefly grounded United Airlines:
“When the two airlines decided to merge, they had a choice to make: Would they take the Continental system, or would they take the United system?” Seaney said. “They decided to go with the Continental system and basically dumped Travelport.”
Flipping one reservation system into a notably different system is complicated and problematic, and it has led to headaches for United.
“There wasn’t a lot of commonality, and there were a lot of glitches along the way,” Seaney said. “They had issues with reservations, with elite status, all their awards programs had issues.”
I feel United’s pain. About 17 years ago, my homefair.com web site (which I now have had nothing to do with for 15 years) bought a related web site. We had very similar business models, so our software did similar tasks, but theirs was written in Perl and ours was written in Java. Rewriting their software to work with ours cost more than building both of our individual systems. Still, I think it was worth it.
I am a huge believer in rewriting software. In particular:
–As soon as you finish the first working version of an application, you should rewrite it from scratch. The rewrite will go quickly and will involve a much better design.
–Letting any software application go more than two years without a total rewrite will create maintenance headaches. You will have accumulated patches that turn the code into a mess. Your developers will not remember enough to be able to discern what sorts of changes could blow up the system.
The Perl code that we inherited was not only hard to follow (all Perl code is hard to follow–that’s why I hate it) but had undergone continual patching without rewrites. Most corporate software evolves that way, and sooner or later that ends up costing a lot.
Related: Zeynep Tufekci writes,
In the nineties, I paid for parts of my college education by making such old software work on newer machines. Sometimes, I was handed a database, and some executable (compiled) code that nobody had the source code for. The mystery code did some things to the database. Now more things needed to be done. The sane solution would have been to port the whole system to newer machines, fully, with new source code. But the company neither had the money nor the time to fix it like that, once and for all. So I wrote more code that intervened between the old programs and the old database, and added some options that the management wanted. It was a lousy fix. It wouldn’t work for the next thing that needed to be done, either, but they would probably hire one more person to write another layer of connecting code. But it was cheap (for them). And it worked (for the moment).