When I first started putting my blog together one of the first thing I wanted to do was to have a page where I could keep track of all the tools, utilities and frameworks I use or are simply installed on my Dev machine. It's nothing really original as there have been many such lists before with the best known being probably Scott Hanselman Ultimate Developer and Power Users Tool List for Windows. However this is one of these .NET sticky notes I wanted to put on the site.
With more than 150 items on the list, it's no wonder I hate rebuilding my Dev machine. It takes days if not weeks to tweak all of these applications back to the way I like it.
I have to confess I am completely reliant on all of those tools to do even simple tasks like cut and paste (I use CLCL for that). I am a compulsive R# user and I spend a rather unhealthy amount of time trying new applications, attempting to write scripts in AuthoHotkey or PowerShell, and pimping my IDE. My Visual Studio workspace is so heavily customized that I wake up in a cold sweat every time I need to reinstall it.
This heavy dependency is the most noticeable when pair programming, conducting code reviews or driving someone else's machine. I quickly lose track of what I am doing and feel totally paralysed. Fear takes over!
JP Boodhoo is right in saying that forcing Developers to work on standardized machine is counterproductive (The fallacy of the standardized developer machine). Unfortunately the reality is that if you work as a consultant moving from project to project, client to client, you might not necessarily have the choice. Many organisations have policies in place to lock down users' environment and that includes Software Developers. I even worked in some places where anything that you wanted installed on your computer had to be approved by a committee; the whole process could take months without guarantee of success! I also heard (rumours?) of Developers working in Delivery Centres who were prevented from accessing the Internet and therefore could not even do a quick Google lookup for some sample code or MSDN help. If it's true that would be plain cruel! Getting some employers to allow you to use a particular application or spend a few extra $$ on a tool (that could save loads of time and money in the long-run) is not always an easy task, yet they would paradoxically accept that Developers cannot write .NET applications in Notepad.
And this is the biggest downside of working with a mutant Dev machine. Going back to basics is almost impossible or fairly costly as you lose most of your productivity when working with an unfamiliar toolset or environment.
Yet I don't really want to go cold turkey and give up on all the goodies that help me deliver. So what is the solution for tools junkie like me? Share the knowledge of what is out there to make .NET Developers more productive in the hope that these applications will become de-facto standards in most organisations and demand that projects are given the tools that are essential to produce the quality of work that our customers and users deserve.
Until this happens, check out the Ultimate Tool List, The Productive .NET Programmer list and some of the following sites:
Note: If you know of a good tool that could help improve a programmer's productivity and is missing from the list, let me know and feed a tools junkie's addiction.