Developer Portability

Be Portable As you may or may not know (see: here ) I recently switched jobs. I went from a cutting edge marketing firm to the world leader in automotive/aerospace/structural testing systems. Both places are top notch in their respective areas but as you can probably imagine they both operate very differently and utilize very different technologies. At my previous job we used nothing but Macs and other Apple products. At the new place we are strictly a Windows shop (except for our servers which run a LAMP stack) and as a result I have had to be quite agile and adapt to a using new tools, technologies and of course Windows.

I was a huge fan of Windows 95 since it was in early beta back in 1993-94. I had a friend who worked w/ Microsoft so I had a legit beta copy from Day 1. It was the first time I had used Windows because in the Windows 3.1 days I refused to use it and instead used a combination of DOS and Slackware. Even at the age of 13 I was incredibly stubborn about which operating system I used. In 2005 I switched completely to Apple-based solutions and fell completely in love with OSX. Since 2005 up until a couple of weeks ago the only time I used Windows was through a VM (to access Windows test/dev servers or do cross-browser testing) so it has definitely been a big change. Much to my surprise I am not minding it _too_ much and figured it might be worthwhile to document some of biggest differences between the two platforms and why they matter to me.

The number one thing that feels like it is 'missing' from Windows is a linux terminal. I know that sounds stupid because Windows != Linux but it's easy to forget sometimes that OSX is built on top of that and having access to that bash shell is truly something magical. It will be interesting to see how long it takes me to stop typing 'ls' when I am in a Windows command prompt. Having things like 'ssh', 'top', 'curl', etc readily available is extremely nice and while I know it is possible to install Windows-equivalents it just isn't the same.

As a developer who works primarily with PHP one of the biggest things I miss in a Windows environment is readline support. Readline support is required for the interactive PHP terminal ('php -a') and without it the interactive terminal becomes essentially worthless. Yes there is a way to get it to function but it's hardly interactive and honestly more trouble than it is worth.

Before I even say this, I am aware that Windows 7 includes the "Snipping Tool" but I hate it! Being able to hold CMD+Shift+4 and selecting what I want for a screen grab is just something I have become accustomed to and opening up an application to do it just seems inefficient. It sounds like a small thing but as a developer I do take a lot of screen grabs for demos, tickets, etc so being able to do this with a hot key is kind of a big deal.

This isn't as big of a point but something I love about OSX is that I can drop my cursor over a window, use the mouse wheel and it scrolls the window without me having to click on it. This sounds like a small thing but over the course of the day it happens to me quite a few times.

On the plus side I do have to say that Windows 7 is a solid operating system, definitely Microsoft's best since XP and I think it fits the corporate world quite well. I now only have one computer at home which is my 27" iMac and I still enjoying coming home to it at the end of the day. Perhaps someday I will completely switch over to Windows for both work and home but that time certainly isn't now.

Back to the point of this post, being agile & portable. I think good developers are ones who aren't married to their tools/platforms but rather ones who enjoy and excel at the actual work. At the end of the day writing code is writing code and whether I am in a Vim session on a Unix machine, working in Coda on a Mac or using NetBeans in Windows I am ultimately trying to accomplish the same thing, write the best code possible in the most efficient manner.

Thoughts? Arguments? Words of Wisdom? Leave them in the comments!