[Design Thinking in Action] Proposal for a Revise of the Ticketing System of Munich Public Transport

Yesterday I wrote up a a story about a very disturbing experience with the Munich Public Transport company (MVG). I posted this story to MVG's facebook page. MVG did not answer me. But a person called Mi Ke provided some interesting points in that thread.

As a long-time fan of public transport, now I just want to do something useful for all the passengers of MVG. Usually my wage is some xxx euros per hour for such sort of work. But I am too passionate about a good solution on this matter, so that I'm doing this for free here, and donate my work in this article to MVG. I know this won't be a perfect solution, but will be very glad if this paper can provoke thoughts and initiate a change in the MVG ticketing system.

Actually this could also be an outline for a bachelor or master thesis. If any student care to work further on this subject, simply contact me and I'll be glad to coach you or work with you.

1. Problem Statement

The German public transport systems in general provide rich sets of tickets, and every local system in a city has her own rules about how to use the tickets. This leads to significant confusion to average passengers, and leads to unintentional rule violation, which causes frustration and unhappiness to the passengers, and also leads to bad relationship between passengers and the transport companies.

Each kind of ticket is tailored for specific situations, usually the tariff is designed by business departments of local transport operators. The purpose of this paper is _not_ to alter the tariffs, but to design some processes to mitigate confusion and hassle when a passenger is buying and using a ticket.

A "ticketing system" in this paper is an abstract concept, it can be a ticketing web page for PC, or ticketing app for mobile devices, or ticketing machines in stations and on vehicles. While the graphical user interfaces may be different on each kind of devices, but the principles and the core process should be consistent across all devices.

The biggest mistake in many ticketing systems is: They assume too much from users, especially users from other cities and unfamiliar with local offerings and regulations. It is good if a user does her homework before she uses the system, but an extensive pre-study should not be a requirement for using the system. It is the local transport company's responsibility to embed and emphasize all important information into their ticketing process, and protect the users from being psychologically hurt by any unfriendly staff.

2. Design Principals

2.1 Keep it Simple

Local rules and regulations can seem very daunting in text. In fact very few people really read all the text just for fun. But in fact, most important points in those daunting text could be presented in a simple and approachable way. This presentation does not have to be text on screens. It can be diagrams, info-graphs, animations, sounds, or even some steps or mandatory interactions in the ticketing process. 

2.2 Keep it Consistent

In case of the MVG regulation, even if you buy a 1 day or 3 days ticket, you don't have to always validate it. Such tickets bought on buses or trams are automatically valid. Only when you buy those tickets from a train station, they are not "valid", you must manually validate it. 

This inconsistency puts passengers in immediate danger once they buy a ticket from any station. Innocent people buy a ticket and get the illusion of duty completed. MVG should not assume a passenger will always ask if a ticket needs validation or not. They get onto the tram, get inspected and then get insulted as "Schwarzfahrer". Poor poor passengers. 

The reason for this inconsistency is: some people want to stock such tickets. If they buy several tickets in one batch, there has to be a way to tell when a ticket is used or not.

This is not a good reason to keep the inconsistency.

Who will be buying such multi-day tickets? Not the local commuters who already buy monthly tickets or annual tickets. Most likely business travelers or tourists will need them. When they stock such tickets, they are likely to forget the tickets at hotels or in the pocket of another coat. So, the stocking of multi-day tickets should not be encouraged.

MVG should really just close the stocking possibility, make those multi-day tickets immediately valid once they are sold, and remove the hassle of validation for multi-day tickets. This is then a consistent and better user experience. Yes, I propose to change the regulation here.

2.3 Encapsulate the Suboptimal Processes

Before the regulation changes for a better user experience, passengers will have to live with some suboptimal processes. For example the "first buy, then validate" process.

It is the ticketing system's responsibility to encapsulate all the steps in these processes, to protect passengers from unintentional violation of rules, but not passengers responsibility to find out the correct usage.

