Joel has a piece on Microsoft and the Windows API. It’s a good read, a long read, and it touches on a lot of things.
Now I’m not a Windows programmer. I’ve written code that runs on Windows, usually in Perl, though I’ve been known to write ASP when forced to. I don’t know much about the Windows API besides what I’ve read, so I’ll not comment much on that.
What I do know about is the web. Most of the software I write is for the web in some way, either web-based applications, or applications that produce output as HTML. If you’ve been reading this site for a long time you’ll know I’m against lock-in. Writing applications that run on the web, and use a browser for the interface, allow for a great deal of lock-in avoidance.
Joel says the following about writing web applications:
You can use any programming environment you want because you only have to get it up and running on your own server.
While you may actually have to get things running on more than just your own server, nowadays that isn’t a big issues if you choose a language like Perl, PHP, Java, Python, etc… and if you use a *nix-type OS like Linux, FreeBSD, or Mac OS X (heck, sometimes Windows even works!) Add in MySQL (or PostgreSQL, or SQLite maybe?) and Apache (or… ok, alternatives are a bit more limiting here, but Apache is open-source and runs on a dozen platforms) and you’ve got a nice bunch of choices. Yup, choices, something you don’t always get from Microsoft. You may have to do a bit more work in some cases, for instance, you write something that works with Linux and MySQL and later want it to work on Mac OS X and use PostgreSQL, will it work? Probably… Will the changes needed to make it work be massive? Probably not. For most web-based applications it shouldn’t be. I regularly develop things on Mac OS X and move them to Linux with zero issues, and I know plenty of other people who do the same thing.
I think Joel nails it when he says that Microsoft has lost a whole generation of developers. A co-worker of mine talks about this sometimes. We see that the colleges have a lot of kids that don’t go the Microsoft way, they’re using Linux and other open-source tools, and in a few years these kids will be in the workforce, and they’ll want to use the tools that they understand, the tools that make sense to them, the tools that they know. This will be one more step in the decline of Microsoft. While I often wish Microsoft would just go away, I’m pretty sure it isn’t going to happen anytime real soon, but to imagine the world five years from now being much less Microsoft and much more open-source gives me great hope.
Of course I can’t just let it slide that Joel says the following:
Remember, people buy computers for the applications that they run, and there’s so much more great desktop software available for Windows than Mac that it’s very hard to be a Mac user.
Yeah, he adds a disclaimer after it, but I’ll still respond. What I want to see is a list of “great desktop software available for Windows” because I can’t remember any Windows application being so compelling it made me want to run out and buy a Windows machine. I do know plenty of people who say they need to have a Windows machine for work, or they need a Windows machine to test browser compatibility. (Here’s a funny one, Microsoft probably sells a whole bunch of copies of Windows just so those web developers who don’t want to get locked in to developing for Windows can test their sites using Windows and IE, you can’t win…)
Anyway, the majority of people buying computers nowadays probably want to browse the web, use email, write documents, edit photos, or video, or audio, or… I dunno, I’m having a hard time figuring out what you would need a Windows machine for, that a Mac could not do, unless it was be a corporate developer, or use some application at home that your employer required that only ran on Windows…
Yes, I’m biased, I don’t like Windows or Microsoft. I do like open-source, the web, and Mac OS X…
Keep up the good work Joel!