views:

2985

answers:

35

I am starting to specify what my optimal personal development environment will look like and I need some ideas.

Specifically, I would like to hear your preference of:

  • Hardware: specs, number of machines, VMs, uses (servers/desktops), monitors
  • Software: IDEs, tools
  • Networking: setup, architecture
  • Misc: furniture, accessories, etc.

What helps you acheive maximum productivity? Seperate server for source control, server/service hosting? Multiple monitors? Seperate machines for linux/win/osx development?

Doesn't matter whether it's at home or at the office, but I need to get some ideas.

So how does your environment look like?


Bounty update: I got some nice links here, and some ideas. But I'm still looking for more resources on how to setup a nice work environment at home. All those bombastic multi-screen, multiple server racks, need-your-own-IT-department setups are nice to look at, and really impressive, but are totally an overkill and simply unnecessary for most, if not all, uses.

+2  A: 
  • Hardware: Bad. As for VMs: I have many of them, primarily using VirtualBox.
  • IDE: monodevelop (for c++), scite, make, cmake, g++, subversion, kdesvn, amarok/herrie.
  • Networking: Don't need for my stuff.
  • Misc: Silent keyboard to not annoy any of my neighbours :D
phresnel
"silent keyboard" - as in, very low clicking sound ? I've been searching for something like that. Would it be too much to ask you to name the model ?
ldigas
Good old (and even cheap, as in price) Cherry eVolution STREAM XT(see http://www.cherry.de and of course amazon).I personally don't like fancy extra buttons too much, and I use it at work (white coloured) as well es at home (black).
phresnel
May your god(s) bless your soul for using a silent keyboard! I wish my neighbors were as considerate as you
Robert Gould
Silent keyboard to not annoy your neighbours? How hard/loud are you typing?!
KarstenF
Old building, bad sound isolation, and me getting off, with a bedroom below my bureau :S
phresnel
+10  A: 

I use a lot of blank sheets, erasable pen, 4 colors stencils... The rest depends on what I want to develop :)

pgras
The only "correct" answer possible IMO!
Chris Huang-Leaver
+2  A: 
  • Hardware: Thinkpad t61, dell 19" lcd monitor, samsung 24" monitor, Logitech G5 mouse
  • VM: vmware running xp (mostly for visio and office)
  • Software: archlinux, awesome3 window manager, vim + ruby/rails plugins, anything else I need for development eg. rubygems, ssh, svn, mysql, etc.
  • Networking: Just a regular internet connection.
  • Misc: journal and whiteboard for doodling and sketching out ideas

Notes: A tiling window manager like Awesome + multiple monitors is probably the most productive thing I use. :) Whiteboard and journals are great for remembering what you want, plan, and need to do.

nan
Laptops are very convenient if you move around a lot, but the performance is usually quite a bit worse than you get from a desktop, so I would recommend having both plus a USB KVM switch. Of course you can buy a bigger, more expensive laptop, but they're less portable.
sjbotha
+1  A: 

In general terms, I think quad-core processor is great for single platform development (i.e. not working on a client-server scenario where I need to have multiple VMs running simultaneously). Spec, as high as you can go. Multiple monitors are a must although I'd only have 2, 1 for my IDE, 1 for my app/VM.

Target platforms are in VMs but obviously if I can only develop for a particular platform then I'd have a VM for dev for that platform, still have a separate test VM though.

I use VS2008 Pro but whatever works for your needs. Source control both locally and on a seperate system.

Get yourself a proper desk, a proper office chair and have a good filing system for all the bits of paper you will accumulate however hard you try. Keep the door to your room closed when you are working and try to keep distractions to a minimum. I'm expert at work avoidance and am actually doing it right now by answering this ;)

Lazarus
+22  A: 
Glennular
That's a lot of screens! I've never quite understood why people need so many.
dogbane
Wonderful resource, he has lots of good ideas. Thanks! :)
Yuval A
Image showing up broken for anybody else besides me?
Scott
Mitch Haile
+1 because a) it's so well documented on the website and b) you said yourself it's over the top and it's fun. I agree! What's wrong with fun? Why do so many people bash a setup because they think there are too many monitors? (See most any SO multi-monitor question...)
Doug L.
unfair. Also, a little ridiculous if you ask me.... Who really needs THAT many monitors.
Paperino
+3  A: 

