Its funny how sometimes there are pairs of products that contend for “best” and yet seem to be so evenly matched that the decision is often arbitrary, a pick made based on what your friends use, what you used first, which commercial (or Evangelist) is better. Some classics come to mind
- Coke v Pepsi
- Parallels v Fusion
- Starbucks v Pete’s
None of that prevents adherents from a total conviction that whatever product they happen to use is far superior (see cognitive dissonance), but I’ve never been able to detect much difference.
There are times, however, when we are confronted with a choice between two products where the choice is consequential. This is especially true if the investment in learning how to use one makes converting to the other painful, if the product will be critical in your life and especially if your sense of self is tied up in your choice. We see this very clearly with the Mac v PC choice, the C# v. VB.Net choice and so forth.
My dilemma is with CodeRush v ReSharper. They meet all the criteria: the learning curve on either makes switching to the other non-trivial; they are critical in my work and I certainly don’t want to choose the one that all the hip geeks sneer at.
What Are These Things?
Let’s start with what they have in common. Both are add-ins to Visual Studio and both greatly enhance your productivity and the quality of your code. They do this in three key ways (and lots of other smaller ways)
- Making it easy to identify areas of the code that are outside your own coding guidelines
- Making it very easy to refactor your code
- Providing “Intellisense on steroids” reducing the amount of typing you have to do.
CodeRush is a DevExpress product, and their front page says,
For Developers, CodeRush for Visual Studio® .NET will help you create sophisticated code blocks in seconds and extend code templates instantly. CodeRush will complete identifiers as you type and expand or contract selections logically. With CodeRush, you will be able to instantly place selected code inside Try/Catch blocks, Regions and your own custom wrappers with ease.
ReSharper is built by JetBrains and their front page says,
Continuous code quality analysis… Instant fixes to eliminate errors and code smells. 40 solution-wide refactorings to safely change your code base 200+ code editing helpers.
I’ve yet to see a comprehensive head to head review that wasn’t out of date by the time I read it, and, to be honest you won’t find one here either.
Some of the most important distinctions I have found so far, however, are these: 
|CodeRush Wins||ReSharper Wins|
|Refactoring – fewer key strokes||Ability to apply formatting and refactoring rules all at once (one key fix)|
|More refactorings||Some key refactorings not in CodeRush|
|Better identification of memory leaks in non-managed code||More code issues reported|
|Many more snippets – much less typing but you have to remember the short-cuts||Better Intellisense supplement|
|Terrific real-time learning, context sensitive window||Possibly more focused on C# and less on non-managed code|
|Better support for Unit Testing||Better searching|
It’s a pretty close call. One thing that I’m hoping is that if I spend enough time in both I’ll get a better sense of which is less intrusive and which is more readily called upon when needed. These are surprisingly elusive characteristics.
So, do you use one or the other? Do you have a clear preference and if so why? Please, use the comments to share your thoughts and experiences.
 Full Disclosure: I have multiple license of each. At least one of the companies provided a free copy because I was working on an Open-Source project, at least one license was provided at an educational discount because I’m on the faculty at Brandeis University. It is very possible either or both provided free licenses before I joined Microsoft, and certainly the technical evangelists for both have been wonderfully eager to help me stay within corporate and ethical guidelines while making it easy to obtain their products.
 Even Fuller Disclosure – this list is based on my observations and also comparison points from both company’s sites and in private correspondence from Gary Short, a truly terrific human being who is a DevExpress Technical Evangelist. Interestingly, the most balanced evaluation was Gary’s!