<< Very very cool video about organization, work and motivation | Home | Loins of Punjab >>

Why I prefer to develop in Linux instead of Windows

I had been asked to put together a list of reasons why I would prefer to use a Linux desktop rather than Windows at work ( we currently develop on Windows and deploy to RHEL). I put together a couple of reasons; you may find them handy to convince folks too :)

  1. extensive developer toolchain built into the OS. Merge, diff, grep, svn, git etc etc all built into the OS. On windows I have to download and install freeware/open source programs to fill in that functionality gap.
  2. more powerful desktop user interface. I can setup keystroke shortcuts to commonly used applications, virtual desktop support is built in, scp/ssh support is built in. Again, I can install freeware/open source programs to fill in that functionality gap but it's all built into linux.
  3. handles load better. I have found my windows box to become somewhat unmanageble when I fire up a couple of programs which are memory hogs. In fact, I have had to cold boot windows because the UI becomes unresponsive. As a result of this I actually ended up corrupting my hard drive a while back and IT spent 2 days fixing it ( thankfully it was fixed!). I have rarely seen this on Linux. Even when the UI is non-responsive you can usually just kill the Xwindows daemon and restart it or access the box remotely via ssh and ask it to do an orderly reboot.
  4. interoperability with Outlook. I have IMAP working with my home email client on linux and activesync working with my cell-phone to sync with emails and calendar info. So there is no reason why I shouldn't be able to use linux with exchange in place of outlook.
  5. our production environment runs linux. This is an important albiet subtle point. Although Java runs in a cross platform manner, there are still OS specific traps that programmers can fall into ( for example, using files on the filesystem) which don't manifest themselves until we are ready to run the code on the production environment. That is the reason we have the test/integration environments. It would be even better to catch them upstream on the linux dev box.
  6. the current solution at work for running linux consists of a production vmware image for devs to run their stuff on. Something's better than nothing but there is the overhead of going through the OS translation layer since it runs on top of Windows. I would much rather run on linux directly and use Windows within a VM if I need to.