It all depends on what problems you are working on. Programming is so wide a field there is no one best way. There's only a best way to do what you need to do. Focus on understanding your problem first, then find tools that match.

Jeff
+1  A: 

Hardware I've got one Vista 32 bit box and another Vista 64 bit box which I remote desktop onto. I've got a Microsoft ergonomic keyboard which is (in my opinion) the best keyboard ever!

Monitors I've got a Dell 24inch in landscape mode for my main work and a Dell 22inch in portrait mode for browsing the web and viewing MSDN

Networking Gigabit networking via Netgear equipment. I've got a NAS box that I back up to, just to be safe

Software I use VS2008 for development, VIM for editing text files & configs. Subversion+Tortoise for version control

VM VMWare workstation running Ubuntu, although I rarely use it.

Misc I've got a pot of pencils and a pad of paper nearby!

Sean
+1  A: 
  • Hardware: one Dell Optipex (intel core2 6700, 3gb RAM)
  • Monitors: two 19inch LCDs, you can't code on anything less
  • Software: vs2008, vault, fogbugz
  • Networking: meh, as long as I can hit up the interwebs at a good speed I don't care
  • Misc: Aeron Chair, no overhead lights, natural light only.
Gord
+2  A: 

I've got a very low spec Ubuntu server running SVN, APACHE, MySQL etc. This box only has about 512MB RAM if even. Might be 256 - but for all it does ...

My desktop is Ubuntu 8.10, dual-monitor (a bitch to configure), 1GB RAM, AMD Dual Core 4400 64bit processor.

Eclipse for Java programming. Geany for PHP, HTML, CSS, Javascript etc (I have my only snippets file for shortcuts. It makes programming so much faster.)

I am stuck for design work though. Linux in general is terrible for design work - it excells for programming use though.

So I am considering installing VMWare ESXi so that I can have Ubuntu and Windows running at the same time and be able to switch quickly between designing (Adobe Illustrator) and programming. I'll have to up my RAM though...

about dual monitor configuration - get a cheap nvidia card - ubuntu support for those cards is great!
sweeney
+1  A: 

@home

Hardware:

1X iMac 24"

1X MacbookPro 17"

1X old 64bit AMD Athlon 1GB RAM Running 22" Screen

1X old 64bit AMD Sempron 512GB RAM without monitor

OSes:

OS X Leopard/WinXP dual boot on the macs

Fedora on the desktop

Debian 5 on the headless server (used to be OpenBSD)

IDEs:

Textmate - OSX

Emacs - Linux

Aptana (when I have to)

Netbeans (when I have to)

Eclipse (when I really have to)

Visual Studio 6.0, 2003, 2008 (when I want to)

Network:

Gigabit Ethernet for the wired stuff, WiFi n for wireless (Netgear)

Keyboards and Mice:

Logitech Wave Cordless Desktop

Logitech Cordless Desktop LX 710 Laser

Vasil
+11  A: 

If you are developing software for use by others, you should have a system that specs out at the very bottom of your target platform audience. Regularly run your software on this machine.

If you find it annoying, so will your users.

MarkusQ
Don't forget a limited-privilege account, either. My wife had to fight to get a separate limited user account, so she could make sure what ran for her would run for her users.
David Thornley
A: 

That's way too much work to setup; I use a butterfly.

Ben S
A: 
  • Hardware: Main pc: Win XP with two 19" screens. It's a dual core machine with 3 gb of ram. Number of different OS images avaiable through virtual pc, useful to test the software on for example a turkish windows 2003 version. Databases/webservices on a server pc avaiable through VNC/remote terminal.
  • Software: VS2008 & resharper. Custom bug tracking software. Sourcesafe (avoid at all costs!). Paint.Net to change images. Notepad2 & PSPPad to edit text/xml files. And outlook to take care of mails & planning.
  • Networking: Colleagues pcs & servers avaiable through the intranet.
  • Misc: A good chair! Pen & paper / post-its. Coffee.