In case of the purchase of the multi-day tickets, a ticketing machine in stations should help passengers get the ticket validated right within that machine. One possibility is: before the payment screen appears, an information screen should appear and say "The x-days ticket sold from this machine is not valid even after your payment. Do you want me to validate it now for you? You can stock it and use the ticket in another day, but please never forget to insert this ticket into the ...." If the user tap on the "Yes, validate it now" button,  a validation timestamp should be printed on the ticket.

3. A Passenger-Centered Ticketing Process in General

Passengers have different levels of familiarity to the tickets and regulation of usages.

A buying process with too many details about the tickets appears unnecessarily winding to a user who knows her ticket very well.

At another hand, there are users who hardly know which tickets are available and which one they should buy. There are also users who simply want some outing and do not even know where to go. For these users, the ticketing system should provide adequate guidance for making a buying decision, it should play the role of a recommender system.

The ticketing process should be different for these two groups of people. For the first group, the system should provide direct access to all possible tickets so a user can choose her ticket as quickly as possible. A first draft of this process seems relatively straightforward, and we will revise it for different sizes of screens later (not in this paper).

Here is the wireframe for first screen of the system.

Note for readers who don't know about wireframe: simply put it is the very initial stage of software user interface design. It focus on specifying user experience: what should be on the screens and how users are supposed to interact with the elements on the screens. At this stage, detailed design of layouts, fonts, colors, etc. is not important and should be ignored.

The content I put in the wireframes is not specific to MVG, it's just conceptual and intended to illustrate the idea.

Process for local transport ticketing system: 1 

The first group described above are very likely to choose "Yes, show me the tickets". Once that button is tapped, the second screen could present all available tickets, it might look like this:
Process for local transport ticketing system: 2-1
Once a ticket is chosen, a typical payment subprocess will start and the existing screen on MVG ticketing machines looks okay to me:

If the chosen ticket needs validation, a warning screen as described in section 2.3 should appear before the payment subprocess.

The subprocess for the second group of people (those who are unfamiliar with the local transport system) is a bit more interesting.

4. Subprocess as a Recommender System

This recommender system has a very clear goal of decision support. In a local transport system, typically it will have about 20 to 50 kinds of tickets in its disposal and should pick out two or three most suitable tickets based on passenger's needs. Most important parameters such as places the users want to go and the numbers of persons in the travel group should be explicitly asked, other parameters could be assumed and presented together with the results of recommendation.

I have a lot of work to do this evening and tomorrow, so I'll leave the wireframes and just describe my design draft in text.

In the first screen of the recommender process, users should input places they'd like to go, and the number of persons in the travel group. There should be a big button saying "I don't know, please recommend places to visit."

If the desired places are specified, then on the next screen, the system can present most suitable options, something like this:

1. A one-way trip, choose this: (a single trip button)
2. A round trip, choose this: (a round trip button)
3. Unlimited trips, valid in X days, choose this (input field for the number of days, and a x-day ticket button)
4. Stripe cards, validate stripes as you go, choose this: ( a stripe cards button)

Except the fourth option, all the three options above will print tickets that are immediately valid after the payment. And the expiration date and time should also be printed on the ticket.

Personally speaking, I'm not a fan of stripe cards. It's too easy to forget validating the strips and get yourself into serious humiliation. Maybe it's several cents cheaper than a regular ticket, but your dignity and happiness are more important. My advice to all business travelers and tourists: Don't buy stripe cards that require manual validation. Only buy tickets that are automatically valid after the purchase.

If, at the beginning of the recommender process, the user tapped the "I don't know, please recommend places to go.", the subprocess could be like this:

A "Tourism Attractions" button,  a "Recreation Paradise" button and a "Public Services and Emergency Help"

When the "Tourism Attractions" is tapped, on the subsequent screen, there should be options for "one day", "two days", "three days", "one week" plans. The places on the plan are of course carefully chosen and the routine optimized. And, it should intelligently disperse the order or routine of visiting for different buyers, so that every attraction won't get too crowded in a short period of time. When a user purchase a "plan", immediately valid tickets will be printed and a bar code of the plan details will be on the screen. The user can scan the bar code and get the details on her mobile phone.

