We're approaching 2006, well over a decade since e-commerce has been happening on the Interweb. Despite this, it's apparently still not possible to reliably purchase a train ticket online in the United Kingdom.
I speak specifically to First Great Western. Having browsed and selected available fares at the mostly competent National Rail site I selected the First Great Western vendor. Rather than simply presenting me with a single credit card+address form, or paypal link I have to register as a new user. Why do this? Guys, this is 2006. Forcing users to register is so pre-dot-com.
Then I have to go through multiple confirmation screens for billing and delivery addresses. The competency of the programming is so low that I am forced to "Choose delivery address" and select the only available delivery address out of a one element pull-down menu.
I click continue and then.... the screen goes blank. Nothing. Empty document.
Two years ago I wrote a rant about how not to buy a train ticket. What's changed?
This is the industry I work in. I'm so disappointed and embarrassed. Who is entrusting the nation's transport infrastructure to people who are writing code that makes a user select from a one element list? Can we just call ourselves Britain and give up the pretense of the "Great" bit? Absolutely, First Great Western do not deserve it.
Priority one is Make The Sale. You're not in business to serve web pages but to provide a service and generate revenue.
Every click a user has to perform anecdotally halves your audience (anyone got a link for this? Nielsen? It's practically a truism now in Web design but worth re-emphasising). Don't make users go through a ten-step process to purchase a train ticket.
Software fails. It's not if, but when. In engineering terms, degrade gracefully. This effectively means provide contingency plans that either the software itself can use after detecting a fault in itself or the user can take advantage of.
Software fault detection is a big topic but it's a well researched and documented one. Some examples of the latter as an illustration of how trivially this problem could've been avoided simply by assisting the user:
a. provide a link to a single-page purchase form
b. provide a link to an alternative vendor, e.g. paypal, nochex, etc
c. provide a sales phone number
Does First Great Western actually know there was an error? The impression of quality is so low for me that I strongly doubt it.
What's a solution?
a. software automatically emails errors to an inbox that alerts a human
b. humans reviewing error logs
c. external 3rd party validating error logs and directly tying this into publicly accountable performance metrics. We do this for train punctuality, why aren't we doing it for web server performance?
d. provide an automated testing facility. Every five minutes a piece of software attempts to search for fares, buy a ticket, register a user, and so on. This is so easy to write or buy these days there's simply no excuse.
If all our software contingency measures fail, make it as easy as possible for the user to complete her sale. Job #1 is Make The Sale; as a corollary keep the customer happy. I now have to make a phone call to complete my sale but what train times did I select? I have no idea, that was (literally, I'm afraid to say) ten clicks back.
What's a solution? On every page inform the user, "You are purchasing an Apex Return (£20) for 1 adult from London Paddington to Bristol Temple Meads, departing 24 Dec 2005 at 08:30, and returning 28 Dec 2005 07:15."
How hard would that be? How useful would that be?
They have an "Email us" form (two clicks away) but nothing that suggests how much state they're sending to First Western, e.g. what page I was on, what I was doing, what I'd clicked. I'd boldly assume they'd know who I am, since I am logged in. No, I have to fill out an email address to reply to.
Simply prefilling the email form with the sort of information listed above about what I'm doing, when, and who I am would be an order of magnitude more useful and helpful than expecting the user to start with a blank canvas.
Thinking it might be a browser issue, I logged in from another browser. There was no record that I was on step 5 of 7 purchasing tickets from Bristol to London. Why not? That information is stored on the server in my session data; my session's still live and accessible through a cookie in Firefox. Why is it not tied to my login details?
This isn't rocket science. It's a few lines of code.
So there we have it. I wonder when will we be able to reliably purchase tickets online?
Have you ever waited for an every-fifteen-minutes London night bus for nearly an hour, to have one roll right past you without even stopping because it was rammed to capacity? Had to watch four passengers leave the bus and the driver still not allow more passengers on? Had that happen three times in a row? Ever wished you could do something about it?
Tonight, after waiting over two hours to get an N77 home, when that third bus threatened to pass us by I didn't let it go by. Here's an account of what turned into a rather nerve-wracking but somewhat effective showdown with a bus driver at 4am.
01:45 My journey started a little further south of Wandsworth Road overground train station. I found an N77 bus-stop and, heartened by the promise of a service four times an hour, duly sat down and waited. Twenty minutes later an N77 pulled up about 50m before the bus-stop outside of the bus lane and allowed five (possibly more) passengers to disembark. This seemed odd since I was certain that buses weren't permitted to allow passengers on or off the vehicle outside of designated bus-stops. That was the least odd thing to happen from then on.
After those passengers alighted the bus pulled away and approached us ... but continued to accelerate right past the stop despite there being five of us stood there quite clearly waiting and signalling.
Frustrated, I started walking along the route since I had, in theory, at least fifteen minutes to kill. Twenty five minutes later I arrived somewhere just outside of Clapham with another guy already at the stop. I started waiting again. And waiting. And waiting. After about another twenty minutes I was saved from dire tedium by a rather nice call from Hilary which lasted another half hour. (For those not counting we're comfortably over an hour since the last seen bus.) During our chat a second bus arrived. Praise the Lord (of your choice), a bus arrives! But blows right by us again. ARRGGHH!
At this point the other guy at the stop attempted to call the 24h bus information line on 020 7222 1234 and find out why two buses had let people off then taken no-one on, and why they were spaced over an hour apart. The rather pathetic answer was that "the controller reports the buses are not responding to their radios". Hardly reassuring.
I continue chatting with Hil for maybe another twenty minutes or so before striking up conversation with the other guy at the stop. He & I agreed to split a cab back to Merton Road; it's nearly 04:00 at this point. As if we'd just baited the bus service with this threat of getting a cab a bus shows up.
In my mind there was no way this bus was going to pass our stop without picking us up. I marched out, face-on to the approaching bus and stood like a starfish planted in the middle of the road. Beyond caring how ridiculous this must've looked I wanted a result, and wanted it now.
Thankfully it stopped and three or four people got off. But yet again no sign of the front door opening! What on earth is going on in these situations? Infuriated, I wouldn't move and shouted that I'd already been waiting for an hour and was quite happy to continue waiting. The driver seemed not to budge so one of the other three folks now waiting at our stop started yelling about having let people off but not let people on. Not much reaction. So I whipped out the camera for a little documentation. Below is the bus ID, number plate, and driver mug-shot.
The driver tried a new tactic to sort out the situation. Rather than simply let the four of us on (and make up the numbers back to what he was carrying before he came to our stop) he tried to push me out the way. With a 22,000lb double-decker maxed-out bus. Yes, actual contact. Several times. (I can at least now say I've stepped out into the road and been hit by a bus...)
It wasn't lost on me at any stage that the passengers on this bus probably weren't delighted about what was happening, a few had already been tapping on the windscreen. After trying to push me out the way the driver let the front door open after someone had suggested "talking". A few quite burly guys got out, one of whom took a pretty aggressive stance and after some attempt at reason from me started swearing at which point I ignored him, then offered to talk if he was civil. (Pretty much every second I wasn't pulverised at this point seemed like a bonus, to be honest ;-). I think it was pretty obvious I had no real enjoyment at being stood in front of a bus either, not to mention a fair amount of group empathy; "we've been there". This may've been the one thing that saved me.
Eventually the driver caved and decided to let me on. I insisted he let all of us on rather than just me, and saw that they got on first. Miraculously I squeezed on before the doors closed as well.
At which point the driver, bizarrely, insisted I get off and come through the back door! (He didn't check my ticket..). It clearly served no purpose so I'm guessing this was a ploy by an irritated driver to get me out and drive off, who knows. Even more bizarrely now it was his turn to insist on the bus not moving, this time until I obeyed his pointless instruction. Obviously this wasn't going to happen, and I suggested walking through toward the back but he wasn't having it mostly I think because the loud guy swearing at me was there to back him up.
(Bear in mind I'm surrounded by almost all guys who I'd held up for maybe ten minutes. Exhausted and adrenaline-soaked: not a fun way to end an evening.)
The driver threatened to call the controller or police (I don't remember which). I replied that that would be great since we'd heard they'd had a hard time getting through to him, perhaps he could switch his radio back on. The driver told me to "shut the f*ck up".
I didn't back down and soon some more guys came down from upstairs. After a little explanation one guy decided to get violent grabbing me around the neck. There was no point pursuing it so I just got off, and quickly headed for the bus that'd rolled up behind in the meantime. As I passed the back doors my original companion signaled me to get in. This was a tough choice, jumping back into the piranha tank. Once on, we immediately instigated high energy conversation to diffuse and as if enough miracles hadn't already happened I continued not to be annihilated. (Most passengers seemed pretty zoned actually, with only a small cache of people giving me nasty and bewildered stares in about equal measure.)
This quickly wasn't about me, about that bus, or any specific event tonight. It's about having one bus appear when four should have, buses that allow passengers off but not on, and a bus service that collectively requires us to spend three hours for a five mile journey.
Did this or will this achieve anything useful ultimately? I don't know. Certainly, I am truly sorry that a bus full of people had to wait. I only hope it generates some useful conversation, and that in future some folks find courage to make a stand when they may not have done otherwise.