Carra
A: 

Mac Mini (!) front end. Okay, I have a Windows machine sitting upstairs that I use about 30% of the time. After upgrading the memory in the Mini, it is surprisingly usable.

Several Linux machines (loaded to the gills) sitting in the garage. I like the fact that my office no longer sounds like the inside of a data center.

Networking is covered with 2 GigE switches connected to a wireless router running DD-WRT.

Storage is split between local and a ReadyNAS (also sitting in the garage). The ReadyNAS also handles source control, backup of my 30,000+ photos etc.

I'm definitely for dual monitors if at all possible. That's probably the biggest productivity boost.

Lastly, TextMate or vi as editors. HTH.

Jauder Ho
+17  A: 

Can you be a bit more specific? This is the best I can do with no details beyond 'personal development setup'

Monitors:

  • If you are working on web or GUI development, a large 30" monitor or two 20" screens would be important, in order to see both the code and result at the same time.
  • If you are just working on vanilla, 1-window Visual Studio, then a single 22" screen could work.
  • If you have a lot of customer contact, a smaller screen which is rotated to view in portrait mode can be invaluable for showing your inbox or customer docs separately, along with a decent desk phone!

Machine specs:

  • For webserver/client work, having a second machine to run the webserver could be advantageous, particularly for stress-testing high-volume workloads.
  • If you're developing number-crunching software (modelling, simulation, analysis) then go for a faster, multi-core Xeon setup.
  • If you are deploying and testing on a server somewhere else, then you could get away with quite a lightweight system.
  • Have a lightweight linux box around (you can ssh to it to change stuff) to run your svn version control, mail server, etc. Use ubuntu.

Networking:

  • Get a router to deal with all your networking/internet/expansion needs.

Software:

  • Really, no-one can tell you this until you tell us what you're developing for and on.
  • If you're doing vanilla MS-stack GUI apps, stick to VS.
  • If you're on linux, go for emacs, eclipse or vi, depending on how much you use the IDE integration, and how much of a control-freak you are.
  • If you have multiple machines, stick to one keyboard and mouse, and use the brilliant Synergy to mouse and copy-paste between them (works across Mac/Linux/Windows architectures).

Misc:

  • Get a decent chair, you'll be sorry otherwise.
  • Get an ergonomic keyboard, and learn to touch-type on it.
  • Get a monitor stand or arm for each monitor, to get the heights right.
  • Get a decent desk, at the right height for your feet to stand flat on the floor and your elbows to be just above the desk surface.
  • Let the woman in your life (or your neater friends) see your setup regularly, because the decay into disorder will do more to harm your productivity than anything else.
  • Get a decent coffee maker
  • Get a whiteboard, if you think visually, and use your digital camera to capture what you map out.
  • Live near a park, so you can go for a short walk and solve things you get stuck on.
Phil H
+1  A: 
  • Hardware: Dell Optiplex GX620 dual core, 4GB, 3 1600x1200 20in Dell UltraSharp monitors, MacBook Pro laptop, iPod Touch (for mobile development, really!)
  • Software: VS2008/VS2005, TestDriven.Net, ASP.NET MVC, SQL Server 2005 Dev Ed., FF/IE7/Safari/Opera/Google Chrome -- can you tell I do web development?
  • Networking: A series of tubes, very large tubes that rarely get clogged; corporate data center with (mostly) VM-based web servers, SQL-server clusters (multiple prod and test), TSM backup, yada, yada
  • Misc: Wiki for dev documentation/planning, cube farm - but big enough for a mini-meeting, wall of whiteboards in cube and mobile whiteboards in "hall", 3-4 nearby conference rooms to choose from, plants, pictures of and by my kids on the walls. Nice Aeron chair, too bright (but indirect) lighting.

