Faith It, You Thuck
There's a very distinctive method of driving in the Bahamas. I call it faith-based driving.
At first, I called it that because it appeared that they put a lot of faith into a higher power when they drove. The most obvious example comes at stoplights. When a signal light turns green, faith-based driving allows drivers who are turning to start their turn even though other drivers in the oncoming lane clearly have the right of way.
So at first, I attributed these drivers' blatant disregard for traffic laws to their strong faith in some Supreme Being, most likely Our Lady of Rapid Acceleration. Particularly strong Believers are those two, three, four, even five cars behind in the turning lane who follow the first one in a manner that severely tests the patience of the oncoming drivers.
Like I said, my first thought was drivers' faith in a higher power. More recently, I've drawn a different conclusion that is probably more accurate. To wit, people don't have faith in an unseen overlord so much as they have faith that other people on the road don't want to crash. That is, the patience of other drivers isn't really a variable. Other drivers allow idiocy on the road because they are either: a) painfully aware of how hard it is to get money out of an insurance company, or, more likely, b) not insured.
It's not quite as profound or religious, but it is a fundamental truth nonetheless, and one that I think underpins the entire Bahamian driving experience. It is still faith-based but the faith is grounded in more humanistic traits than theological ones.
But my epiphany didn't end there. This is a technical blog after all and since I have been banned for life from blogging about anything else (and someday I'll find a way of relating *that* story in a snippet of C#), I'd better get to the point quick.
As I sped through the streets of Nassau during a power outage severely testing my theory, it occurred to me that faith-based programming is just as prevalent. I have seen my share of code with comments along the lines of (depending on your particular religion-du-jour):
// I pray to God/Buddha/Allah/Zeus/Odin/Bill this works. If you are supporting this code,
// I would suggest locating your nearest farmer's market and cozying up to the booth that
// sells live chickens.
This is usually followed by code that is clearly functioning by sheer force of will alone.
But the second part of faith-based driving applies to faith-based programming as well. Other drivers and software users have the same basic goal: to avoid crashes. And both faith-based drivers and programmers will take advantage of this in their crappy driving habits/code. Whereas drivers will barrel through a stop sign assuming no one else would dare take them on, some developers will tell users in what order buttons are pressed and simply assume no user will possibly veer from that path. In the event one does and the application invariable crashes, that user will do what comes naturally: not press those buttons in that order anymore.
And like faith-based driving, the worst offenders are those who don't know any better. I'm guilty of being a faith-based programmer at times. In fact, I can think of one example not two days past where I had somehow assumed users wouldn't possibly press the back button on their browser at one point in the app I was building.
But whereas once I was blind, now I hear. And I will encourage you, pilgrims, to join me in combatting faith-based programming. Starting with your own work. The key idea is: don't have faith in your users. They will click where you want them to click for many days, maybe even months.
But at some point, usually that specific moment in time when you have, after months of therapy, completely vanquished all memory of the application's inner workings from your brain, one of them will fight baser instincts and, thinking he or she is a "maverick" who "doesn't play by the rules", click the Reverse Transaction button right after the Process Cash Transfer button simply because he or she was told not to.
And you'd better have accounted for it. Because eventually you'll come up against the user-equivalent of the person I "met" today: that rare driver with strong moral convictions, strict adherence to traffic laws and a truckload of insurance.