December 18, 2011

Why Do Professional Programmers Use Macs?

Someone just asked this question on Quora. My answer ballooned somewhat :

1) Historically, Macs were the preferred machines of desktop publishing and graphic designers, then web designers. As the web became an increasingly important platform (relative to "client-server" on Windows et al) individuals and companies who had started in web-design area became more prominent - think of the rise of 37 Signals and Ruby on Rails - and brought their Mac-ness with them. 
2) When Apple shifted to OSX they made it a real Unix. In the late 90s, one of the attractions of Linux was that it was the only way to get your hands on a proper command line and Unix tools, and to run the server-side software like databases that you needed. When MacOS became Unix, the Mac could do all that too.  
3) At the same time, Microsoft basically fell over. Believing that their birthright was to control every computer platform ever, rather than that their job was to make good tools, they spent the noughties trying to copy first Java (.NET), then Google (Bing), then Apple's iPod and iTunes (Zune), then Flash (Silverlight), then Sony's Playstation (XBox) etc. etc. The result was 5 years wasted on the appalling Vista, and a lacklustre successor Windows 7 (whose main virtue is that isn't quite as bad as Vista). (M$ clearly haven't learned the lesson, so it seems that Windows 8 will just be an inept attempt to copy the iPad while leverageing the rapidly evaporating "lock-in" they think they have in the desktop OS market.) 
4) Worse, the commodity PC market that Microsoft (and Linux) rely upon went through some rapid consolidation and price cutting. By my reckoning we expect to pay about a third of the price today for a PC compared to our expectations of the early - mid 1990s. But this didn't just happen in the nice "Moore's Law" sense. Commodity PCs got cheaper and nastier too. Sure they have faster processors, but the cheap bits often don't work together all that well. 
5) Despite Linux's maturity, the PC manufacturers have totally failed to get behind it.
Personally, I'm writing this in Chromium under Ubuntu on a beautiful Asus Bamboo laptop. And I'll resist the cult of Apple for as long as humanly possible. But the trend is obvious. Even in 2011, PC manufacturers refuse to support Linux (they won't sell a computer with Linux pre-installed, they won't help to make Linux run well on their machines and ensure that drivers are available for graphics cards etc.) 
Asus added a whole bunch of power management software for the pre-installed Windows 7 on this machine when I bought it. They offer no equivalent for Linux, so my machine runs unnecessarily hot (I have shorter battery-life and probably the machine will die sooner.)  
The combined result of the Microsoft debacle, changes to the PC industry and the refusal of PC manufacturers to support Linux is that Apple is the only company which now seems competent enough to make a decent personal computer that you can actually use for software development.  
Seriously! Think about going out and buying a computer and you think either it will be a substandard Windows 7 machine (packed with slow, buggy "extras" that the manufacturer was bribed to put there, and without the command-line tools that all professionaldevelopers need and use) or you contemplate getting the same PC and having to install Linux on it yourself and, if it's new, having to deal with driver compatibility issues etc. etc. etc. 
Or you go out and pay twice the price but get a machine which is of high build quality, you can trust will do everything you need out of the box, and where the hardware / operating system just work together.
6) Oh, and one more thing. You can't develop for iPhones and iPads on a PC or Linux machine.