My office was supposed to be for a project manager, but during the last reshuffle it was empty and I claimed it. My style of development (agile) put a lot of emphasis on meeting with customers and this office was set up for that with the desk in a U with one arm of the U sticking out into the middle of the office. There's just enough space on the other side for 2 people to sit comfortably. The whiteboards that I use are on the wall behind the visitor's chairs so if I need one during a meeting I drag one of the mobile ones over to my cube opening -- or squeeze in behind them. Not ideal.

The best office I've ever been in was actually two desks back-to-back with wall between me and my co-developer. Plenty of desk space, good communication. We had a huge whiteboard on the wall behind us. The only real problem was that our office functioned as a hallway back to our manager so there was a fair amount of traffic to distract us.

A note on multiple monitors

I currently have 3 monitors. I've done both 1 and 2. Two monitors is tolerable for most applications, but I've found 3 to really improve my productivity. Typically my email/calendar and SSMS is open in the left monitor. The center monitor has (full screen) Visual Studio. The right monitor typically has both IE and Firefox open, with multiple instances/tabs. I typically develop in Firefox, but browse in IE since FF has better tools but IE is our primary target platform. At one point I had to go back to 2 monitors while my video card was dead. It was tolerable, but I was really glad when the replacement video card came back. I would never go back to one monitor on my dev system.

I also recently upgraded to 1600x1200 from 1280x1024. The extra pixels allows me to keep my solution explorer/property windows open on the right without losing editing space and to expand the output/error windows on the bottom to make them reasonably useful. I prefer them anchored, though, so it may not be as useful to someone who has them floating on a different screen.

tvanfosson
+1  A: 

Dell Ubuntu laptop, screen about as large as they make, with an optical mouse (I hate trackpads). Eclipse, Steel Bank Common Lisp, other languages as desired (downloadable through the wireless and DSL). Google up in a browser window. Mercurial connecting to the desktop holding the repositories. Mountain Dew in the refrigerator, adequate dark chocolate, and the porch when the weather's nice (and a pad of paper to take out there to serve as a mousepad).

David Thornley
+1  A: 

Stop worrying about taxonomies and just be productive, you're wasting time thinking about these things. focus on the hard work - nothing you can do will make it less hard or more fun. just be productive.

http://www.43folders.com/2009/01/27/creativity-patterns

BPAndrew
I think you're getting downvoted for be a realist.
Jon Tackabury
+1  A: 

Your hardware is frankly immaterial - I do all my work on a 9-year old Sony laptop with 256Mb RAM , a 900MHz processor and a 1024x768 screen running Win2K. With that setup I can typically support the folowing:

  • 2 or more copies of the Code::Blocks IDE, usimg g++
  • Apache server running using PHP all the time
  • SQL server running all the time
  • several shell windows open all the time
  • SVN, running in local mode
  • firefox, latest beta

I can also fire up Open Office and any number of other tools without problems. What I can't do is use the the latest versions of MS VS or Eclipse, but frankly, I don't miss them.

In software development the important thing is not the hardware or software you run, but the software you write.

anon
+1  A: 
  • Hardware: A quad core or higher that supports full virtualization, at least 4gb of ram, if possible a Raptor or SSD, VirtualBox or VMWare for Virtualization
  • Main OS: If you are a mac developer OSX, if you are a Windows developer Windows 7, if you are a Linux developer Ubuntu or Fedora. Use virtualization for your other needs.
  • A 12" Samsung NC20 Netbook
  • Monitors: 2 monitors of equal size, if possible 24" or higher, EIZO recommended
  • Music production: Buy some Adam A7 Monitors. Best bang for the buck. Oh yeah I know you didnt want to know that. Also buy a midi keyboard - What I'm getting at: If you are frustrated with coding, having something where you can just work creatively for a couple of hours will help you immensely. Be it making music, or writing on your novel, or drawing. Find something like that.
  • Buy a Wacom Tablet. It will always be useful.
  • Software/Tools: GIT or Mercurial for Source control; IDE depends, obviously.
  • Furniture: Don't buy at IKEA, buy a semi-white retro table with a white laze/scumbling finish (hope these are the correct english words) from an antique store - it will make you feel at peace with the universe
  • If possible have a window that presents you with a view of the French countryside or the Italian toscana. If not, move to somewhere equally pleasant.
  • A good keyboard. I usually find the most basic logitech keyboards for 20 bucks sufficient.