When "Recreation Paradise" is tapped, on the subsequent screen, different themes such as "hiking", "art", "music", etc. will be presented. Choose a theme and 2 or 3 places will be recommended. Then choose the places you like and buy the suitable ticket. The system at this point will assume a round-trip ticket and ask for confirmation. If not round-trip, then present other options.

When "Public Services and Emergency Help" is tapped, places such as the currently opening hospital, police station, the nearest bank, etc. will be presented. Just choose one,  a one-way trip ticket will be assumed and the payment process immediately starts without any further ado.  Where to get off and the detailed address of the destination will also be printed on the ticket, so that the passenger can easily find her way after she gets off the tram/bus.    

This is just an outline here. A real research paper should discuss more about the details and support the statements with hard data.

5. A Word on the Trustability Investigation

I said in my last write up that "when misfortune happens, there should be some mechanisms to differentiate intentional fare dodgers and unintentional rule violators". Mr. Mi Ke said it is not possible. I don't think so. Technically it's well possible and there are several methods that work very well.

To find out the trustability of a person who tells her story about why her ticket is not validated or explains that she forgets her annual ticket at home, you can investigate her personal data and compute a trustability score of her. If the score is higher than some threshold, let her go and if the score too low, fine her.

We can model a trustability function to compute the score. This model could include the following components:

* Her "Schufa" score
* Her criminal records
* Her fare-dodging records
* Transaction records or credibility records of her online purchases on websites such as Amazon, ebay, etc.
* Analysis of all her words on internet: on her blogs, on social media such as Twitter and Facebook, etc.
* ...
* ...

Technically these are all feasible. Some Apps that offer people low-cost online credits are already using similar models to compute whether an online borrower is trustable or not.

The only "problem" here might be privacy protection. You could ask the passenger whether she'd like to allow such investigation to cancel her fine. If she signs the agreement, you can try to get all relevant personal data and compute a trustability score for her.

If you think that goes too far, sometimes there are much easier ways.

Several weeks ago I visited my relatives with train. I bought a ticket for second class. But I've been traveling with first class tickets for the last 5 years in frequent business trips. I went to the first class cart without any thinking, just like a reflex.  Then came the conductor. When I showed my ticket, I suddenly realized the wrong place. I said sorry, told my story and stood up to go to the second class.

In that case, it was really very easy to verify whether I told the truth. The conductor just needed to log into the DB system and read all my purchase records.

But he didn't. He waved his hands, and said "No problem, please sit here", and smiled to me.

That conductor's kindness brightened my day.

And, he was not the only kind conductor I know on the DB long-distance trains.  From news and friends' stories,  various other DB conductors helped confused people get their way around and did not make any fuss about their "wrong" tickets. Thank you!

Generally I find the service quality on long-distance trains much, much higher than local S-Bahn or trams. I love DB long-distance.


My final word to MVG: Please be kind to your passengers, and please stop calling them "Schwarzfahrer" once they are caught riding without a "valid" ticket. You may say "well, it is actually a neutral word." But people have different perceptions of wording. The title "Schwarzfahrer" is really very hurting and insulting in my ears, almost a language violence. I know the MVG staffs are experiencing all kinds of language violence from unreasonable passengers. I feel very sorry for the staffs who get scolded by passengers. But, the fault of those unreasonable or less civilized passengers is not the reason to lower the level of your kindness and service quality. I do see many friendly MVG staff trying their best to help people in the stations. Thank all of you.

Let's all do our best to be good citizens.


[Improve the Daily Life] Fix the User Experience in the Ticketing System of Munich Public Transport

As a technical consultant I travel frequently in the German-speaking regions: Frankfurt, Zürich, Hamburg, etc. I buy an annual ticket in Stuttgart, where I live. And when I'm out working, I usually buy multi-day tickets.

The German ticketing systems are very complicated in general. These systems build upon parameters such as specific time periods in a day, specific days in a week, specific "zones", ages even family status of the ticket buyers, etc, etc. For a foreigner, they are usually arguably more complex than a typical ACM paper.  Some sorts of tickets require "validation", but in Hamburg and Zürich for example, their day tickets do not require manual validation. The day tickets are automatically valid once they are sold, and will expire either until the next day or after 24 hours.

