18 January 2012

Visual Studio Achievements–Nice Idea, But…

Today, on The Official Microsoft Blog, Karsten (of Channel 9) posted about achievements being brought to Visual StudioVisual Studio Achievements (beta) is a Visual Studio add-in enabling developers to unlock various badges as they do what they do everyday – write code in Visual Studio.  There are currently 32 achievements, across six categories, waiting to be unlocked.  The categories include:
  • Customizing Visual Studio
  • Don’t Try This At Home
  • Good Housekeeping
  • Just For Fun
  • Power Coder
  • Unleashing Visual Studio
You can read the full list of achievements here.

As you unlock various achievements, you will earn points and your progress will be tracked the Channel 9 achievements leaderboard site.  You can tweet about your achievements and share them on Facebook, if you like.  There is also a Visual Studio Achievements widget that you can make use of to show off your achievements on your own blog.

While this is an interesting idea, it is not a new one.  In fact, the Channel 9 team at Microsoft was inspired by this post from Rudi on the While True blog and the subsequent discussion on Reddit.

All of this is done in the name of gamifying your development tasks.  While I enjoy (most) games as much as the next person, I am not sure this is the approach I would have taken with this add-in.  I suppose what I might have done differently is to build a set of achievements that more accurately measure your coding/Visual Studio skills and improvements to those skills over time.  While some of the current achievements appear to sway you toward learning various Visual Studio capabilities and features (e.g. the Stubby achievement for generating a method stub nine times) others seem to be counter-productive (e.g. having 50 projects in a solution).

If I were to champion an add-in like this at my place of employment, I’d rather see a list of achievements something like the following:
  • Implements the SOLID principles in at least 5 solutions.
  • Implements a well-known UI pattern in at least 5 solutions (e.g. MVP, MVC, MVVM, Presenter First, etc.).
  • Creates a Layer Diagram in Visual Studio to enforce patterns (such as those listed above) in at least 5 solutions.
  • Creates a Single-File Generator (Custom Tool) in Visual Studio to auto-generate code to solve a specific problem.
  • Masters Visual Studio keyboard shortcuts by utilizing shortcut keys x number of times within a certain timespan.
  • Implements Code Analysis in at least 5 solutions.
  • Building on the above, keeping Code Analysis warnings consistently near zero.
  • Writes unit tests and consistently keeps code coverage near 100%.
  • Following some form of well-known coding standards (e.g. .NET naming conventions).
  • Etc.
The above list could go on and on but the general idea is that the achievements would be more geared toward actually measuring how well one utilizes Visual Studio and how well they practice “good” engineering principles.

Now with all that said, I am not taking anything away from what the Channel 9 team has created.  The Visual Studio Achievements can definitely add a new dimension of fun to the everyday task of writing code.  If you want to have a little fun with your code development, then this add-in appears to handle this goal nicely.  If, however, you are looking for something a little more serious, then you will probably need to look elsewhere and/or come up with something on your own.

Maybe the Visual Studio Achievements add-in will provide an extensibility API and anyone can create any types of achievements they like (presumably posted to another leaderboard)?  Since this is a beta release, maybe they are planning on adding more “serious” achievements to future releases?  Whatever the case, nice job Channel 9!