kitsune
+1  A: 

I'm a full time student with occasional consultancy jobs on the side. Your mileage may vary.

  • Hardware: Single laptop, currently a Macbook. 2GB RAM. Co-located Compaq rack server running Debian for remote backups, repositories, Trac and the odd cron job.
  • Software: Emacs for Haskell, LaTeX and plain text editing, XCode for C and C++, Netbeans for Java. Git for own projects. Most of my clients use Subversion though.
  • Networking: Whatever is available where I'm staying at the time.
  • Misc: Laptop carry bag with space for pencils and paper. MP3 player to be able to filter out external noise. Coffee and water.
Hank
+1  A: 
VonC
A: 

Obviously it depends on what you are working on. I have a rather small laptop with 4GB but I work on web application. So I need a lot of RAM because I have eclipse, apache, mysql running on my laptop.

Otherwise I'm on Ubuntu with a small memory footprint (no fancy effects ;-)

But because I work from home as well from work with the same laptop on the same stuff. Remote svn, remote backup, remote server are in sync (more or less) with my laptop. Mysql is a pain because the database is pretty big.

I think there is no must have in hardware or software. The best is to find what you like to work with. We are 3 engineers here working on the same thing but each one of us has a totally different setup. (vista, 1 additional screen, totally remote(no local apache, mysql)), MacBook pro with local and remote (plus VMware to test on windows), Ubuntu with local and remote (VMware to test on windows).

stunti
A: 

Software (Windows):

Hardware:

  • Two monitors; one vertical, other horizontal (I wish I had more)
  • A keyboard with "classic" Ins/Del/Home/End/F key layout
  • Ear-cupping headphones
Ates Goral
I'm sorry, but nothing, nothing could make me use Total Commander. I could never go back to such an awful Windows 3.1-like UI. *shudders violently* Good for you if you can stomach it, but I'll never understand why.
unforgiven3
@unforgiven3: I agree that the TC UI has a prehistoric feel to it. The real benefits of using TC kick in when you start using all the keyboard shortcuts -- at which point the UI stops mattering a lot.
Ates Goral
@Ates Goral, that's a good point. I didn't realize it had a lot of keyboard shortcuts. I'm a big fan of vim, so maybe I should let it slide :-)
unforgiven3
A: 
  • Hardware: I've a desktop (quad core, 8gb RAM, Raid array, Vista64) and a laptop (2ghz core2, 3gb, 120Gb, Vista64)
  • Software: VM's (with XP, Vista32, Win2008, Win2003, in VMware of course...), and VS2008 or VS2005 depending on requirements
  • Networking: Broadband at home, and Powerline network. Wifi also at home if necessary
  • Misc: Computer desk, adequate chair

It suits me well.

Also, I'd highly recommend MS Live Mesh to synchronise information between the machines.

Nick Haslam
+1  A: 

These days, every day I use:

HP Pavilion | 22" 1680x1050 | 2GHz AMD Dual Core 3800+ | 3GB RAM | XP MCE
HP Laptop | 17" 1400x900 | 2GHz Intel Core 2 Duo | 4GB RAM | Vista Ultimate
MSI Wind U120 | 10" 1024x600 | 1.6GHz Intel Atom | 1GB RAM | XP Home

Eclipse 3.4 (Drupal/PHP/Javascript) w CVS 
Flex Builder 3.1 (FLEX) w Subversive SVN
Torsion IDE (TorqueScript) w Bazaar
Notepad++ (jQuery/Javascript) w Bazaar
XAMPPlite
PostgreSQL 8.1
Corel Paint Shop Pro X2
WebDrive FTP client (mount FTP as drive letter)
FileZilla FTP
Audacity (audio encoding)
SUPER © (video encoding)
CamStudio (video screen capture)
RegEx Buddy (crutch)
RePlay AV (capture Sirius)
Unreal Tournament 2004 (unwinding)

