I was listening recently to a sort of rant by Erik Meijer and amongst the other amusing gripes he said something that set me thinking. Amongst everything else, he complained how developers are not willing to pay for other software tools. He related how chefs will buy their own premium knives and carry them to whatever job they have. In the same way, developers should not shy away from paying for solid tools that multiply their efforts.
He’s absolutely correct. Although some people seem to work better without tools for some reason, most of us can work much better with these tools assisting us, correcting our mistakes, suggesting ways to improvement. I’ve found over my career that the tools I’ve chosen have given me a significant advantage over my colleagues that forgo such tools or simply don’t know about them.
For that reason, I’d like to help other developers who may be starting out, switching platforms, or who are simply looking to hone their practice. Below is my current top picks for my tool kit.
I love Visual Studio not only because it’s a solid, mature development environment, but also because it’s a platform for so many great extensions.
- Resharper – There are a number of “productivity tools” for Visual Studio and I’ve tried all the big names, but ReSharper is my favorite. People usually think of it as a refactoring tool, but another huge benefit is how it can teach you new things about c# and .NET. I didn’t know about implicitly captured closures until I saw ReSharper’s warnings. Also very handy are it’s superior find usages window, Ctrl+Click navigation, find symbol/file, and other navigation features.
- VSCommands – This has a number of very useful features. Some of my favorites are:
- Productivity Power Tools 2013 – Contains a number of great productivity tools. Note that there are versions for 2010 and 2012 as well.
- Event Handler Naming – So VS will create sane event handler names by default. It’s configurable, but instead of the ugly
startButton_Clickyou can have the more palatable
- Open in External Browser – Open web links in an external browser rather than another VS tab.
- Snoop (for WPF) – This tool makes it easy to see what’s going on in your running WPF app. It’s always hard to know exactly how the layout will look at design time. Using Snoop, you can walk the visual tree, change properties, delve into bindings, zoom in on UI elements, etc. One great feature is that you can press Ctrl+Shift to quickly select a visible element.
- LINQPad – Ever wanted to test out something in C#, but didn’t feel like opening a whole new Visual Studio instance, create a console app, etc.? LINQPad will let you run anything from a single expression to a small app right away. The latest version even supports a debugging mode so you can step through code. Trust me, you don’t know how valuable a tool this is unless you try using it for a while.
- Git Extensions – This is a straightforward, yet very powerful Git client. Spend enough time in Git Extensions and you’ll find that it’s the cleanest and fastest Windows client out there.
- Atlassian SourceTree – This is another good Git client if you like a more graphical interface. That interface comes at a cost of a bit less flexibility, but it’s still a solid app. My only complaint is that it’s a bit slow.
- WinMerge – This has been my go-to diff app for many years. It has folder diff, ad-hoc diff (just paste in text), and great Explorer integration for selecting and comparing arbitrary files and folders.
The font you use makes a big difference to how readable your code is and even how much you see on screen at once. I think we often take it for granted, probably because Consolas is such a fantastic font. But I’d recommend trying a few different fonts, one each day, to see if it improves your experience.
- Anonymous Pro – A very complete fixed width sans designed specifically for programmers. I didn’t like this when I first tried it, but I keep coming back to it.
- Envy R – A very complete coding font that is horizontally compressed.
- Inconsolata – A nice clean font.
WARNING: Make sure to use a font that’s intended to be used for programming. Some fonts don’t support all the odd characters and will substitute a different character. I had a bear of a time to track down a bug where
~ was displayed as
-. That was a very unique situation, but it pays to be wary.
A big part of development are all the little ancillary tasks like finding files, arranging windows, etc. The faster and more effective you can be with these tasks, the faster you get back to coding and the less likely you are to forget what you were doing.
- DropBox – Aside from the obvious, DropBox is a great tool to sync various development environment settings. See this and this.
- Search Everything – This is the file search tool Windows should have created. It’s super fast, takes almost no system resources, supports regex searches, and even indexes network drives. I have this as a hotkey (Windows+`).
- Ditto Clipboard Manager – Straightforward, fast clipboard manager that keeps a history of what you’ve copied. Once I got used to this, I couldn’t live without it.
- AquaSnap – There are a ton of window managers out there, but I love this one. Snap windows to the edge of the screen or each other, and a simple Ctrl+click drag on an edge of two snapped windows will resize both. The same on a title bar will move both together. Check out the link for more things it can do.
- Snagit – This is a top notch screen shot / recording utility from the folks at TechSmith who also make Camtasia. One of my favorite features is how it will scroll a region to capture the entire thing. If your work involves a lot of screenshots or if you want to get into screencasts, the price is definitely worth it.
- Shotty – This is another great screen capture tool and is free.
Other People’s Lists
I’ve found a number of these tools through other people’s tool kits. Here are a couple.