This post was inspired partly by this Reddit post.
Take my opinions on the Mac as a development machine with a grain of salt, since I’m neither a professional programmer, nor do I contribute to any major open source projects. I’m still in the early stages of hackerdom, and most of the code I write is either for learning, part of simple scripts I write to automate tedious tasks or, more recently, part of small desktop apps I write using the Cocoa libraries. Even though I haven’t written or worked on any complex piece of software, I grew up using Linux and open source software and have been exposed to many different programming languages (before I settled on Python as my language of choice). I installed Fedora Core 1 (or was it FC2?) just for fun when I was 14 and ended up using various Linux distributions for about four years before I bought my MacBook.
I bought the MacBook about 8 months ago, and started learning Cocoa for writing desktop apps for the Mac, and I’m loving every bit of it.
All right, here’s my list.
The Good Parts
- Mac OS X is UNIX under the hood. Heck, launch Terminal.app and have fun playing with awk, grep, sed and friends – the same stuff one would use under Linux. OS X also comes with Perl pre-installed. I have no idea if Python and Ruby are parts of the core system, but they’re definitely parts of Apple’s Developer Tools package.
- You can grab all your favorite editors and languages off MacPorts, which is very similar to Debian’s APT (actually, it’s closer to Gentoo’s emerge tool).
- Most Linux applications run perfectly on Mac OS X. In fact, many of the lesser known apps have Linux and Mac OS X ports, but no Windows ports. The Transmission BitTorrent client is one example.
- I believe the UI of my OS has a profound effect on my productivity. The OS X UI has been designed to not draw attention to itself unless you look very hard. Contrary to popular belief, OS X does not have any eye candy, unless you consider smooth transitions from boot screen to login screen to the desktop eye candy. Exposé and Spaces look like eye candy to someone who has never touched a Mac before, but they are productivity features which just happen to be beautifully designed. A stock Ubuntu system with Compiz has much more intrusive eye candy than a stock OS X system.
- If you’re looking for a new programming language and a new set of APIs to learn, then there’s no better choice than Objective-C and Cocoa (this is exactly what I’m learning these days). After having written a few apps using Cocoa, you will never want to go back to writing apps for Windows or Linux. The API is consistent and well designed, and contains classes for the most common tasks you might wish to perform in a desktop app. Interface Builder is awesome in the true sense of the word, and unlike most other IDEs, XCode is fast, responsive and almost a pleasure to use (almost, because I still prefer the editing capabilities of Emacs over any other editor).
- No tinkering with config files, no hardware driver issues, minimal maintenance, no slowdowns over time, no malware issues and not having to do an apt-get upgrade every three hours. The it just works nature of the Mac has given me more time to work on my own code, rather than spending most of my time finding ways around other people’s mistakes.
The Bad Parts
- If you’re writing commercial applications, then Windows is the way to go. Apple will never have significant market share on your average desktop, since both Windows and Linux can run on anything from a Rs.25000 ($500) Zenith desktop to a custom built, Rs.65000 ($1360) gaming machine, whereas the Mac OS runs only on Apple hardware.
- Macs don’t play well with other operating systems. Installing Windows using BootCamp works fine and dandy, but running it for a long time causes my MacBook to heat up to over 65ºC. While installing Linux on a Mac is easy, it’s not officially supported by BootCamp, and getting it to play well with the hardware requires many hacks and workarounds.
- Customizing a Mac is not easy. Linux allows you to customize every aspect of the OS, and even Windows allows a certain level of customizability, but the Mac allows none. Be prepared to either install unsafe hacks that mess with the OS or just STFU and follow the One True Way of Steve Jobs.
- Be prepared to pay for quality. The software-wants-to-be-free culture of the Linux world is not acceptable in the Mac world. If you can’t pay up, then have fun using unstable ports of clumsily put together GTK apps under the X-Server.
Even though the Mac has its own disadvantages, I’d rather use a Mac than a Windows/Linux machine for development any day.