Remember the ‘Service’ in SOA
But what if firms don't know what 'service' means?
There is, of course, no widely agreed definition of Service Oriented Architecture – I know this to be true because I read it on the Web. However most people might agree, if they happened to be chilled out and mellow at the time, that, as my Web source (Wikipedia as it happens) continues “Service-orientation describes an architecture that uses loosely coupled services to support the requirements of business processes and users.”
So as developers, we have to remember that we are pulling services together not just for the fun of it but to support the requirements of the business process and the users. It appears to be easy to lose sight of this in the cut and thrust of the web. As you will probably have already guessed, this article was promoted by an excellent example where sight of this ideal appears to have been lost already.
There I was, on Tuesday night, making my travel arrangements from Birmingham to Scotland. This is not a problem. I have this under complete control. I’m too smart to visit all of the airline sites and all of the car hire sites and then spend several unhappy hours cross correlating times, dates and prices. I use a site that does all of that for me: I use Expedia.
Not only does Expedia do the hard work and save me money (“Great value trips worldwide. Let yourself go & save money!”) it also makes helpful suggestions. When it offered to sell me a slot in the Servisair lounge, I ‘Let myself go’ because I often turn up at airports early and lounges are conducive environments for work. (My decision had nothing to do with the free nibbles and drink, natch.)
On the appointed day, I checked in to terminal 2. Locating the lounge took longer than expected but I finally tracked it down. It’s in terminal 1. Modern security restrictions rendered it completely unreachable on my ticket.
Attempting to use up some of the non-productive free time I suddenly found on my hands, I rang Expedia and spoke to a charming young lady called “Michelle”. She sympathised and asked if I wanted a refund. “Fine”, I said. She then crammed a large quantity of lift music into my ear before returning with the bad news. No refund.
She said it was clearly printed (in black and white she was keen to stress) on my paperwork that the lounge was in terminal 1 and the flight left from 2. The small print also said no refund, so no refund. I checked the documentation and she was quite right. There it was in black and, indeed, white. So, no refund, no argument.
Well, a slight one. Whilst it is true that the incompatibility is flagged on the site, the flagging consists of ten words on a page that contains 1,255 other words. It does tend to get lost in the clutter – see Figure 1, below. If we zoom in a little, it is still, in my opinion, easy to overlook in the rush of organising travel [it’s a bit hard to fit on our web page too – sorry, Ed].
So I wrote to the company, which was kind enough to reply:
To provide as wide a range of choice to customers as possible, Expedia will offer all facilities available at the airport; anything which may not be suitable is clearly marked as such. Due to the technical complications involved in differentiating between terminals at airports, airport lounges are the only Attraction and Service we provide that require our customers to check their details.
As a database designer I find this idea of ‘technical complications’ difficult to understand. As Michelle had pointed out, my printed documentation contained enough data (albeit on different pages) for me to identify the clash - depart terminal 2, lounge in terminal 1 [although I don’t think it points out that you can’t get to Terminal 1 from Terminal 2 – Ed]. So Expedia clearly had the data; how difficult can it then be for the database/application to detect the incompatibility? At best, it’s incredibly simple, at worst you might guess some string parsing and data type conversion might be required. I am not convinced that in a well designed database system this presents any significant challenge whatsoever.
Secondly, if we accept for a moment that it is technically difficult to do, well, this is exactly what Expedia claims to cope with. The service it offers is ‘joined-up travel’ which means it has to check the data it brings together for compatibility. Saying that it is technically complicated would be like British Airways excusing a late flight by saying that “flying is technically complicated, you know”. As it happens, flying is complicated, yet we still demand that airlines do it on a daily basis for the simply reason that, to warrant the name ‘Airline’, you are expected to get those babies off the ground and into the air. It’s what airlines do. Joined-up travel is what Expedia does, or is supposed to do.
Expedia says, above, that “airport lounges are the only Attraction and Service we provide that require our customers to check their details”. So I wrote back asking:
“Is Expedia prepared to guarantee that this is the only one and that (baring genuine mistakes) it will never offer any other incompatible options that are left to the customers to sort out?”
If the answer is ‘No’ then Expedia customers are left in a position where they can never be sure, in which case they have to check every part of the travel manually, in case it is incompatible. This seemed to me to be an important point. Expedia’s reply suggests that it doesn’t agree:
I have passed your comments to the in-house team, and they would like me to thank you for your feedback and they have taken it onboard.
Whilst this doesn’t say “No”, it most certainly doesn’t say “Yes”. The problem is that Expedia seems, already, to have forgotten that the service it provides is in doing the incompatibility thing. If it can’t guarantee that, then why would we want to use it? For the “…& save money!” bit?
On the flight back I found that the ServiceAir lounge in Edinburgh could be reached using my ticket but was unimpressed to discover that Expedia had charged me 27% more for pre-booking than the lounge would have cost me on the day – see Figure 2, below.