Level Crossings and Traffic Jams
I live in a small city south of Munich, which has around 18.000
inhabitants. This city is a terminal station of the Munich local transport
system, the so-called S-Bahn. Just a few kilometres down south, there is
another small city with around 24.000 inhabitants. A few years ago somebody
figured that it would be a really clever idea to extend the railroad to the
As a matter of fact, there is already a railroad track connecting our two
cities. A few times each week, this track is being used for freight
transports, chemicals and other stuff you probably do not want to know
about. The local train is not allowed to use that track for security
reasons. For a change, I will not blame my self-proclaimed security-paranoid
friend and colleague Arne Blankerts for complicating matters, but I have to
admit that I feel rather comfortable knowing that the likelihood of a
passenger train running a into freight train loaded with dangerous chemicals
in the middle of my hometown is somewhere close to zero.
Next to the train station, there is a railway gate, because the existing
railroad crosses a major east/west road. Since only a few freight trains per
week pass by, this is not an issue. In fact, I have never seen the railway
gate closed in more than five years.
The plans to extend the railroad, which is undoubtedly a good idea in
itself, have sparked a heated discussion: is a railway gate suitable or
should an underpass be built? The frequency of passing trains will increase
from a few trains per week to one train going forth and one train going back
every twenty minutes.
As you can imagine, local politicians, employees of the railroad company,
and, of course, citizens, have been taking part in this discussion. I have
to admit that due to time constraints, I have never attended those
discussions, but I have read through the meeting minutes. The discussion
boils down to one party claiming that level crossing will cause disastrous
traffic jams, while the other party claims that given the short closing
cycles, the impact on car traffic will be barely noticeable.
From a legal point of view, the discussion is most interesting: according
to law, no new railroad gates must be built. Existing
railroad gates, however, can remain. My personal point of view is that a
railroad gate will be a disaster, and drown our city in a permanent traffic
jam. This view is based on my personal experience. In the city where I grew
up, there was a level crossing with a railway gate, which was replaced by a
underpass at some point, because the waiting time for road traffic was
unbearable. In nearby cities, more railroad gates existed. Since they caused
similar problems, they were all gradually replaced by underpasses. As a
small anecdote, after the underpass had been built in my hometown, a new
firehouse had to be built, because the underpass turned out to be too
shallow for the fire trucks.
So why, about twenty years later, go with level crossings again? Did
nobody learn from the past? Or are twenty years enough to forget all the
lessons learned, and start over by making the same mistakes again? After
all, we have gradually replaced existing railway gates in the last
century (it sounds much more dramatic this way).
The discussions about whether it is acceptable to cut a city of 18.000 in
half by a railroad gate that is closed twice every twenty minutes somewhat
reminded me of the discussions that frequently take place in software
projects. There are different positions, and usually a few people on the
table are absolutely positive about a fact or decision, but they usually
cannot back up their claims by hard facts and figures, at least not ad-hoc.
Still, a decision has to be made. So who wins? As Eric Ries so aptly put it
in his book "The Lean Startup" (a very recommended read, by the way), the
biggest ego usually wins.
Does this lead to the best decisions? How often have you encountered a
manager, senior, or a paying customer who, with absolute certainty, could
explain to you how the world turns? And how often did this explanation turn
out wrong? These days, more and more companies question the traditional way
of making decisions, and run experiments instead.
A web site or a web application with a significant amount of traffic puts
you into a great position for running experiments. All you need is a way of
running multiple software configurations simultaneously, which is rather
easy to do if you are using some sort of dependency injection container or
factory that can be configured to "substitute" implementations (classes) by
The selection of the software configuration can be based on whatever
criteria you deem useful. To provide the user with a consistent site or
application, the decision whether to run an experiment is made just once for
each session. Being able to cleanly run experiments ("cleanly" meaning
without polluting the code with lots of if-statements) comes almost for free
with a modern and clean software architecture. If it does not, you might
want to rethink your software architecture, or complain to your framework
It is actually pretty difficult to determine whether the result of an
experiment is statistically significant. When you make the "Buy" button in
your web shop bigger, for example, sales might go up. But are you sure that
this increase can really be attributed to the bigger button? Maybe you ran a
special offer at the same time that gave your shop a cross-selling
Just because all the statistics involved are a difficult beast, you
should not give up too early. Many successful online and offline businesses
have been experiment-driven for quite some time. Fast food restaurant chains
try out something new in a few restaurants, and if it works, they will roll
out the experiment to all restaurants. IKEA does the same with furniture.
Amazon, to name an online business, has been continually running A/B tests
for a long time. Booking.com, an online hotel booking agent, is very
successful with continually trying out new rapidly prototyped features that
get cleaned up once they have demonstrated that they deliver business
As for the extended railroad, why not close the railway gate as if the
two local trains every twenty minutes were already running, and keep doing
this, say, for two weeks? It would be easy enough to find out how this would
affect traffic by measuring the queue length or average waiting time. Should
it turn out to be a real disaster, the experiment can be ended quickly, and
without any significant cost. This seems like a much better choice than
having to build an underpass to fix immediate problems, with ongoing train
and car traffic.
This article originally appeared in Web & PHP magazine.