Over the years, I’ve come to formulate a policy towards software development and Microsoft in particular.
“Think twice before building a solution on a Microsoft platform.”
Why do I say this? I’m not unreasonably biased against Microsoft. I’ve almost never used Linux, I don’t do Java, I hack my way through Delphi, PHP and Visual C#, and I’ve used every version of Windows since 3.1.
I’m saying this because of something I’ve learned the hard way over the years. Microsoft platforms are simple and easy to use; they present you with a UI layer that usually is efficient to work with. Very appealing. No complaints there (well, some, but…). But when things go wrong, it very, very rapidly goes downhill. As long as you stay on the beaten path, things go OK usually, but at any point you may take a sudden turn and end up tumbling down the mountain slope and you never know where it’s going to end. And at the end of the day, you may very well end up straggling away from it, with bruises, broken bones and shattered dreams.
Little subtle decisions made by Microsoft, concerning innocent little details. Things you’d never tend to worry about, but when you pull the handle, rockets hurl you straight through the cockpit glass and you fly screaming into the thin air. Time to worry about how you packed your parachute. (You did bring one, right? The Microsoft sales staff probably said you didn’t need one, but you know how it is…)
Every company has these little quirks and annoyances. But whereas other companies try to avoid them and resolve them, Microsoft embraces them.
That’s why I’m afraid – very, very afraid – of building a solution on a Microsoft platform. Sooner or later, it’ll come back to bite me. It always does. Always.
It reminds me of a quote from Douglas Adams: “The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.”
