As we go through life on a day-to-day basis, we are surrounded with real-life scenarios that we often compare to programming scenarios. One great example of this was published by Spolsky a couple years ago in The Best Software Writing I. The piece was called Starbucks Does Not Use Two-Phase Commit and was originally written by Gregor Hohpe.
I find that much like Gregor, I do the same thing: seeing scenarios all over the place in “real life” that compare to problems that we commonly solve when developing software. One thing that strikes me as interesting, is that we can also do the reverse. We can take a “real-life” business model and attempt, using words, to see how a given ‘algorithm’ or ‘process’ in consumer life performs with regards to things like exception handling, enforcing business logic or integrity, user experience, etc.
In the summer, my wife and I will be moving back to Canada. One of the things I’ll miss deeply about Singapore is the public transit system (bus and MRT). In Vancouver, the transit system (I’m looking at you, TransLink) sucks. As a matter of fact, it is likely the worst public transit system I’ve ever used. That particular fact aside, I’ve gotten to thinking about exception handling as it relates to people taking transit, and the way that transit companies deal with it in the particular area surrounding fare payment.
Let’s take a quick look at three train systems: Tokyo, Singapore and Vancouver.
In Tokyo, the way that you ride the subway is by looking at a map to determine which station you are traveling to. There is a map on the wall that depicts what station you are at currently, as well as the cost to travel to any other station. Once you’ve determined how much Yen to pay, you can go up to a ticket machine, choose the appropriate ticket, insert your Yen, and the machine will hand you the appropriate ticket. You then insert the ticket into the turn-style, at one end, the gate opens for you, and you grab your ticket again as you walk through. Pretty friendly. Not too bad.
If you’re mid-journey, and you decide you need to change destinations, it’s not the end of the world. You can disembark anywhere along the line, and should you have over-paid or under-paid your fare, each station has a few “Fare Adjustment Machines” that allow you pay the difference between what your original ticket was worth, and what you should have paid (I assume that these machines also do refunds, but I haven’t experienced that myself). The Fare Adjustment Machine will then give you a new ticket that will successfully open the turn-style for you, and let you out of the station.
This system is pretty good, but a bit inconvenient if you need to change your destination mid-journey. (Note that I’m not sure if Tokyo has some sort of pre-pay system like Singapore does – I’m just going on my experience there as a tourist).
In Singapore, the most common manner in which one utilizes the public transit system is by the purchase of an EZ-Link card from any MRT station. This card is the same size as a VISA or Driver’s License, and allows you through the use of machines at any MRT station to add cash to it. Once you have cash on your card, you can use it to ride transit. Any time you go through an MRT turn-style, you tap your card on the sensor (or even more conveniently, just tap your wallet against the thing, we’ve got a great user experience here), the sensor will beep, and if you’ve got enough money on your card to pay the minimum fare, the turn-style will open and let you through the MRT gate. You also tap the card after you disembark (or ‘alight’ as is commonly used here) as you’re leaving the station once you’ve reached your destination. The transit system calculates how far you’ve traveled automagically, and deducts the appropriate fare from your card. In the event that there is insufficient funds on your card, the MRT turn-style will not open, and you’ll need to pay the difference at the Passenger Service Counter.
This system enables the passenger to get on and off wherever he or she pleases without worrying about only having paid for a specific number of stops (provided of course they have sufficient funds on their EZ-Link card). If you’re mid-journey and your wife calls, and you decide to meet at City Hall instead of Orchard, you can choose to get off at a different stop without worrying about only having purchased a ticket to a specific destination. Just “tap” when you disembark, and the world is a happy place.
Oh boy. Let’s talk about Vancouver. Now this ‘system’, if we can call it that, is a bit of a joke. First off, there aren’t any helpful maps in the stations for you to determine how much to pay. If you’re a tourist, you’re pretty much flying blind and guessing your way through this. You can either buy a 1, 2 or 3 zone pass (whatever those mean) – and you better hope you pick the right one. The next thing of note is that there are no turn-styles or staff to ensure that people have paid. You just walk up to the train and get on. At certain times and at certain stations, you’ll see “TransLink Staff” or “Transit Police” checking tickets at an escalator, or getting on the trains at certain stations to make sure you have a ticket, but other than that, there is no way to ensure that TransLink is receiving payment for anyone riding the train.
On top of that, let’s see what happens if you need to change your destination mid-journey. Let us assume you have bought a “1 zone” ticket, and had planned to get off at Metrotown, but then your wife phones, and wants you to meet her for dinner downtown. Now you’re crossing the zone-boundary at Joyce. If you were to do things “properly”, you would need to get off the train at Patterson, go dooowwwnn the escalator, purchase an “Add Fare” for your ticket to cross the zone boundary, go uuppppp the escalator and wait for another train to show up before heading downtown. Let’s say you decided it wasn’t worth the hassle, maybe you’d try your luck, or maybe you’d just really rather pay for the “Add Fare” once you get off the train downtown. Your time is valuable, right? But uh-oh, at Joyce, your friendly neighborhood “Transit Police” jump on the train to check tickets and you’re short an “Add Fare”. They don’t care what your story is, whether you were going to pay it downtown (a likely story) or whether your wife called or not. You’ll be escorted off the train at the next station, have your details taken down, and fined with Transit Fare Evasion (which as of March 2005 was $173, it’s probably more now).
Did I mention as well that transit fares in Vancouver are approximately 500%, FIVE HUNDRED PERCENT more expensive than Singapore. Fares in Vancouver are also more expensive than Tokyo, but by a smaller margin, from what I recall, perhaps 20-40%.
Comments
There are 3 comments on this post. Post yours →
Ah the Tokyo train system is rather fresh in my mind ;)
Considering we didn’t read much Japanese (though we cheated sometimes when we could read kanji that were identical to Chinese characters), the Tokyo JR and Metro were surprisingly easy to navigate.
My one gripe is how the JR and Metro payment systems are not unified. But I read somewhere that Pasmo will resolve that when it comes out this month with a unified stored value card.
Oh, and about the Fare Adjustment Machines – absolutely great idea, especially for tourists like us. Most of the time if we didn’t plan properly or just weren’t sure about the price or our destination, we bought the lowest priced ticket and just adjusted wherever we arrived. And I’m pretty sure those machines don’t do refunds ;).
With a bit of luck, we’re going to get that “tap” usability feature in Melbourne by 2008.
Singapore train system definitely gives the best user experience by far.
The only gripe I have is about the no smoking sign (next to the no this no that signs) with the X amount of S$ in fine.
That gives a real meaning of “Enforced business logic.”
We just escaped from Vancouver this year. You are so right, Vancouver has terrible transit. Including what you mention there is the problem that the trains go from nowhere to nowhere. Downtown service is all but non-existing. Interchange between bus & train is also terrible. It rains almost all the time so waiting for a bus is a very unpleasant experience most of the time.
We now live in Yokohama and look forward to the intigration of the Suica (JR) & Pasmo (private rail & buses) on 2007-03-18. All your points about inconvenience will be fixed by this. You can even arrange for your credit card to top up the card if there isn’t enough on it (this takes place at the turnstile). You can also buy stuff in some stores and vending machines with the Suica card.
Vancouver? Probably never again 30+ years was way too long!
Post a comment
Required fields in bold.