
What if Visual Studio had Achievements? - varunsrin
http://www.blog.whiletrue.com/vs-achieve.html
======
jakevoytko
A lot of these are bad Valve-style achievements.

When achievements were first released for the Medic in Team Fortress 2,
players who weren't Medics suffered. Some of the achievements require the
Medic to either become an offensive player, or intentionally make bad choices.
The more players tried for achievements, the worse your team did. For future
achievements releases, Valve changed the focus of achievements to reward class
strengths, showcase new features, reward good behavior, or highlight awesome
events.

A Visual Studio achievement like "Job Security" would be terrible. It just
encourages bad practices. I don't want to fix a bug in a 30-line Linq query,
or understand if it does exactly what you say it does. In fact, its opposite
is a better achievement: "If You Linq, You Will Miss It: Write 100 Linq
queries with 3 lines or fewer." It encourages users to use a great feature,
doesn't punish them if they find a case where they absolutely need to write
something longer, and encourages a good habit.

That being said, some of them were also good. I could see Visual Studio using
"Gimme back my ASM" or "The Academic". Some also had a Valve-style
personality, like "Shotgun Debugging" or "Rage Quit."

~~~
shalmanese
Whoooooosh

~~~
DougBTX
The article was not as good as I expected. There are arguments for
achievement-like things in VS, for example unit test coverage. This article
was aimless and negative.

~~~
mrcharles
Actually, the achievements mimicked gaming achievements fairly well. A mix of
goofy, funny, ridiculous, and painful. I don't see a problem with that at all.
As a humor piece, which is what it is supposed to be, it succeeds.

------
angrycoder
It already does. I use it every day. Twice a month my bank account levels up.

~~~
amadiver
By... uhh... how many Experience Points?

~~~
bad_user
It's not experience points, but Gold, and you can buy anything with it.

~~~
iwwr
Anything, except love.

~~~
sharpneli
Me love you long time!

------
jjcm
Humorous, yes. But it might actually be good as a learning tool, especially
for beginners. Having a popup that says you earned the achievement of
"Spaghetti code" might make the user delve into why that might be a bad thing.
Could be useful.

~~~
Aaronontheweb
I agree with this - it could also help in driving the adoption of new language
features, like the async keyword coming out in C# 5

------
latch
Missing:

"The MS Employee" - Seal 50% or more of the classes in your project.

~~~
profquail
In .NET, you want to seal as many of your classes as possible, because it
reduces memory usage and allows to CLR to perform some minor optimizations
when using virtual dispatch, IIRC. I think in most cases, you're better off
using interfaces and (sealed) classes or structs implementing them, if only to
make your code easier to break up into manageable chunks.

~~~
barrkel
The bigger reason to seal classes is to limit API surface area that needs to
be tested for and preserved from one version to the next. The reasoning is
closely related to why virtual methods should almost always be avoided.

Inheritance is one of the closest couplings you can have between two pieces of
code in an OO language. When you inherit, you're depending very deeply on the
behaviour of the base class. If you're a platform vendor, having third parties
deeply reliant on very specific behaviour is a nightmare. It greatly increases
your testing burden and limits future flexibility, as you'll likely have to
maintain buggy invariants into the future, possibly to the point of having to
introduce redundant parallel functionality merely to avoid third-party
breakage when trying to expand the feature set.

If any source code outside your control is going to be using your code, and
you have some kind of obligation or incentive not to break their code, then I
strongly recommend that you seal your classes (final in Java, etc.), or saving
that, make very few methods virtual, and ensure that they have been tested and
documented appropriately.

------
aaronbrethorst
The Office group at Microsoft actually did something like this.
<http://www.writersua.com/articles/ribbon_hero/index.html>

But, in answer to the question, I would probably jeer at my old friends on the
VS IDE team ;)

------
protomyth
"Well Mr. Anderson, I see you only earned one achievement this year.
Achievements don't lie Mr. Anderson. Visual Studio has decided you are a U/10
Mr. Anderson. Your lack of effort should be corrected, shouldn't it Mr.
Anderson?"

------
zephjc
For anyone curious about the Paula achievement:
<http://thedailywtf.com/Articles/The_Brillant_Paula_Bean.aspx>

------
Tycho
I could never relate to the Achievements craze, but it has a real grip on some
people. I PM'd someone on my Friends list to ask if the game they were playing
was any good, they replied 'nah, rubbish, just playing it for the Achievement
points then taking it back to the shop.' I don't know what it is about them...
I never cared personally.

~~~
coderdude
Although I've never played a game simply for the achievements, I do understand
the appeal. My game of choice is Left4Dead 2. I've earned just about every
achievement that you don't have to consciously work towards and it is cool to
see that you've done something the developers deem an accomplishment in your
gameplay. It shows improvement and allows you the opportunity to see how you
stack up against other players. In the end it's a little about status and a
little about a feeling of personal growth.

