I meet with J.P. Hurtado, the director of customer systems, and Jason Fortier, a manger of software engineering, who explains the complexity of the organization's software. It starts with RES, the company's core reservation system, with more than 9 million lines of RPG code that is more than 20 years old.
Reservations come from a half-dozen directions. Guests can create them directly, through the Royal Caribbean International website or a call center, or call a travel agent. (Defendis says 85 percent of the company's bookings occur through travel agents.) Some use CrusingPower.com; others use a SOA-based public API that created in 2007.
Whatever the source of the booking, it all goes through RES, abstracted away through a service oriented layer. Before the API was in place, organizations built custom, one-off integration points with RES, which required maintenance and retesting with every new release. Once the cruise API was in place, customers slowly converted over to it. Royal can re-use that same API on its website and in its call center, separating the actual reservation system from its clients.
Now, with the code is isolated, the company can pull one piece at a time and replace it with a more modern system. One whiteboard I pass lists goals, by year, of percentage decrease in RPG code. Within five years, RES should be 10 percent (or less) of its original self, replaced with a Java system-all with no risky cut-over, no multiple teams making the same changes in both systems, and no huge project that splits the engineering department in half.
Agile Lets Programmers Experiment in Two-Week Sprints
The Java conversion is its own kind of open-heart surgery, albeit a continuous one that takes several years. To do that, the team is continuing to experiment with Agile and iterative models.
Neena Vicente, program manager for the company's IT transformation effort, says the company has two types of projects, traditional waterfall and Agile. Aside from standup meetings, the Agile projects are true experiments, each trying a variety of methods. Specifically, project manager Ajay Singh tells me about a recent $1.5 million project that 16 team members finished in 21 two-week sprints. The team built, regression tested and deployed to production at the end of each sprint.