VirtualBox VM (XP for IE6, FF2, Safari, Chrome, Opera; Ubuntu 8.10)

20mpbs FIOS (home office) & WIFI everything
3mbps Cable (customer on-site) 7 WIFI

320 GB Portable 2.5" HD

Graph Paper

I've never used dual monitors, never felt I needed that, and I do a LOT of multi-window debugging and graphics work.

Scott Evernden
Even still, you should try it. You might not need it, but on the other hand, you don't NEED indoor plumbing.
samoz
A: 
Specifically, I would like to hear your preference of: Hardware: specs, number of machines, VMs, uses (servers/desktops), monitors Software: IDEs, tools Networking: setup, architecture Misc: furniture, accessories, etc. What helps you acheive maximum productivity? Seperate server for source control, server/service hosting? Multiple monitors? Seperate machines for linux/win/osx development? Doesn't matter whether it's at home or at the office, but I need to get some ideas. So how does your environment look like?

Hardware: 4gb Dell running Windows XP, SP2. 3 17in monitors (via UltraMon). Running MS Virtual 2007 with ghosted images for testing and installation or for playing with new OS, patches before breaking my real machine.
Software: Microsoft Visual Studio Team System 2008 Database GDR, Team Foundation Server Power tools, ANTS Profiler Add-in (RedGate), GhostDoc for Visual Studio 2008
Networking: Heart of the network is a Unisys ES7000 server which we have configured into SEVERAL virtual servers which handles out web, SQL, mail and file storage needs.
Misc: Good chair is a must, new Comcast business Internet connectivity with 20mb/10mb throughput is good. Big 60inch plasma within sight for the NCAA tourney is a plus :)

SomeMiscGuy
A: 
tj111
A: 

I had a home office for some time, I wound up migrating to having a quad core server, with several VMs, and a raid1 setup for the VMs, and another for backing up to. My desktop was a nice dual core, with a 22" (wide) and a 19" (4:3) monitor.

Today, I may go with a single 27" monitor, or dual 22" ... I would also consider having one more powerful system, with VMs for development, and server duties, if consolidation was important. I like having a separate server myself.

Virtualization has made home development environments even more appealing than ever. It's not as safe running everything in VMs on a single server, but it is far more cost effective. I had the following VMs. 1 for email, I kept this separate from the general web server, as this way I didn't have to add each address for the webmail. And all email settings were very consistent. I had another VM which was used for Web Server use (Win2003, now 2008). One more VM for Subversion, and Database chores. Each VM had a scheduled task to backup to a mapped drive which is the backup raid1 on the host server.