I'm just used to this and thought Munich is the same. I usually bought 3-day tickets in Munich. The first time when I bought it, I looked for the time stamp, found one, and felt safe. It was always like this and I never encountered any ticket conductor until this morning.

I bought a 3-day ticket yesterday. This morning there were conductors in my commute subway, and one said my ticket is not valid. In surprise I showed the time stamp to the conductor. He said that is the stamp of selling, he needed a stamp of validation. I said I'm sorry I did not know it, I'm from another city. He said there's a 60-Euro fine to pay. I looked at my ticket and said, it's not that I tried to lie, I really did not know the rule specific in Munich, could you please mark this ticket as "valid from yesterday" so that I get my fair share of ride time? He said he could not do it, and started to talk in a very hard tone. The gentleman sitting beside me tried to help, he said the ticket was still freshly bought, why not just time stamp it and let her go? This gentleman was scolded and I felt so sorry for him.

Well, to make a long story short, later I tried to appeal at the customer centre of Munich Public Transport (MVG), and was treated like a criminal. No chance to get myself understood, no chance to tell my whole story, the service staff said it was all my fault not getting informed before I travel to Munich, thus they must classify me as a "Schwarzfahrer (fare dodger)". She said "You have to be fined. It is not unfair, every body comes to the customer centre with an excuse, we must treat all of you equally. It's really your fault".

Yes she is right on one point. I should have informed myself better. My laziness, my apology. But I can only take 50% of the fault. MVG and the intentional Schwarzfahrer have their own shares too.

It's not that 60 Euros is breaking my nerve. It's the following two things which are really disturbing:

1. The grossly flawed ticketing system of MVG, which makes users from other cities easily make mistakes and get fined.
2. The way how an actually innocent passenger (user) is treated there.

Let me first talk about the second point and get my emotion out.

I've been always an honest passenger, never tried to ride without a ticket and never tried to lie about my ride time. I wrote countless blog entries singing ode to the public transport. I coded for a software system for Deutsche Bahn for 2+ years, remain loyal to them till today. For all my business travels my employer has all the past tickets, MVG could investigate if they want. No body cares about all these facts, no body cares to listen. Sorry but I find it so, so, so, extremely unfair to classify me as a "Schwarzfahrer", it is an _extraordinary insult_.

I was speechless when the staff at customer centre of MVG started to blame me like I were a criminal. First she had very hard judge on me. Second she was so merciless, even a bit gloat when saying I forgot to inform myself (she said Pech, which means bad luck). This is not the correct way to treat any customer. After all, the MVG is there to serve and help people, but not to make innocent but unlucky people feel bad about themselves.

Many local workers in Munich have done a great job at making people from other cities feel welcome: the staff at my hotel, the staff in restaurants.....I am endlessly thankful to all of them and I love Munich because of them. The service quality at the MVG customer centre just does not match.

Now let me come to the first point above and get back to technical stuff.

Basically I am not a fan of the uncontrolled entrance to the platforms. It provides too much convenience for intentional fare dodgers, and we honest passengers become victims. This alone is not fair to passengers who do buy tickets.

But the whole Germany / Switzerland are like this. Maybe adding turnstiles to existing stations are too expensive.

Then, MVG could at least cancel that validation machine altogether, at least for the x-day tickets. Surely there will be a little bit less flexibility, but passengers could make less mistakes and save the work of validation. On every Deutsche Bahn (DB) ticket, there is automatically validation period, passengers do not have to do any extra validation. For x-day tickets MVG please follow DB, or Stuttgart, or Zürich, or Hamburg.

If, they insist on validation, then at least please add _significant_ notices on the tickets which do need validation. As I just checked, the notice is there on the last screen of "3 days ticket", but it is in small print and actually not that intuitive for many people who do not know what a validation actually means. I would suggest an animation on the same screen. The animation could be a hand inserting the ticket into the small blue validation machine. It is really MVG's job to help passengers do things as MVG perceive, please do not blame passengers at 120% when something was not totally right.

