Essential Tools for .NET Development

By | July 10, 2010

Our .NET development team has been in the process of upgrading our development machines, which has given us an opportunity to re-evaluate and standardize our tooling. Below are what we consider the essentials for effective and efficient .NET development.

  • Two monitors – Obvious one.
  • Visual Studio – Again, an obvious one.
  • Launchy – Indispensable and free. You basically will never have to go into your Start –> All Programs menu ever again; simply press Alt + Space and then start typing the name of the application you want to launch, and you get it.
  • WinSplit Revolution – Another indispensable and free tool. Simple three-key combinations put you in complete control of your windows, allowing you to fling them to the left or right monitor, or to one of the four quadrants on a given monitor. No more double-click, click & drag, and double-click again to move a window across monitors.
  • Beyond Compare – For any kind of application deployment from environment to environment, this tool is a must-have. While not free, it’s a steal at $30. You can compare the contents of two directories and see the differences in files, whether its by checksum, file size, file date, and more. Once you’re satisfied that the differences look legit, you can copy your files and even make a backup before you copy.
  • Event Log Explorer – A great tool for exploring event logs, much better than using the Windows Event Viewer. The free version limits you to monitoring 3 computers at a time. Upgrading your license for $50 raises this limit to 10 computers and provides support as well.
  • Mikogo – We use this for co-located code reviews. It’s free and works great for our team, and provides the usual collaboration tool feature set: desktop sharing, multiple participants, switching presenters, remote keyboard and mouse control, etc.
  • Notepad++ – One of the more popular Notepad replacements out there. It’s lightweight and works great in those instances you need to edit files and don’t want to wait for an IDE to spin up. Free.
  • NUnit – An old standard in the pantheon of .NET unit testing gods. We stay on this because of the fluent interface and the readability it provides. Free.
  • Moq – This one is a new addition to our toolset. A forthcoming post will detail the main reasons we decided to switch to this from NMock. Free.
  • Balsamiq – One of the best, if not the best, prototyping tools out there. Stupid easy to use and much better than hand-drawn pictures on paper. At $80 its a bit pricey, but it’s well worth it. Our team has become much more expressive in our specs because of this tool.
  • SSMS Tools Pack – A fantastic and free set of utilities for SQL Server Management Studio, packaged as an add-in. The biggest feature our team uses is color-coding based on what server you’re logged in to; as a rule, everyone has their tools pack setup to display a nice big red bar whenever they’re on a production server. Helps remind the team that they need to tread extra carefully when slinging SQL statements around. Some other features of this tool that have helped us include the query execution history (keeps a history of all the queries you’ve ever run in SSMS, for a really long time) and generation of CRUD statements based off of table definitions.
  • Fiddler – Free web debugging proxy that helps you really see what’s going on with your web requests. Standard in most .NET web development shops, standard in ours.
  • Snagit – One of the best and most unobtrusive screen capture tools out there. There is a free evaluation, and a personal license is $50. If you do a fair amount of screen captures during your work, this is definitely worth the price. There is an older, free version of Snagit floating around on the internet that is legit, but the new snappy UI in the latest version of the product is worth the cost.
  • Sumatra PDF -  A free and lightweight PDF reader, mainly because the Adobe reader is bloated, lame, and has the most onerous update software known to man.
  • OnTime – Our dev team’s choice to track our day to day workload in an agile way. It’s well suited to handling a group of defects and features and lumping them into a release for some burndown visualization, as well as managing our day to day production support items. It’s not so good at the more esoteric aspects of project management (e.g. cross-project dev scheduling, task dependencies, leveling), but for our team, it has been perfectly sufficient. Definitely not free, but well worth the price and not as expensive as some of the bigger options out there.
  • Refactor! Pro – Our team evaluated both this and ReSharper about a year ago, and decided on Refactor! Pro, mainly due to the group perception that it was snapper and didn’t take as many resources to run. The refactorings are great, and have served us well while fighting back the entropy of some of the legacy systems we maintain. A must for that purpose and for how it has aided us in embracing test-driven development.
  • TortoiseSVN – We have yet to drink the Git/Mercurial fruit punch, and as such are still using Subversion. This product is free and is our client of choice, mainly because as a whole we frown on source control IDE integration, and the other non-free options simply weren’t compelling enough.
  • TestDriven.NET – Another must-have, assuming your team is writing unit tests. Not free, but again, well worth it. This product is seamless and doesn’t exhibit any of the quirks that some of the other IDE-integrated test runners out there do (e.g. Refactor! Pro).
  • TeamCity Tray Notifier – This isn’t it’s own product, but rather a utility you install after accessing your TeamCity build server website. Every developer is required to know what’s going on with the build server at any time, and being able to glance down at your system tray and seeing a green check or a red X is just about the quickest way of doing so.
  • PowerShell – Our team hasn’t leveraged PowerShell in any non-trivial way yet, but given the fact that you can do anything in a PowerShell prompt that you can in a DOS window, there’s just not any reason NOT to install this. It’s free. Plus, it’s blue.
  • SubSonic 2.1 – An older ActiveRecord-based data access solution that we incorporated into some of our systems, and as such still require this when supporting those systems. We attempted to explore SubSonic 3, but alas, when we tried to run the data layer creation templates against our databases, they literally timed out. Not only that, but we wouldn’t have been able to do a side-by-side test of the new SubSonic given that the root namespace in 3 was the same as the root namespace in 2.
  • MyBatis – Our current choice for data access when it comes to interacting with our legacy databases from code. Lightweight, flexible, and straightforward to use, MyBatis lets us leverage our very good SQL skills instead of forcing us to learn, say, HQL.
  • ManicTime – A great tool for monitoring your time usage throughout the day. It runs in the background, collecting information on your active windows and any periods of inactivity that might arise. Great for personal reflection on how well you’ve been using your time – you might be surprised at what you find out.
  • Microsoft Office – Well, doh. Everyone needs email and documentation. And spreadsheets.

Once these tools are installed, our development boxes are fully provisioned. Would love to hear suggestions for improvements in the comments!