My info is maybe 10years old, but I doubt much has changed.
These infrastructure type things are incredibly complicated. Not in the “Newfangled” framework way, but rather the business implications of real world impact of potentially bad code.
I consider it one of the highlights of my career going thru the Delta Northwest Merger without shit hitting the fan. We were writing decrementer & while loops instead of for loops because there was a measurable performance & stability impact.
There’s something to be said about software that has withstood the test of time.
I’m impressed that the team is able to handle outages as well as they do. Having had some experience working with the folks at Delta & Northwest, I’d say they’re pretty impressive people. I’d be happy to steal some for my startup if they’d be willing to part with the flight benefits & tenure.
Full Disclosure: I was not a Delta Employee, but worked for a startup that built the checkin systems (which got acquired by NCR). I got to work with Delta as a client.
It's a risk aversion issue. Large software projects are horrendously difficult to get right, and managing airlines is a horrifically complicated kind of project. Fault tolerance aside, just correctly modeling the problem is a mess and by the time you have a correct solution, the problem itself may well have changed. So you end up having to throw a lot of resources at a very complex problem and know that you may entirely fail at it, which is not the kind of gamble execs love.
Banks for a long time thought the same. Then banking startups with code written on a clean slate in modern architectures emerged and are eating the bank's lunches as their infrastructure (more often than not a mix of mainframe, weird custom middleware and half-modern webstacks) cannot keep up in development pace. For example, in Germany Commerzbank (once a powerhouse) got kicked out of the DAX with former fintech startup now giant Wirecard replacing them.
Airlines are only "kept safe" from modernization because the cost of entry is so unbelievably huge - to start a bank one needs only a couple of employees plus a couple million euros founding money, but to start an airline one needs vastly bigger sums.
I think that's one of the keys to their success. Large banks can't just say, "well, we're not going to be supporting A, B and C so we can do a total rewrite."
* Sharding and clustering.
* Queuing between services.
* Geographic distribution across multiple datacenters.
* Continuous restoration from backups.
* Unit testing.
* Source control.
* ...
Those practices are not language or system specific, but they may not be easy to follow when using older technologies.
You’re right though. That said, these systems are crufty. It’s true that they get the job done often, and updating them doesn’t inherently mean that they’re better, but they fail a lot. One recent example; I had a reservation cancelled 24 hours after booking three times, with no explanation why. “Normally there’s a note here explaining... but this time, nothing. This just happens and we don’t know why.”
The person telling you doesn't know why, and there is no way for them to directly check, but there are a variety of reasons reservations get canceled, reasons they airline doesn't want to pass on to you. Top of the list is being pumped for an airline employee who needs to be somewhere. Then come premium customers such as government agencies/police/military. Then rich people (premium travelers/club members etc). When such people get a flight at the last minute, they are bumping someone else. That someone isn't told why.
In this case, I don’t think that’s what happened; I was able to re-book the exact same flight all three times. In those cases, I should at least be notified my flight was cancelled, but was not. The third rep suggested it was a KLM/Delta integration issue. This is also only one of many issues I’ve run into over my years of pretty extensive travel.
Regardless, you are right; it could be a white lie.
In the world outside Silicon Valley, and outside of Venture Capital-funded projects, the type of code and infrastructure everyone here idolizes is the exception by a wide margin.
The problem is that those systems are pretty segmented from the systems that schedule/dispatch planes and staff. Those systems are incredibly complicated due to the complex nature of managing the status/location of 1,000+ airplanes, millions of pieces of cargo, thousands of flight attendants and pilots, etc. And those systems also often have to interface with antiquated airport or FAA systems. As a result, making changes to the reservations or flight management system is a lot different than working on a web app.
No idea what their backend looks like though.
The impression I get from these repeated fiascos is the whole industry still runs on mainframes and java applets held together with duct tape and bubblegum, and that their executives are dinosaurs with no appreciation for what it takes to build robust failure-tolerant systems. But maybe it's just a skew in the reporting.