When misfortune happens (such as in my case), there should be mechanisms to differentiate unintentional rule breakers and intentional rule breakers, and please do not insult people. Beside / beyond rules there are common sense and logical thinking. In my case, the earliest possible valid moment is printed on the ticket (when I bought it), and the earliest possible invalid moment is 3 days after the time of purchase. The time point when my ticket got inspected lies perfectly between these two boundaries. So no matter I stamp it with an extra time or not, it is still valid!!! This is what I call common sense and logical thinking. I just hope every staff at MVG can also think this way.

The bottom line is: MVG, or any other service companies, are meant to build their business upon serving and helping people, to make our society a better place, but not meant to treat people as criminals when some rules are unintentionally broken.

Now please let me show you the screens for buying a 3-day MVG ticket for inner city (Zone 1) on the ticket machine:

1. Choose the "Day tickets" from the menu at left:

2. Then choose "1 Person" or your case on the second screen:

3. Then you can choose 1 day or 3 days. There is a small notice about "from validation....", but the thing is, such day tickets in many other cities are automatically valid when you buy it: Stuttgart, Zürich, Barcelona, Lisbon, Frankfurt...... So I just ignored that notice. You don't make the same mistake!!!

4. Tap on the "3 days" button, you get this screen:

5. Today I tapped the "More ticket information" button to see if there's any notice or warning about valication, but the "information screen" looks like this:

