Most of the time macs "just work" however once you start digging deep and needing custom stuff (beyond `rails new HelloWorld`) things start to come apart.
You have to rely on brew/ports or hope someone provided instructions for compiling on mac. Normally brew or ports do work and their authors do keep things up to date, but not always.
We've just been down too many rabbit holes when we needed something custom.
On top of that our production machines don't run OSX either so we would have to keep 2 sets of instructions for making sure all libraries are installed.
Sure there is vagrant, but then you lose (or fight extremely hard to keep) your ability to debug in the IDE of your choice since it all has to happen remotely
Life has been so much better running Ubuntu. Here everything "Just works" from a programming point of view.
Games I still dual boot into Win7 however (tho I did that with OSX anyways since all games arent supported or you take a performance hit)
Stuff that I can't stand on OS X: no great firewalling. Sure, I can have an "easy" firewall, but not a great one.
By great I mean that on Linux I can do stuff like: "Block every single packet that is not part of an established and only allow user whose user ID is xxx to contact port 80/443 and only allow user whose user ID is yyyy to connect to port 22".
But to me the biggest showstopper under OS X is that you can't have simultaneously several graphical sessions. A browser, for example, is something that begs to be run in its own user account (for example a throwaway user account or one severly crippled using quota + specific firewall rules only allowing that user to browse the web and that's it, no login shells, etc.). Then you can either have that user run it's own graphical session (even at a different screen size if you want) or have that user run its browser in the graphical session of another user (not the same safest, but still way more secure than simply browsing with your main user account -- which has to be the one most insecure thing most devs are doing).
Linux makes all that super easy and as a developer --and for anyone that is a bit concerned about security-- it is great.
You can't do that on OS X. There are limits once you want to "get fancy".
And when the exodus shall start, I'm sure quite a lot will realize that Linux is actually amazing and that they did actually miss a lot.
And I'm no sysadmin: just a dev. But of course it helps when your server are also running Linux (or another Unx) and it also helps when you have to talk to the sysadmin guy (say because your app is ruining its servers' perfs) and that he sees that you know a tiny bit of Unx work ; )
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.h...