Your Dev Box Should Be Virtual
I'll jump to this straight away for the curious: no matter what OS you use, you should be running your dev box in a VM. Portability, snapshotting the backups, cloning - VMs offer a ton of flexibility that alleviates the thrashing of our fragile Windows OS.
And by "fragile" I simply mean the propensity for Windows to accumulate "bit rot" - the increasing slow-down of the OS over time due to ... whatever.
The best host for VMs? In my experience you can't match VMWare's Fusion 4 or Parallels running on a Mac. I've used various VM tools over the years - even Hyper-V (this blog is running in Hyper-V up at MaximumASP) and I've never used a tool as simple and versatile as VMWare Fusion. I've never had a complaint - and that's saying something!
Repaving machines is no fun - I used to average a repave every 6-9 months. Running in a VM simply means you reload a snapshot and off you go. If you think "dude that's incredibly slow" - well it used to be, but not any more. Thus the inspiration for this post...
To me, the ultimate reason to own a Mac is that it gives me a solid bit of hardware with the most flexibility in terms of development. I can create apps in a "native" way using:*.NET for Microsoft stuff (in my VM)
*.NET for Microsoft stuff using Mono/MonoDevelop
*Cocoa for iOS/Mac stuff (which I'm just starting out on)
*Ruby/Python/Node in a Unix environmentYou might not be into 3 of those choices above - but will that always be the case? Are you curious what else there is out there for you to do besides .NET stuff? Your career and future employment will most-likely pivot on your ability to learn and apply various toolsets... why limit yourself to just one?
Moreover - learning something "new" can add tremendously to your current skills. Many .NET devs have said they're better programmers since they decided to diddle with Ruby and Python, and let's face it: running Rails on Windows is a bit of a pain.
Rails, Django, Node - yes they can be made to run on Windows but they were built with Unix in mind. As the Windows 8 guys like to say: "why compromise?"
You might not like Apple and you might hate OSX - but you can't argue that Apple's hardware is top notch. Popular Mechanics flat out stated that
Macs run Windows better than PCs. This is an old article - but I've found that still to be true to this day.
The reason is quite simple - Apple controls every element of the hardware and optimizes the drivers for that hardware - even for Bootcamp (their Windows host). It's amazing how fast it is and more than that - the hardware
lasts a damn long time.
Now I know there will be many who weigh in here and say "my Mac exploded..." and yes, we're talking about fairly complex electronics - anything can go wrong. My experience has been pretty solid over the years - I'm on my 3rd MacBook Pro in the last 7 years. The first lasted me perfectly for 4 years, and my wife for the the following 2.5. We finally gave it to my daughter as my wife wanted to upgrade her machine.
Each of these machines has been solid for me - and I couldn't be happier. In fact - many tech writers consider the 13" Mac Air to be "the perfect computer" for its size, speed and weight. I know some (like my friend Dave Ward) don't like OSX and miss using Windows. That can be a problem - to be sure.
But I Have My Windows Experience Dialed In!
Me too. But it's dialed into a VM - where I do most of my work. OSX isn't perfect and I'm not going to suggest it's the best thing EVAR. However I do most of my work in the terminal when I'm on my Mac (or in TextMate/Vim) - so the OS doesn't bother me.
I've also installed Alfred - a nice launch/search tool that keeps me out of the God-forsaken Finder (the Windows Explorer counterpart). Between that and Spotlight - I rarely use the Finder.
One thing that is pretty refreshing is the Mac App Store. The apps that you can buy there are incredibly cheap, compared to their traditional PC counterparts.
For instance - if you need a simple graphics app, you can choose from Acorn (my favorite), Pixelmator, Artboard and so on - usually for about $40 or so. In fact VMWare just reduced the price of Fusion (the Mac client)
to $49.99. Highly affordable for a solution that does so much for you.
I bought a really nice Time and Billing app for $40 - which beats the pants off of many other billing apps that I've used on Windows (let alone the Harvest hosted service). Scrivener is the tool I use to write scripts for the video stuff I do for Tekpub and has become indispensable.
Speaking of videos - Camtasia is pretty much the only choice when it comes to recording your screen with Windows.
It costs $300, which, to me, is a complete rip-off. I've used Camtasia extensively and I'll never use it again. Buggy, it crashes - in short it's a complete mess. This may likely be because TechSmith doesn't have much in the way of competition in the screencasting space - but it was bad enough that it drove me off Windows completely.
No, that's not hyperbole - it's true. The tool I use now is
ScreenFlow - which is $99, and, I might add, blows Camtasia out of the water in terms of simplicity and ease of use.
iShowU which I use extensively. I like the classic version - which is a whopping $42.00. Of course - this is what I do for a living so the choice to use the Mac as my recording/editing tool was simple given the price and quality of these apps.
That said, once I changed over I was incredibly happy with all the other things I could do natively. Such as play with Sinatra and Postgres...
One thing I don't like is installing software on a Unix box. I know it's not all that hard, but I find it to be a bit... archaic to CURL/config/make when really there should "be an app for that". And indeed there is.
Homebrew is a very popular, easy to use Package Manager for the Mac. Just like Apt for Linux, gems for Ruby, and even NuGet for .NET - Homebrew will download, configure and install various tools that you'll want on your machine.
Things like Postgres, MySQL, FFMPEG - open source Unix-world tools are right at your finger tips with "brew install".
In the same vein - RVM and rbenv are great Ruby gem managers. They don't run on Windows (yet they do have counterparts) but have made life so much easier for me when working with Ruby.
Most .NET developers haven't used Mono for building .NET apps, and that's too bad. Miguel and team have built a very capable framework and IDE to boot that allows you to run your .NET code on Windows or Linux, using the framework and language (C#) you know and love.
This isn't unique to Macs - but it's something that you can easily run on a Mac (MonoDevelop). You can use TextMate, Vim, Emacs, MonoDevelop, Eclipse, RubyMine - there are a lot of choices when writing code on a Mac.
My personal favorite for non .NET stuff is Vim. TextMate is also really nice (I'm writing this post with it) - the point is that I have the option, which is what I think is really important.
I'm clearly a fan of the Mac - and I always have been. The machines have served me well over the years and I've been a whole lot more efficient since changing over. Of course there are issues (such as getting external displays working properly at conferences with VGA ports) - but overall I've found the frustration level to be a lot less then working with Windows.
They're both decent operating systems. OSX is pretty, Windows 7 is too - it just so happens I can do a lot more with an OSX box than I can with Windows. Fanboy or not - this much is true: if you're a dev - even a strict .NET dev - a Mac is a great choice for a dev box.