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!