60

I've worked on both Mac and Windows for awhile. However, I'm still having a hard time understanding why programmers enthusiastically choose Mac OS X over Windows and Linux?

I know that there are programmers who prefer Windows and Linux, but I'm asking the programmers who would just use Mac OS X and nothing else, because they think Mac OS X is the greatest fit for programmers.

Some might argue that Mac OS X got the beautiful UI and is nix based, but Linux can do that. Although Windows is not nix based, you can pretty much develop on any platform or language, except Cocoa/Objective-C.

Is it the applications that are only available on Mac OS X? Does that really make it worth it?
Is it to develop iPhone apps?
Is it because you need to upgrade Windows every 2 years (less backwards compatible)?

I understand why people, who are working in multimedia/entertainment industry, would use Mac OS X. However, I don't see what strong merits Mac OS X has over Windows. If you develop daily on Mac and prefer Mac over anything else, can you give me a merit that Mac has over Windows/Linux? Maybe something you can do on Mac that cannot be done in Windows/Linux with the same level of ease?

I'm not trying to do another Mac vs. Windows here. I tried to find things that can be done on Mac but not on Windows with the same level of ease, but I couldn't. So, I'm asking for some help.

24 Answers24

73

I've been using MacOS X for about half a year on my dev machine and I definitely wound not recommend it to developer, other than iPhone/OSX developers (they don't have a choice, do they?).

I've replaced OSX with Ubuntu. Apparently I'm not the only one switching from OSX back to Linux.

All the tools you take for granted in Linux are either non-existent or painful to get to work on OSX:

  • installing open source software: if you're lucky there's MacPort for it. Installing MacPorts feels like Linux 15 years ago. It downloads the package and compiles it. No binary packages. Want Qt? Reserve 5 hours for compilation. If you're not lucky, there is no MacPort for software you're looking for. Then you have to download source and compile it (welcome to 1980's). Sometimes compilation instructions for OSX 10.5 will work on 10.6, sometimes they won't.
  • to make things more interesting, there are other alternatives to MacPorts, like Homebrew and previously Fink. They are not compatible at all with each other, and using more than one of them at time guarantees total chaos and rendering your OSS unusable.
  • multi-screen support: hey, looking for your IDE's menu? it's on main screen, not the one you're working on. You can get lame "solution" for that, called SecondBar. It will be ugly, unresponsive and at times will display bunch of "N/A" instead of menu. But it's OSX so who'd care about ergonomy when you can have eyecandy. I mean, if you'd like interface designed about ppl who care about HCI, you'd choose Linux or Win7 anyway. (Update: this seems to be finally fixed in Mavericks, even though last 2 years I've been told numerous times that it would contradict "the Mac way").
  • decent terminal: you have few choices, the default Terminal.app, the iTerm and dozen others. None of them has full feature set (comparing to default consoles in Linux), each of them has at least one of the problems (like messed up line wrapping, no tab support or problems with UTF-8).
  • GCC 4.2 is included... but wait, why doesn't it understand GCC 4.2 x86_64 flags like -march=native? As pointed by Jano, it's a bug. OSX only bug, to be exact. But on OSX, unlike on Linux, you cannot expect Apple to actually backport the fix and release it in software update. So you're back to square one — OSX is a niche system, and it makes your life as developer harder, while mainstream systems, like Linux, make it easier.
  • any software that uses X11? OSX now has X11 support. With look & feel totally inconsistent with the rest of the UI. Fugly.
  • want to see normal UNIX directory structure in Finder? No way, that's like magic, a normal user cannot be allowed to see that... You can of course activate that with few cryptic commands executed from CLI. I mean, having "show hidden files" checkbox like in Windows would be just too confusing for macusers...
  • up to date Java — sorry, you can't have that, Apple hates Java and will do anything to prove it inferior technology. Which means keeping it obsolete and not applying any updates. Even if it means exposing their users to trojans.
  • "security? we don't need no stinking security!". MacOS X is the least secure of all mainstream OSes (including home editions of Windows). It has fallen victim of hackers year, after year, after year and it's still the case. Also the myth of OSX not having viruses is not true for at least 5 years now. And it doesn't get better for third party products either:

Mac users running Skype are vulnerable to self-propagating exploits that allow an attacker to gain unfettered system access [...] Skype's other clients, e.g. Windows and Linux, are not susceptible to this vulnerability.

Update: OSX's security seems to go from bad to worse

