Okay, I admit that the title is needlessly kindling a fire. The Apple vs. Microsoft debate (war?) has been going on forever and has been beaten to death. I am not going to revisit it here. I just used it catch your attention. 🙂
The real title of this post should be Mac OS vs. Windows for software developers (desktop OS software only). There are so many other similar Apple vs. The World debates which I am not going to talk about. If you are interested in participating in any such mini-battles (like iOS vs. Android, iPhone vs. every-other-phone-on-Earth, Macbook vs. other-laptops), please visit our office. We have a dedicated Apple fanboys club. And if you are not an Apple fanboy yourself, be ready to listen to a lot of hogwash and feel the effects of a mini-Reality Distortion Field.
Now, let’s get down to the actual topic.
At Report Bee, we use a wide range of technologies to build our products.
- Ruby on Rails as our server side software.
- MySQL and PostgreSQL as our relational database servers. We even use NoSQL datastores like Redis and MongoDB.
- Statistical modelling and data mining: R (Programming language).
All our servers run a variant of Debian Linux which are all managed remotely.
Most developers at RB use the Mac operating system exclusively for all their development (the rest use Ubuntu Linux). Windows is conspicuously absent. In fact, I recommend all new developers joining us to get a Mac.
Why? Isn’t Windows the most used OS in the world, by far? Is it so bad?
No, not at all. Windows is an absolutely fantastic operating system. I recommend it to all non-developers, non-designers and Growth Team members. It does everything any layman or business user could possibly want and does it beautifully.
What Windows does not do well is cater to the users who want the power of the command-line or terminal shell, as it is called. And who wants this? Software Developers. Web Developers, especially.
Windows does have a command line shell. But it is woeful, to put it mildly. And it does not play well with most open source web development tools. That’s because most of these web development tools are built targeting UNIX.
Mac OS ♥♥ UNIX
This is where the Mac OS comes into play. In the late 90s, when Steve Jobs came back to Apple, he brought with him the NeXTSTEP OS, which was built on a variant of UNIX (FreeBSD). That OS is the root of the beautiful Mac OS X that we see today. In short, Mac OS X is built on top of UNIX.
That simple fact is the sole reason why I find Mac OS much more suited for heavy development. The bash terminal that we all love from the Linux world is available out-of-the-box on Mac OS. All Linux commands work with the same syntax. Web dev tools almost always have a package built for Mac first, because it is so easy to create it due to the UNIX heritage.
Sadly, we cannot say the same about Windows. Ruby on Rails especially, is almost impossible to work with on Windows. I say “almost”, because, there is a way around with Cygwin and Console2. But the setup is stupidly complex and time consuming.
Then comes all the supporting tools for web development, like IDEs, database clients, server management software, VCS clients, etc. Every one of those tools target Mac first, Linux second and Windows may come a distant third, if at all.
Another advantage of having a UNIX-like shell built-in to the OS is having SSH out-of-the-box. Any system admin would understand the power of SSH. Not having to use a separate software like Putty just to connect to remote machines makes life a lot simpler (especially when using public-private authentication keys).
In short, when developing web software on Mac OS, you can expect things to just work. What more could a dev ask for?
What about Linux?
Ubuntu is a very mature and extremely popular distribution of Linux. Theoretically speaking, this could be the first choice for all web developers.
But two things let Ubuntu down.
The desktop Ubuntu OS comes with glitches. Lots of them. The level of polish that you see with Windows or Mac OS is just not there. Too many straightforward tasks degenerate into messing with system-level files with the command line. This may be fine for a home enthusiast or hobbyist. But the time wasted is just not worth it for a professional.
2. Support from the big companies
Companies like Adobe which make a lot of tools for web development just do not concentrate on Linux as a platform. So, if you rely on tools like Photoshop, Flash or Flex, you can rule out Linux right away.
I hope I have given a small insight into why I choose Mac OS for my development. Whether you support my views or not, let me know in the comments below.
Meanwhile, enjoy these classic ads.