If you do web development (HTML Based) than multiple monitors, or a very large one (>=27") is helpful. This is because you can have your development environment on one screen, and several browser windows on the other. It does take some getting used to, and is very helpful. It's worth noting, that if you do evening/wind-down gaming, multiple monitors can make this awkward.

Tracker1
A: 

Hi,

A lot of great responses here, so I thought I'd throw one in too :)

I'm one of these people that has to keep changing things until everything's "exactly so", so my development environment is a work in progress but nevertheless, it's comfy, relaxed, efficient and everything I need.

My 'kit list' is below, but firstly, here are a few environmental considerations I think are vital in order to be the most productive and creative you can be:

  • Get a decent chair; fabric seats are best, if you don't have air-con or like wearing shorts! Make sure it is height adjustable. I prefer mine without arm rests.
  • Make sure your monitor(s!) are at 90 degrees to a window. This will reduce glare in your eyes and on the screen.
  • Buy yourself a wrist rest - at least for your mouse-hand.
  • Make sure there's fresh air!
  • Have some 'fun stuff' in there too. Your brain likes to wonder from time to time and that's healthy. I have a piano in mine, so when I'm mulling over a problem, 2 minutes out for a tinkle on the keys is a great way to clear your mind. It's also useful for giving your eyes a break from the screens.

Base your development on your own personal requirements: i.e. what will your principal activity be? Do you need a lot of screen real estate? Do you really need multiple screens? Or just one big one? Is power consumption a factor you want to take into account?

In my home office, my principal rig (without diving into crazy detail) is:

  • 2 x 24" Widescreen LCD displays, wall-mounted on adjustable brackets
  • I use an Intel Quad Core2 2.4Ghz based PC (32 bit, but needs upgrading to 64)
  • 4 GB RAM
  • Use Vista's Readyboost! It's a must if you use:
    • Visual Studio 2008 (as I do)
  • Microsoft Virtual PC, with the following images:
    • Windows Server 2003 running Sql Server 2005
    • Windows Server 2008 running IIS 7
    • Windows XP SP3
  • I also have a Winodws Home Server (search 'HP Mediasmart') for automated backups

I also run: - Adobe Fireworks - Expression 2

If you manage/need to connect to a lot of remote servers, consider using the Remote Desktop Connection MMC snap-in to organise all your remote connections into one place. If you don't use Terminal Services at the office, consider LogMeIn - which is a cheap, reliable and very popular remote management system.

In terms of services, I use:

  • DynamSoft SourceAnywhere Hosted - cheap online source control and versioning, works very well, reliable and secure.

Network-wise, get a decent DSL or leased-line connection. In the UK, Be Broadband do up to 24mb/s for £18p/m. Awesome. In terms of connectivity in your environment, don't go wireless for your development rig. Get a gigabit ethernet switch, a gigabit ethernet card in your PC and use Cat6 cable. Wifi (for development) often causes headaches.

A quick note on Virtualisation:

For developers who work from home, VM's are an absolutely miracle. In fact, even in the office environment, VM's are great for developers. For instance, if I need a 'clean' Windows 2003 Server with SQL Server pre-installed, I can just fire-up my VM. Since it's configured in non-persistent mode, as soon as I shut it down, it loses it's changes - so it always boots up clean. With the click of a button, you can simply change this (if you need to).

VM's keep my costs down, period. I used to have several physical boxes ticking along at home, but now - what's the point? I don't need uber-performance from them, and they're only used for testing. So VM's are a great way to achieve this.

Providing you stick within your licensing terms, VM's will save you time, and money.

Feel free to respond and let me know if I've not been specific enough - your question was quite open to interpretation so I just jotted down a few thoughts!

Richard
A: 

Misc: I would suggest decent headphones. Features to go for are comfort (for me that means ear cups that go completely around the ears as opposed to putting any pressure at all on the ears), and sound quality (obviously). Other nice-to-haves are built-in microphone (ie: a headset, useful for skyping etc), and noise cancelling (so that you can put them on even without music, just so that you can isolate yourself).

Whether you are in a shared office environment or at home, headphones act as a small signal to other people that you should not be disturbed, so they are worth it for that alone.

KarstenF
A: 

Hard to add to what's here, but the most essential part of my development environment is my Kinesis Contoured ergonomic keyboard. Anything else is just a way to hurt your hands.

You'll get more helpful answers if you tell us your budget.

Norman Ramsey
A: 

Prefer XPSP2 over Windows7 for "Find-in-Files" speed (?!)
My machine has 4gb of RAM, and I can switch between XPSP2 and Windows-7-build-7000 by unplugging the Win7 HDD ( both HDD's are sata-2). I use Find-in-Files all-the-time. With XPSP2, once the source-files get cached, the find-in-files is basically instant, less than a second. For whatever reason, with the build 7000 it sometimes seems a little faster but is ALWAYS way slower, at least about 2 seconds.
HOPEFULLY/possibly it is some idiocy with my personal setup, but on the other hand I remember reading that Windows-7 has been optimized for SSD. It would be terrible from my point of view if the "find-in-files" kind of caching is forever gone. Has anyone else noticed this ?

pngaz
A: 

My beloved Macbook Pro. I know, its nothing elaborate... nothing all that customized. But she's my workhorse. For that, I love her... (in a mental-like way ;) )

(Eclipse, xCode, TextMate, Versions are my primary tools)

Rev316
+1  A: 

Check out deskography.org, it has many pictures of various computer setups (here's mine). There is usually no mention of the software being used on the computers but the physical setups can be quite interesting.

TomA