Years ago, I remember being told an Ethnic Minority Joke. A couple are travelling in the deep rural depths of Ethnicland and become lost. They come across an Ethnic peasant, and ask him for directions to their destination. He thinks for a while and then says (and at this point, you should insert your own Ethnic accent of choice): “Well, if I were going there, I wouldn’t start from here. I’d go to Ballymollee and start from there.” Oops, what a giveaway. Anyway, the point, of course, is that you start from where you are and not where you’d like to be. A simple and obvious principle, yet it seems to be missed quite often.
Today, on ZDNet, I read John Carroll on FireFox. I’m not saying I agree with all of his article, but the point I’d like to take and argue until it squeals is this; the Web is made up of pages that are what they are – full of illegal HTML, bad constructs, failing-to-validate garbage. And that’s where we need to start from; not some high-minded “let all pages follow the standards and then we’ll have a browser competition”. The world is not going to rewrite its web pages, it has better things to do.
Those of us who write code to deal with the messy Real World (that annoying subset of the Universe that isn’t interested in well-formed data or elegant schemae) know all about this from sheer hard experience. If you create a field that’s 64 characters long, someone will want to fit in 65 – for good, solid, personal reasons. If your code expects a line-based file, someone will put in line breaks in the wrong place “because it looks better on the screen”. The real world is full of badly-formatted, unreliable, messy and dirty data. We deal with it, or we fail to provide the right solution. There’s no point getting all principled about it; there’s no living to be made from that, at least in IT. I’m sometimes tempted to call this “Taoist Programming”, since one of the messages of Taoism is to deal with the world as it is, not spend effort in struggling to make it as you think it should be.
This all applies very well to those who seek to compete with Microsoft. The world isn’t perfect, and some say that one of its imperfections is the dominance of Office, Outlook and Windows. There are two ways to fight this, if you’re so inclined. One is to try and change the world so that the Vast and Uninterested Mass of people use your preferred solution instead. “Leave the comfort of what’s known and understood”, you can say, “and install this different platform. It’ll take you hours of your life and cause you the tremendous stress and frustration of any learning curve, but trust me; your life will be better”. Oddly enough, this message isn’t universally welcomed.
Or alternatively, you can recognise that the world is as it is – with desktops dominated by the Start menu and that damn green-field wallpaper. And you can start from there, supporting Windows as a platform on the same basis as you support Linux or MacOs. Allowing people to change small aspects of what they do for reasons that make sense to them, to act in their own interests. Python does this; it works very well in the Win32 world. Java does this. Eclipse does. Lots of open source projects don’t.
Change comes from a million separate small steps, starting from where we already are.
 I can’t resist linking to two other passages that I think apply excellently to software development. And whilst this blog is in no sense political at all, I offer this link. Make of it what you will.