With the latest Lion security update, Mac OS X 10.7.3, Apple has accidentally turned on a debug log file outside of the encrypted area that stores the user’s password in clear text.

vartec
  • 20,846
66

Disclaimer for comments: I use what I've determined to be best for me. Those reasons are what I've listed here. Finding the "greatest fit for programmers" in all situations is impossible, and I don't think anyone bases their choice on thinking they've found it.

It's a Unix-based OS with a great user interface installed on great hardware. Hardware that is getting ever-cheaper as Apple grows and uses their buying power to secure lower and lower prices of great components.

I use Mac because:

  • Unix-based OS
    • Terminal is a bash shell with all the standard Unix utilities
    • Built-in SSH!!
    • Comes preloaded with software that works great with Unix: SVN, PHP, Apache2, etc.
    • I find a Unix filesystem so much more comfortable to use in development.
  • Great UI - In my humble opinion, you can't beat the usability of a Mac. I love the Mac-specific apps I use daily - Mail, Adium, Textmate
  • Great OS - Can't beat the install of (most) Applications - drag and drop. The /Library folder is well organized and easy to find what I need if I have to dig into preferences, copy an application's support files, install a new Preference Pane. Speaking of System Preferences - another great feature of Mac.
  • Great support for other apps - IntelliJ IDEA is as good on a Mac as anywhere. Skype. Chrome. Firefox. Adobe suite.
  • Great hardware - I work on a $1200 13" Macbook Pro (external 24" monitor at desk). Cheaper than my coworkers on high-end Windows desktops and I'm not running into processing issues or memory issues (none of us really are these days). And you just can't beat the quality of an Apple laptop (developing on laptops is a different question but I can't live without one - wire-free for meetings, private Skype calls, or taking my work home exactly as I left it. And 10 hour battery life!).
  • Lastly, I don't develop on any Microsoft-stack technologies, so I don't feel limited there.

I don't think there are any things I can't do on Windows. The above is a list of things that, as a sum, just make Mac the preferred option. If you are looking for singular things, there are a few tasks that I feel I can simply do more easily on Mac:

  • (As mentioned above, probably the biggest) Terminal > Putty + Cygwin + Powershell
  • Migrate everything to a new computer
  • Uninstall applications or install multiple versions of applications (browsers, usually)
Nicole
  • 28,243
35

For me the main benefit over Linux is that it all just works together, especially on a laptop. Video, wireless, suspend/resume without having to find and configure the right drivers, determine what chipset you've got etc. All that might be doable with Linux, but it's a hassle when you just want to get some work done.

matt
  • 1,131
  • 7
  • 9
23

Do not underestimate the hardware.

Once you got used to the trackpad you do not want to go back! Two fingers and you scroll in any direction...

22

Developers or not, experienced or not, intelligent or not most people will favor aesthetic beauty over substance. Macs are good but completely undeserving of the kind of support they have. It's clear that there are no compelling reasons to use a Mac over a PC running Linux or Windows but people try extremely hard to find some to justify buying one. I don't understand why people just don't say that they bought a Mac because it is pretty and fashionable. There's nothing wrong with that. I will even admit that I use Linux partly because its fashionable among developers. We all have a natural leaning towards what we believe is "cool".

nobody
  • 847
toc777
  • 451
18

Mac has all Unix features with awesome UI.

lfx
  • 814
14

I was an OS X early adopter and a long-time Mac supporter, but I've come to the conclusion that they still don't make good dev machines, especially not in an enterprise environment.

I'd used them at school and had one on my second desk at work for awhile (rarely used, 95% of my time was on a Unix terminal, but I always liked it when I had the opportunity to use it, which was mostly for graphics manipulation). I finally decided to buy my first Mac (right when OS X first came out). However, in less than a year I got so frustrated with it that I sold it off cheap. The hardware LOOKED beautiful, but felt cheaply made. OS X was an exercise in frustration. MOST *nix stuff I was trying to do worked, but the remaining part was broken in subtle ways. Too many episodes of complete freezeups with the spinning beach ball of doom in Mac apps.

I've continued to/still use one at work on occasion, but really only for Mac specific tasks. I'll bounce back to one periodically to see what the current state of the art is. Java support has been weak and lagging for a long time. It seems like they're just now getting caught up. It keeps getting better, but, it's just painful to use one for dev work compared to either Linux or Windows. OS X repeatedly disappoints, as does the hardware (primarily overheating issues, but over the years I've also had monitors that turn themselves on and off when near radio transmitters, etc. Stuff that "just doesn't happen" in PC land). I hope that one day they will be a good option, but they're just not there quite yet.

13

There are three main reason I'm on Mac (specifically Macbook Pro) now for my software dev needs:

  1. Great hardware. It feels great to work on, the battery life is awesome, and the screen is just beautiful. Oh, and the trackpad is pretty nice too.

  2. Unix. It's based on Unix, and it's great for Ruby development. I have my terminal too.

  3. Runs Windows great too. I can use Bootcamp to run a Windows OS natively, or use Parallels to run it in a VM. So for my Windows development, I can do that all too on my Macbook Pro. I suppose if you are hardcore about Ubuntu, you can install that too.

spong
  • 9,471
  • 6
  • 45
  • 58
11

Less headaches when it comes to interpreted languages. Python, perl, ruby, and prolog come pre-installed (as they do on most *NIX systems). Much better UI than many Linux systems, imho. Headaches do occur when trying to build system-specific C programs (anyone tried building their own thread scheduler in C, in OS X? Not fun). On Windows, python, perl, and prolog are not pre-installed. Much of Windows comes with *ware you never use. That being said I don't use a lot of the pre-installed applications on Mac (I don't use Mail, Address Book, Font Book, Garageband, iPhoto, iDVD, iWeb, TextEdit, etc). Macs offer the flexibility of installing Windows, whereas the reverse is not true (no fault of MS... blame Apple, here).

In short, it offers many of the great programming utilities and languages found in Linux distros and leaves the headaches of Windows behind, all while providing a world-class, flexible, UI. But, I'd agree with you in questioning why people would prefer solely OS X for general programming. Not very good for that.

I tend to use whatever is at hand or the best tool for the job, be it Windows, OS X, or a flavor of Linux.

Erik
  • 508
  • 1
  • 3
  • 10
aqua
  • 1,001
9

I can imagine the only reason would be to develop iphone apps. But otherwise OSX is basically Unix......and Unix/Linux is free for most so I wouldn't see any other reason.

7

The fact is that it doesn't really matter.

If you really want to improve your productivity as a programmer, stop thinking about how cool is it to have the windows making all those fancy stuff and learn to use command-line tools, a great scripting language and a great editor.

You will see your productivity increase regardless of the OS you choose.

When you understand that those are the really useful tools you cannot live with, you'll forget about Mac OS fancy stuff and hype.

Jose Faeti
  • 2,815
6

Every suffering Apple owner entices others to share his fate, it is a trap :-) Or else, may be the constant negative campaign against Windows however possible has ensured that an average Mac user is always kept in the dark. Also, in reality, Mac OS has been patched regularly (mostly without any advance notice to users.)