------
jonhendry
Of course, if there were IDE achievements, some derp on your team would waste
time racking up achievements with work that doesn't advance the project at
all.

------
unwind
I didn't get this one:

The Engineer - Killed a zombie with The Wrench

If this is a joke about Visual Studio, I must not be using it enough because I
don't get it at all.

------
nitrogen
There was an old image editing program that gave points for using new features
and unlocked additional features at certain point levels. I want to say it was
Kai's Power Goo (which ran incredibly well on a 233MHz Pentium MMX), but that
doesn't seem quite right.

~~~
jonhendry
I think I'd prefer to have all the features I paid for from day one, and not
have to jump through arbitrary hoops to get access to them.

------
0xEA
This is amazing. I'm going to write a Jira plugin for achievements in bug
tracking.

~~~
ximeng
Check out playnice.ly, they're planning on achievements in bug tracking too.

[http://eu.techcrunch.com/2010/11/17/playnice-ly-exits-
beta-w...](http://eu.techcrunch.com/2010/11/17/playnice-ly-exits-beta-wants-
to-make-bug-tracking-fun/)

------
yason
If Visual Studio notices that you're greenspunning a project, it'd tell
"you're too smart for us; go switch over to Emacs"?

------
nickolai
Missing :

Controversial - used a goto statement

Ultimate question - nested 10 if statements

~~~
adelle
Ahh, the people who wrote this code weren't morons, just "edgy" non-
conformists.

------
kchodorow
Forget VS, someone should make an emacs extension that does this.

------
jrockway
_# The Multitasker – Have more than 50 source files open at the same time_

Why should the user distinguish between "in memory" and "on disk". That's a
performance optimization for the program to decide on.

(Incidentally, I would really enjoy a "national force-ide-programmers-to-use-
vim day". "Wow, you can switch between files without your whole system
crashing!?")

~~~
emef
I think it was more about how many tabs are open at once, which I would
suppose means in memory since they're all going to be editable.

~~~
limmeau
In Eclipse, the contents of a tab are represented by an IEditorInput instance
which only loads the file (or whatever the editor edits) on demand; if your
Eclipse starts with a stored session of 50 tabs, it doesn't need to open 50
files.

~~~
adelle
The Mozilla team could learn from this.

------
terhechte
That should be a independent service with plugins for all Major IDEs (VS,
XCode, Eclipse, Emacs, VIM, maybe even TextMate) and a healthy online-
community where people can brag with their achievements (the positive ones,
that is). I suppose nowadays Facebook-Integration would be useful too.

That'd probably gain lots of traction.

------
malkia
100 points for grasping how Visual Studio's Configuration Manager works, or
more likely... it does not.

------
Groxx
A fair number of those could pretty easily be managed by an extension.
Others... that'd have to be one heck of an extension.

Could be a fun project to understand creating extensions better. Though I
don't have 2010, and I gather that's a heck of a lot easier to make extensions
for.

------
moron4hire
half of those are for realz in the project I just joined AND we have a home-
grown achievement system for stuff like successful builds, broken builds,
leaving the office after committing without verifying that the build was good,
cursing too much, etc.

------
motters
Maybe it just needs a high score table for functions based upon their
cyclomatic complexity.

------
erikstarck
Fun perhaps, but any reward system for programmers not based on shipping will
fail.

------
Devilboy
Successfully consuming a non .net webservice is definitely an achievement.

~~~
user24
using newtonsoft's json.NET would count?

edit: <http://james.newtonking.com/pages/json-net.aspx>

~~~
arethuza
I suspect Devilboy meant SOAP web services.

However, json.net is awesome - I'm using it to get my latest personal project
to talk to CouchDB - so its json all the way from the client, through the
server through to the database.

------
ianl
While they're at it why dont they use a less bloated IDE.

I suppose I'm just jaded, but doing anything in Visual Studio feels horrible.
I guess I'm a *nix+vim fan boy through and through.

~~~
k0n2ad
Learn the shortcuts and remove the toolbars.

------
ocharles
We might as well extend this to hospitals too! Achievments like "metal
detector" for leaving tools inside bodies, or "No your other left" for
operating on the wrong leg.

Seriously, this is beyond a dumb idea. Programming is a profession, not a
game, and you do not reward malpractice (more than 10 parameters? 30 line Linq
statements?) We already have achievements in our industry and it's called a
C.V.

~~~
ximeng
Ray tracer written in more than 30 lines of Linq (using a y combinator),
malpractice perhaps but I learned from it.

[http://blogs.msdn.com/b/lukeh/archive/2007/10/01/taking-
linq...](http://blogs.msdn.com/b/lukeh/archive/2007/10/01/taking-linq-to-
objects-to-extremes-a-fully-linqified-raytracer.aspx)

