Interesting Cross-Platform Development Point of View

GeneralDev.jpg

I was reading Daring Fireball this morning and saw this post about using high-level languages to make development faster. I read this and had a few thoughts that didn't necessarily coincide with the original author's or John's. The gist of the original article was, I believe, this paragraph:

We couldn’t afford to keep spending time and energy writing software this way. Even if we could afford it, we didn’t want to spend our time this way. Web applications were being developed at an astounding pace in part because of centralized management and deployment (they never have to maintain different versions for Macs and PCs), but also because they were using modern interpreted languages.

and then he went on to say:

With high-level languages and good libraries, small teams can create great products at a rapid pace. We realized that we could write applications for the desktop in the exact same way.

True, very true. But the trade-offs seem to be completely overlooked. I mean completely overlooked. I don't disagree that if you want to reach a broad commercial audience you have to either go with the biggest audience or you have to try to go cross-platform in some kind of way. No disagreement there.

My disagreement with this argument is Why? Simply, Why? If you want commercial success then you need to be writing for the largest platform out there - Windows. Period. There's no need to write for Macs or Solaris or linux... just write for Windows and you're guaranteed to have the largest audience possible. No need to go any further.

When I started my company with my old friend we picked Windows for this same reason. I was a major Mac fan at the time, but the audience wasn't there. It just wasn't, and making a cross-platform anything was a waste of what little time there was in making it cross-platform. We needed clients, and they had Windows, it was as easy as that.

If you're trying to make something cross-platform, then pick a protocol and use that. I've done that numerous times and it works very well - be that a different OS or just a different language for the different APIs. Yes, it's more work, but in the end, it'll pay dividends and that's the point. If you're looking to make a fast buck, then by all means, write code in perl, python, Visual Basic, or Excel. There are people doing it and making a living at it - I did for 5 years. But that's something that we should get past, not aspire to.

Once you can pay the bills, then you should try to stop doing that kind of coding and get to the point that you take advantage of each operating systems' capabilities. There are things that are understandably cross-platform - the engine of the app, but there are a lot of things that need to take advantage of the differences in the different operating systems. Don't settle... write the best code possible. Don't say "Hey, we can, so we should."

I realize this is easy to say from my point of view, but I was there, and I did that work for years, and it paid the bills, and in the end, it was not emotionally fulfilling and so I left. I found something that was better, and while it's not self-employment, it's allowing me to set the terms of my work. I'm way past my 20s, and I'm looking for more than paying the bills at this point in my life.

Anyway... it's something to read and think about. Is it just about the speed and the buck, or is there more to the art of development that that? I think there is.