It is important to realize that the stability of Mac OS X is due to the proprietary hardware - you cannot plug and test whatever you want, so no hardware is actually untested. Note that there are four or five options of Apple computers, and upgrades are prohibitively expensive - which means there are a few dozen varieties of hardware in the market, that is it. Support is a breeze. Also, in reality, Mac OS X is not bug free or secure

CMR
  • 827
4

I switched from a laptop running Windows to a Mac about seven years ago when I joined a UNIX shop that was primarily focused on ANSI C command line apps for Bioinformatics. I could do my work on any UNIX box, so why did I pay for a Mac? Purely subjective preferences. I like the look and feel of Mac native applications more than any of the Linux desktop flavors. I hate Open Office, and I actually like Microsoft Office. Go figure. Macports provides most of the convenience of yum or apt-get for developer tools. It did take a few years to get Valgrind for the Mac though.

I don't make any claim for the objective superiority of OS X over Windows either. However, I have developed a strong personal aversion to Windows. The fact that I still have to think about drive letters on Windows irks me, and over the years I've had a few disasters with damage to the registry and bad application installs. My Macs just seem to require less 'futzing' to keep them running smoothly. I do keep a pretty current Windows desktop machine at home for games and providing support for friends and family. However, I've also had good luck steering my non-techie friends to Mac in the last few years. Again, the only way I can describe the benefit is less 'futzing'.

4

Some might argue that Mac OS X got the beautiful UI and is nix based, but Linux can do that.

I hear this a lot. Let's see it with a recent example: Gnome Shell vs the iPad, can you see the differences?. First thing, the font on the Gnome Shell is W-T-F atrocious.

