A few years ago I had a commute to work that took over an hour and involved a couple of different modes of transport. I had a very short walk to the Luas1 which took me to the City Centre. Once there I had a fifteen minute walk to catch a private bus service that ran and still runs I assume between the City Centre and a business park in the middle of no where. For some reason I always seem to end up working in difficult to get places.
Most of the time this was not too bad, a twenty five minute tram ride followed by a fifteen minute walk then a twenty five minute bus ride and I was there. This was not as bad as it sounds and it gave me one and half hours a day to myself. I got though a lot of reading those days and sometimes I even miss it a little, then I come to my senses! You see the, "just over an hour journey" was the ideal scenario, all too often the private bus was very late or did not show up at all. We were often left waiting there and when we called the bus company's office we got the standard line "he is just around the corner". Which was funny as the bus stop was close to a junction and we could see pretty much around every corner.
Forced to stand together for protracted periods of time and united by our common hatred of the bus company, strangers start to talk to strangers, strangers who over time (years in my case) become bus friends, then real friends and sometimes even good friends. It was on that bus that I met a friend of mine, who a few years later hired me for a great job and became my boss, so it wasn't all for naught. He loved and still loves a good metaphor, don't we all?
One my favourite metaphors he came up with2 was to do with why it is hard to recognise bad software until it is too late. One day on the bus ride home (the bus was on time that day, saints be praised) we were discussing why it is hard for consumers and businesses alike to recognise crappy software. We were not breaking any new ground we were just having one of those discussions that programmers like to have. We talked about complexity of course, about user eduction and so on and so on. When we were came to how the inner workings of software are mostly hidden3 and how it is different in other fields he said this: "Anyone can make a table by taking a piece of ply-wood and hammering in some 2x4s for legs, but everyone can tell the difference between that table and a table made by a skilled carpenter".
The problem with software is that at first glance there can be no difference between the two tables and with a good coat of paint it can be near impossible to tell the difference until you take the table home arrange a fancy dinner party and make a terrible mess!
Footnotes:
1.For those of you that do not live in Dublin, "Luas" is "Fast" in Irish, it is a street going tram that is really handy if you happen to live on one of the only two lines.
2.I am not saying he was the first to make this analogy, but I first heard it from him.
3.In closed source software at least and even open source software to the average non-programmer computer user.