tags:

views:

165

answers:

4

I want to get some input on some of the advantages of why developers should and need to use Linux as their primary development desktop on a daily basic as opposed to using Windows. This is particulary helpful when your Dev, QA, and Production environments are Linux.

The current analogy that I keep coming back to is. If I build my demo car as a Ford Escort, but my project car is a Ford Mustang, it doesn't make sense at all.

I'm currently at an IT department that allows dual boot with Windows and Linux, but some run Linux while the vast majority use Windows.

Here's several advantages that I've came up with since using Linux as a primary desktop.

  • Same Exact operating system as Dev, QA, and Production
  • Same Scripts (.sh) instead of maintaining (.bat and *.sh). Somewhat mitigated by using cygwin, but still a bit different.
  • Team learns simple commands such as: cd, ls, cat, top
  • Team learns Advanced commands like: pkill, pgrep, chmod, su, sudo, ssh, scp
  • Full access to installs typically for Linux, such as RPM, DEB installs just like the target environments.

The list could go on and on, but I want to get some feedback of anything that I may have missed, or even any disadvantages (of course there are some). To me it makes sense to migrate an entire team over to using Linux, and using Virtual Box, running Windows XP VM's to test functional items that 95% of most of the world uses.

This is similar but a little different thread going on here as well. link text

+1  A: 

You won't have to use Visual Studio.

Since that doesn't seem to be an issue for you, you might provide more details---what languages are you developing in? If it's Java, then you'll be spending most of your time in Eclipse, Netbeans, etc., so it really won't make much difference. What is your budget for the changeover, or what savings do you hope to get?

From your reasons it seems that you're pretty commited to UNIX already.

Why not give the developers a choice?

Glenn
+1  A: 

git runs faster.

...

Okay, not that much of an advantage...

Ignacio Vazquez-Abrams
+1  A: 

Hi Nick, I just switched to using Ubuntu from Windows XP, here's what I found:

Pro's of Linux

  • Linux is less likely to be affected by viruses. I lost some time to viruses when I used XP.
  • As you said, same environment as Dev/QA/Prod which is nice. It's no longer a change of mindset when I connect to one of those machines
  • Linux is more stable. I usually rebooted XP every week or two.
  • You get to use the unix tools (find, pkill, grep, etc.). Cygwin is a workaround but seems quite a bit slower than running unix natively.
  • Performance seems quite a bit better on Linux. This is probably the biggest win for me, I have a memory-intensive Dev environment.

Cons of Linux

  • Open Office is a bit of a shock to the system compared to Word/Excel (which I have been using for many years).
  • I miss Notepad++
  • I need to run VirtualBox to host my local Sql Server Dev database
  • I need to run VirtualBox when running internet explorer
  • More of a pain to copy/paste text between Sql Server Management studio and IE if needed because they run in VirtualBox
  • Remote Desktop is more of a pain. Microsoft's remote desktop allowed me to not have to log out from work before working at home and vice versa
  • I have one app that only runs with the Wine emulator and won't work at all for me when remote desktop-ing on linux

I agree with the poster who said it's good to give developers a choice - they will appreciate that instead of having one or the other OS rammed down their throats. An added benefit is that you'll then be able to differentiate the good devs from the bad :) Just kidding.

unintentionally left blank
Notepad++ --> Geany, RD --> vino
Ignacio Vazquez-Abrams
+2  A: 

I have to say getting forced into SSH access to a linux development box for PHP/MySQL development has been one of my greatest and fastest growth experiences as a developer (who formerly worked only in windows XP as a dev environment) as well as bridging some of the knowledge gap between development and sysadmin tasks which is great for developers to understand more about, especially if you ever end up in a one-man army kind of situation.

I was all about windows/eclipse and point and click, and now I am all about VIM and keyboard shortcuts. The color coding/auto tab complete stuff is pretty good these days.

Where I work we use Rackspace Cloud servers for production and development. I imaged the production server (2G ram/CentOS 5.2 stack) for a dev server (so the environment IS EXACTLY THE SAME not close but EXACT) and run it on the smallest instance (256M ram) which is only about $12 month for my dev box. My buddy had a mac he did local dev on for the same codebase and he experienced subtle bugs in the code due to the mac environment, that I do not experience on my cloud dev box (or production).

So what I am getting at is with this type of shift (to the cloud for linux dev with no GUI) portability and quick recovery from hardware failure, and productivity (keyboard shortcuts rule over point/click/drag select) are some other major advantages. Obvs you can learn keyboard shortcuts in Windows too, but when forced to work in only a terminal window, you learn a lot more of them out of necessity. I run Windows 7 on a laptop (essentially as a dumb terminal to my cloud devbox), but I SSH into my devbox with putty and work on code with VIM and manage it with git. If my laptop ever fails or gets stolen, all I really need is ANY computer that has an SSH client (and internet connection) and I can be productive on a temporary loaned computer within 30 minutes until my preferred hardware is fixed/replaced. (all my passwords on the laptop are in a keepass encrypted db which is backed up on dropbox.com as well as external HD, occasional gmail to self). And of course configure putty with nice fonts/font size and full-screen window size.

In contrast getting a windows box from clean install to dev environment tweaked exactly how you want might take a couple full-time days plus a couple hours here and there for a month, and still not replicate the production environment to your needs.

Ok, end biased rant - I guess my point is I didn't know what I was missing as a windows guy, and simple non GUI linux tools for web development have proven to be superior to me for how we work. But also note my laptop is Windows 7, so when work is done or a need to do some IE testing, I'm on a "normal" OS. However, I doubt a lot of people would be willing to make such a change if there is no perceptible gain or immediate need.

jigglee
TL;DR version: "I'm a masochist". Or, "I learned to code with one hand tied behind my back".
cHao
touché. trying to say you can learn a lot one handed and some simple linux tools have advantages Nick N was asking about. TL - agree, sorry, new here.
jigglee