Then the icons. The four basic rules of graphic design are contrast, repetition, alignment, and proximity. They tell you basically if two elements are alike. When you look at the home screen of the Gnome Shell, apart from being crowded, you see wildly different icons with irregular shapes, so your mind gets busy wondering what are those and how they relate to each other.

This doesn't happen on the iPad because the elements are aligned on a grid, and they all have rounded corners and a gloss effect (applied by iOS). Obviously, they are elements of the same set, so your mind rests.

Just an example of similar functionality with different execution. This is important because design is not just a coat of paint, appearance is an integral part of the product itself. How you feel can not be separated from how you think (literally). Read Does Form Follow Function? about this.


A common misconception is that Macs are overpriced. This derives from comparing a low end PC with a Mac. If you think otherwise, really try to find a serious comparative on the Internet (here is one). Of course you will always be able to assemble a more powerful and cheaper PC yourself if that's your only criteria, but that's not what Apple is aiming for.

You don't buy a Mac because of its power (nothing matches a linux cluster for that). You buy it because there is an employee with a salary using it, and you want to avoid hardware/software issues. Apple values stability and ease of use over features or raw power. You can argue with this, but beyond personal experiences, they consistently come on top on consumer satisfaction in several countries.


Another virtue of Mac is that you can install nearly anything (KDE and Gnome included). Almost all linux software is available through macports packages. This is an important feature because you can't count on Apple to update Java, GNU software (march=native still bugged in Apple's GCC), and others. OpenGL is probably the more bleeding example since it depends on Apple drivers.

There are also popular desktop apps for all purposes, not only from Apple but from Adobe, Microsoft, Autodesk, and others. And no need for antivirus nonsense because you are on Unix.


Anyway, if you are on a budget, or if you prefer Windows, Linux, or a muffin toaster running emacs, go ahead. There isn't a best OS for everything and everyone.

Jano
  • 267
1

I've been developing on Macs since 1984, *nix since 1989, and Windows since 1990. Right now, as a consultant, I work on three paid projects, two on the Mac that take about half my time, and one on Linux that takes the other half.

Maybe something you can do on Mac that cannot be done in Windows/Linux with the same level of ease?

I'm not going to address Windows since I don't code for it much these days, but regarding Linux, uh, yeah. Almost everything is easier on the Mac. :-)

Let's take one small area: text editors. I'm an old GUI guy, don't do emacs at all, and know just enough vi to cope with small editing chores.

On Ubuntu, the major options are gedit, kate, and Eclipse. Kate is flaky (I've lost lots of data), Eclipse is very heavyweight, so I mostly stick with gedit. But it's like a programmer's version of MS Notepad: it just doesn't do much. And anything that's not built into the editor that you want to add, like ctags support, requires a lot of screwing around to install and configure and mess with on an ongoing basis.

On the Mac... holy cow! There are innumerable really great options, and they have all kinds of fantastic features. Xcode is powerful, and TextWrangler rocks as a free app that combines all the best features of kate and meld. And in the last ten years, neither has crashed in a way that lost my edits, which I can't say of either kate or gedit.

Actually, the text editors on Linux are so full of general suckitude that when I'm doing Linux development where the underlying libraries are also available on the Mac, I often write the code first on Mac OS X in Xcode, and then when it's working, move it to Linux and write a makefile for it.

I could go on and on. I tried dia for creating diagrams, and it's appalling. But OmniGraffle on the Mac is superb for creating diagrams.

I am a huge fan of open source, contribute to several projects, and have submitted a talk proposal for this summer's Ottawa Linux Symposium. But I also like maintaining my reputation as somebody who writes great code fast. So I want to use the most efficient development tools possible, and those often happen to be on the Mac.


To add a little bit... as a consultant, I get paid for being productive. Screwing around with flaky software comes out of my free time, which I'd rather use for other things, like hanging with my wife, doing martial arts, and learning Italian. My experience, working in parallel on the two platforms since 2006, has been that I spend less time screwing with things on the Mac than on Linux.

Bob Murphy
  • 16,098
0

If you're writing iPhone (or Mac) apps, you need a Mac, period.

If you're doing web development, in my experience, Macs are far superior to Windows machines, if only because most of the tools you need are already there. Yes, Linux can claim the same thing. But can you really compare Linux and Mac in terms of usability? Really?

If you're writing Windows apps, you need a Windows machine, that's all there is too it. Of course, between VMWare, Parallels, and Boot Camp, you can just run Windows on the Mac also.

In summary: mostly built-in Unix and web dev tools, great usability, Windows compatibility if you really need it. The best of all worlds. Plus, it makes you look way cooler down at Starbucks than some Dell thing would. :)