As a software engineer I must say, MVG does not explain or emphasize the "validation" enough. I would put a full-screen-animation of a hand inserting the ticket to this little guy (Usually they can be found at the entrance to the platforms. The confusing thing is, not all tickets need validation. Some need some not.....I am sick of this badly designed user experience and would like to fix this. Let's cancel this validation machine as soon as possible and design another validation mechanism! ):

If MVG is willing to implement my suggestion, I am more than happy to help on the software part. I am very fastidious about user experiences, will strive to create something that is at least easier to understand and more difficult to make mistakes than the currently system. MVG can count on me.

I have never asked my readers to share any of my blog entries. Today this is the first time I ask you, my dear reader, please share this article on your favourite social networks: Google+, Twitter, Facebook, etc. Two intentions:

1. To help people from other places to get well informed about the MVG ticketing system, avoid getting any personal insult from unfriendly MVG staff if you don't know your ticket should be validated or simply forget to validate.

2. To voice our desire to fix the flawed user experience of the MVG ticketing system.

Together let's make the beautiful Munich a more friendly place for business travelers and tourists! Thank you very much for reading!

Extended Reading:
Follow up of this story




以下全文转载朱光潜先生的《谈价值意识》,原文写于 1940 年代或者 1950 年代。至今值得一读再读,与朋友们共勉。


我初到英国读书时,一位很爱护我的教师——辛博森先生——写了一封很恳切的长信,给我讲为人治学的道理,其中有一句话说:“大学教育在使人有正确的价值意识,知道权衡轻重。” 于今事隔二十余年,我还很清楚地记得这句看来颇似寻常的话。在当时,我看到了有几分诧异,心里想:大学教育的功用就不过如此么?这二三十年的人生经验才逐渐使我明白这句话的分量。我有时虚心检点过去,发现了我每次的过错或失败都恰当人生歧路,没有能权衡轻重,以致去取失当。比如说,我花去许多工夫读了一些于今看来是值不得读的书,做了一些于今看来是值不得做的文章,尝试了一些于今看来是值不得尝试的事,这样地就把正经事业耽误了。好比行军,没有侦出要塞,或是侦出要塞而不尽力去击破,只在无战争性的角落徘徊摸索,到精力消耗完了还没碰着敌人,这岂不是愚蠢?

我自己对于这种愚蠢有切身之痛,每衡量当世之物,也欢喜审察他们是否有犯同样的毛病。有许多在学问思想方面极为我所敬佩的人,希望本来很大,他们如果死心塌地做他们的学问,成就必有可观。但是因为他们在社会上名望很高,每个学校都要请他们演讲,每个机关都要请他们担任职务,每个刊物都要请他们做文章,这样一来,他们不能集中力量去做一件事,用非其长,长处不能发展,不久也就荒废了。名位是中国学者的大患。没有名位去挣扎求名位,旁驰博骛,用心不专,是一种浪费;既得名位而社会视为万能,事事都来打搅,惹得人心花意乱,是一种更大的浪费。“古之学者为己,今之学者为人。” 在 “为人” “为己” 的冲突中,“为人”是很大的诱惑。学者遇到这种诱惑,必须知所轻重,毅然有所取舍,否则随波逐流,不旋踵就有没落之祸。认定方向,立定脚跟,都需要很深厚的修养。

“正其谊不谋其利,明其道不计其功”,是儒家在人生理想上所表现的价值意识。“学也禄在其中”,既学而获禄,原亦未尝不可;为干禄而求学,或得禄而忘学,便是颠倒本末。我国历来学子正坐此弊。记得从前有一个学生刚在中学毕业,他的父亲就要他做事谋生,有友人劝阻他说:“这等于吃稻种。” 这句聪明话可表现一般家长视教育子弟为投资的心理。近来一般社会重视功利,青年学子便以功利自期,入学校只图混资格作敲门砖,对学问没有浓厚的兴趣,至于立身处世的道理更视为迂阔而远于事情。这是价值意识的混乱。教育的根基不坚实,影响到整个社会风气以至于整个文化。轻重倒置,急其所应缓,缓其所应急,这种毛病在每个人的生活上,在政治上,在整个文化动向上都可以看见。近来我看了英人贝尔的文化论(Clive Bell: Civilization),其中有一章专论价值意识为文化要素,颇引起我的一些感触。贝尔专从文化观点立论,我联想到 “价值意识” 在人生许多方面的意义。这问题值得仔细一谈。



前几天飞回中国度暑假。在飞机上看了几部电影,比较喜欢其中一部,下了飞机还念念不忘,在互联网上找她的中文资料。 并不知道那部电影的中文名字,我用的搜索关键字是 “日本电影 an  煎饼 红豆沙”,百度返回的结果完全不知所云,翻了五、六页都跟我看过的电影没有关系。然后翻墙 Google,同样的一组关键字,Google 给我的第一个结果就是豆瓣上《澄沙之味》专页的链接。除此之外,搜索结果第一页上的好几个链接都直接跟这部电影有关。 没错,我找的就是这电影。微软的 Bing 不翻墙就可以使用,同样的关键字,Bing 返回的第五条结果跟这部电影有关,不算太差吧。

这个例子就可以说明 Google 和百度在语义匹配、信息检索技术以及结果排序能力上巨大的差别,这种产品品质的差别导致了用户体验的天壤之别。作为搜索引擎来说,跟 Google 相比,不客气说,百度三流不入。 只可惜因为在中国 Google 服务被封百度一家独大,没有比较就不知优劣,许多祖国人民使用三流搜索产品而不自知。在产品品质上有追求不妥协的国民则必须翻墙以使用 Google。

回国以后参加老友聚会其乐融融,席间拍了很多照片。约会后大家都把照片传到微信群组里,在手机上一张一张看我觉得不太舒服也不太方便,想把珍贵的相聚照片全部下载,上传到我的 Google Photos 做一个相册,方便观看、方便日后寻找、也方便分享。

但是,我手机上的微信 app 竟然不支持点击某张照片后直接分享至别的 app (注:图片之类的文件可以在不同 app 之间传来传去是安卓 API 的一个基本功能,大多数安卓 app 都支持这个功能),要传也只能在微信内不同的聊天窗口内传。实在是太封闭了!腾讯以为人们除了微信就不需要别的 app 了是吗?用什么 app 做什么事应该让用户选择用户作主,请腾讯不要 dictate 也不要蒙蔽大家的眼睛。我不就范,试图从微信上批量保存照片至手机,这功能竟然没有! 不屈不挠的我于是一张一张从微信群里下载照片。更不方便的是,微信只能把照片保存到微信自己指定的文件夹,而不能让用户在下载照片时指定目标文件夹。