Five reasons why this developer won't switch to Mac
There are many reasons to switch to Mac (or, better, to switch away from Windows), but being a software developer is most certainly not one of them
Don't get me wrong: I love Macs. My second computer is a Mac and when my wife-to-be wanted a computer, I convinced her a Macbook was the way to go. Since my first computer, an Apple II, I am as much an Apple fan as anyone else.
But as much as I love them, Macs are not for me.
I find it utterly annoying when any fanboy makes broad claims such as "Developers are Switching to Mac", mostly because they are incorrect and, mostly, because the authors extrapolate their specific needs and conclude that every X is switching to their favorite platform for the same reason he/she thinks their platform of choice kicks ass. The article in question is in Smashing Magazine at "http://www.smashingmagazine.com/2009/04/26/five-reasons-why-designers-are-switching-to-mac/".
For those who know me, it's no secret that I prefer Linux.
So, without further delay, let's explore the reasons of our disagreement:
MacOSX
OSX is nice, but as soon as you open up the terminal and want to install a different version of any language that comes with the system, you are bound to get your hands hurt. You will probably end up installing and then messing with BSD ports, and, when I say "mess", that's what I mean. You will learn a lot more than you ever wanted to about source-code and build systems and on how to keep what amounts to a secondary userland (you will also learn what a "userland" is) on top of the one that comes with OSX and that Apple keeps somewhat up-to-date (albeit with some ancient versions of a lot of stuff I use, like emacs). It's, at best, an annoyance and it makes living on a Mac every bit as comfortable as living on any other BSD box, which is to say it's not very comfy. The second option would be to go with Fink, which adds Debian-style package management on top of a secondary userland like ports. It worked for me, but since about every Mac heavy user I talk to prefers ports, I have to assume Fink is not the preferred way to go.
The third option is to wait for Apple to pack the language you want in the next version of OSX. I heard Snow Leopard will have Ruby 1.9 and Python 2.6 and a fairly current version of Java, so, all you need to do is to wait.
To be fair, I have set up a development environment on my Mac, with Subversion, Python 2.6, Django and Aquamacs. It works, but it took me a while to set it up and I don't want to install anything like PostgreSQL on it. It already took me a lot of time and my time is neiher free nor does it come in big quantities.
I will dismiss open-source friendliness as the only OS that is not open-source friendly is Windows and no serious developer self-inflicts such a pain.
As for Quartz Extreme, there is Compiz fusion on Linux. Unless you spent more on your graphics card than on your computer, it should work fine. It won't be perfect for several graphics cards because the manufacturers prefer to keep their hardware specs secret and driver writers need to know the hardware they are writing drivers for. I will not explore the reasons why they would want to do it, but I suspect there is something about a threat of not having their graphics cards supported under Windows 7. And I have something like spaces in X (the X window system, not OSX) since the early 90s, so, that's nothing new. Even Windows 3 had a workspace switcher back then.
Core Animation is great if you are developing for Mac and useless in any other situation. I assume that if you are developing for Mac you already have one, so that one is a stupid reason.
The built-in tools argument sounds like a joke. Xcode is good, sure, but so is Eclipse, NetBeans, Emacs and almost any other glorified editor. Every tool he mentions has better counterparts. The exception is Time Machine, which I find a nuisance to use, but may appeal to the unexperienced user.
Developers usually don't care for a unified user experience. If I am driving a car I expect to have a different user interface than the one I get when reading a newspaper or having a shower.
Security is becoming more and more a reason for embarassment on the Mac front, but, again, I won't go there. Anyway, if your only choices are Mac and Windows, then the Mac is immensely more secure. Fortunately, I have better options.
"Textmate, Growl, Quicksilver, and more". Why would I want Textmate when I have Emacs? And Adium? Isn't it derived from Gaim/Pidgin? Why would I need those? And, BTW, Pidgin runs on Windows. So does Emacs.
Virtualization... Well... I can't run OSX on my PC under Linux, at least not legally in the US. But hey! I don't live in the US. And I have been running Windows XP under VMWare and VirtualBox for ages. I currently even have Windows 7 and OpenSolaris installed on virtual machines. A friend of mine is running a Solaris 2.5 application on an x86 box under emulated SPARC, all under Linux. And a couple years back I had MVS/370 running under Hercules (which also works on Mac, BTW).
Intel inside
Of all the reasons to switch to Mac, this is the most stupid I ever heard.
I love PowerPCs (have a couple of PowerPC Macs and RS/6000s in my private collection), but when Apple moved to x86 they just made their computers PC-likes. Pretty ones, well-designed ones, but, still, PCs. And not very breathtaking ones. I can buy an ugly Dell box that will run Linux faster than MacPro. It's ugly, but gets my job done. And much faster. On the same budget.
Hassles
The author seems to ignore how much of a pain is to build a real development environment on a Mac. You can easily install Eclipse, Dreamweaver, Photoshop and a lot of other programs, but what if you need a language that is not installed by default? What if you need a different version of a language that conflicts with the one already installed? What if you need a different version of GCC? Then you are screwed. Royally. In this situation, using a Mac is as much a hassle as using AIX, HP-UX, Tru64 and any other vintage Unix. It's either that or you install ports, which makes your Mac marginally less hostile. Still, ports is no package management nirvana.
Developers don't need opinionated software. I am in command and the machine serves me. It's my way or the installation disk. This is not negotiable. I feel sorry for those who can't make their computers work the way they want to because someone, somewhere decided that their way is the only True Way.
And when did anyone ever had a major problem actually solved by tech-support? Get real. If the guy the other side of the counter (or the phone) knows more about your computer than you, that says a lot about what kind of developer you are. If that's the case, my advice is to seek a good career management company and consider switching to a job more suitable to your skills.
As for hassles, any modern Linux has a decent package manager. Installing most stuff is like going to the supermarket, picking programs from a unified catalog and pressing a button. And it comes with a unified updater too. And it sports a GUI too.
Microsoft
Windows sucks. Period. That, too, is a non-issue. Unless you develop for Windows, there is no reason to do so under Windows. Windows has no proper shell scripting language and a standard install of Windows has no development tools whatsoever. Even simple automation is next to impossible. For those poor folks condemned to work under Windows, I strongly suggest to get Cygwin. They won't regret installing it.
Good design
That too is an interesting question. Good design gets out of the way - you hardly notice it as form flows into function. Developers need good text editors and little more. When I enter deep-hacking mode, I turn off Pidgin, TweetDeck and every other program that pops up distracting stuff. There is no better environment to focus on coding than a decent text editor. Developers spend most of their work in them and it makes sense to use a powerful tool even if its harder to learn because time invested learning it is time well spent. I cannot claim to be proficient in Emacs, but I am learning and I am impressed with what I can accomplish with it and with its programmability. And so what if I had to learn a little Lisp for that? It's not that hard and it is well worth it when I consider what I got in return.
No, Thanks
So, I am not switching to Macintosh. Sure it has great application support, but I don't do Flash and I have little need for Photoshop and even those I could use under a virtual Windows environment (my netbook came with a XP license, so, in essence, it came for free), where I could have all the Windows application support I need without the pain of actually using it.
Macs are the best computers for a lot of people, but not for software developers.