zpasternack
  • 184
  • 3
0

It's a beautiful, trouble-free working environment.

I use a Mac as my personal computer, so I know my way around it.

The hardware is fantastic.

I can (and do) run Windows in a VM if I need to, which is nicer than running Windows natively (can make copies of whole machine, etc.).

So what if they're a little more expensive?

fzwo
  • 631
0

Besides loving Mac OS X as an OS compared with either Windows or Linux, I use it because it runs everything. I boot into OS X, but can run Windows 7 (for Visual Studio development as well as desktop application and web application testing) and Ubuntu (for desktop application and web application testing) within Virtual Box. If I used anything else, I'd at least have to have a side Mac in order to test across platforms. Any other benefit is available with Linux or Windows or comes down to personal preference.

Chuck
  • 115
-1

I see lots of MacBooks at developer conferences too. You know what the caveat is? You need to look at the operating system they are running. Almost every one of them that I see is running Windows 7 on those precious MacBooks. The reason - either to overpay for their hardware because it's cool, or to be able to run OSX those few times when Objective-C is needed and switching to windows for most of their other tasks

canadiancreed
  • 871
  • 1
  • 9
  • 22
-2

my workplace gave option of laptop: windows or mac. I chose mac but only because I mostly do linux dev and I prefer the unix-y environment (nice unix terminal and all). But I would pick a linux laptop if that was an option.

Kevin
  • 1,341
-2

Because of (in descending order):

  • iPhone/iPad development
  • Textmate
  • Bash
  • / not \ (comparing with Windows)
  • MacBook Air
  • Magic Mouse
  • Mac AppStore
  • Xcode
  • Objective-C
ohho
  • 1,282
-2

I'll be honest: I use a Macbook because I was learning Ruby on Rails and all the "cool kids" use OSX for Rails. That said, I enjoy the fact it's a mesh of a clean and intuitive UI with all the power of a Unix-based system (i.e. powerful command line tools). Outside of work (.NET dev) I almost exclusively use the MacBook unless I need to use an app that is Windows only.

Wayne Molina
  • 15,712
-4

I am a private consultant who does applications for PC/MAC, rarely Linux. I also do some web programming with Wicket(java) and PHP. My Primary system is a Mac.

Why?

  1. I can quickly debug (Between Mac/Windows) (Mostly UI) Mac Apps and PC Apps (using Parallels), can't debug Mac Apps on Windows or Linux even with VMWARE.
  2. The *nix environment (Between .nix/Windows) is more like the servers so there is less tweaking when go to the staging.
  3. Corporate support (Between linux/mac) by software vendors, Adobe CS Suite, Office: I get some docs that only open correctly in MS, or Web Templates made in Dreamweaver.
  4. Hardware support(Between Linux/Mac) - I love linux, but I am more likely to get support for new hardware then trying to look up compatible printers and shopping from that.
  5. I use VI/TextMate/Netbeans, depends if its a quick change or major project so I don't think program choice is the reason I go Mac.

By saying that real programmers don't use Mac is short sighted. If I didn't write for Mac, would I use Mac? Maybe... Or maybe I'd use Linux. Like I said before, I need to work with Dreamweaver Templates from designers, and tweak PSD files and need new hardware support. I don't want to be using an unstable WINE install of CS5 or work in VMWARE all day long to use Linux. I also need to stay with an OS that closely matches the live environment (file paths, executables, services).

Windows Linux and Mac all have great points. For now, I am on a Mac.

Adam Lear
  • 32,069
-5

For people coming from linux and the college it looks just like Linux with a sexy UI.

Given enough years they start to understand the differences, and the drawbacks, and the complete arbitrariety of the many roadblocks the vendor is imposing on them and grow out of that. So, if they're enthusiastic, they're probably just a tad bit too young.

...and then there are those gamedev that just buy a Mac (and detract the cost off taxes) to run Windows on it and boot into MacOS only when they have to iPhone things up. But that's a small segment.

So the real question should be: "why young programmers straight out of college know no better than recommending OSX?"

...maybe because they got locked in with ObjC+Cocoa.

ZJR
  • 6,361