Developer Machine Considerations

Written By John Sonmez

I’m back from vacation.  And I’m actually starting a new job today.  I will be working remotely from home for a company called TrackAbout.

One of the first things I have been doing to get ready to start this new job is setting up my development workstation at home.  There are really quite a few considerations to think about when setting up your home office.

Hardware

I was debating between going all out with the Intel 6 core chip or getting the nicely priced AMD 6 core.  I ended up choosing the AMD chip because the Intel chip was 3 times the cost, and the chipsets on the motherboards for the AMD chip are a little more stable since they have been around longer.

The processor doesn’t really matter that much anymore since processors are so fast nowadays.  What really matters though is the hard disk.  On this case I opted for a super fast SSD drive.  256GB should be plenty of space, with an additional hard drive just for back ups.  The speed improvement when using a really good SSD drive is amazing.  It is the single best upgrade you can do in a developer machine.

I also went with a large amount of RAM because I know that if you need to run a virtual machine, RAM is going to be a big deal there.  16GB should meet any need just fine.

Finally, I am trying out a quad-monitor setup for the first time.  I have been using dual 24” monitors for a long time now, but I have always thought two more would be even better.  It is really important to be able to quickly see multiple things going on at once without having to switch between applications.

I’m planning on setting up the monitors like so:

  1. IDE
  2. Reference: web pages, API, etc
  3. Communications: twitter, pidgin, email
  4. Secondary IDE for debug, or SQL server

Desktop or laptop

Most developers are getting laptops with docking stations these days and while I see the appeal, I like a good old tower and a cheap laptop instead.

  • With a desktop you can get beefier hardware for less $$$.
  • You can pick the hardware yourself (which is a big deal for me since I do a large amount of research on each component).
  • You can have more monitors natively (just buy a 4 port video card).
  • More upgrade options.

I still have a laptop, but it is a cheap light one.  The advantage here is that I can just remote desktop into my powerful machine and get all the benefits of both worlds.  If I am really ambitious I can even remote in with my iPad or phone.

So, while I can definitely understand the appeal for many to having a laptop that they can just disconnect and carry with them, I still prefer the desktop.

Virtualize?

I almost did it this time.  I keep going back and forth on this one.  I really want to have my development machine be a VM so that I can just load it up and go, but after thinking about it more, I am not sure it is worth the cost.

I kept thinking about why I want to have a virtual machine for my development machine.  Really the answer comes down to me liking to have things in a nice separate little box.  Sure, I can drop my dev virtual machine on an external drive and take it with me, but I can achieve the same by remoting into it instead.

The thing that made me finally decide on no VM is the idea of optimizing for the rule rather than the exception.  The truth of the matter is when I am on my PC, I am going to be spending 90% of my time doing development work, and doing it on that one machine.

When I look at it that way, I can’t see a good reason to take the performance hit of virtualization for the 10% case.  I can achieve most of the “neatness” of virtualization by cloning my disk at a good configuration.

I’ll probably still have some sandbox VMs for testing out “crazy stuff”, but I think I am going to go native so I can really utilize the max out of my new hardware.

I’ll just have to treat my Windows install like I treat my source code.  “Leave it better than when I started.”

Anything I’m missing here or not seeing?