Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As of recent I have becomne very interested in serious gaming. Today I ran into this little gem: visual studio achievements and it got me thinking.

I actually think it could be very helpfull and stimulating to add such a gaming component to an IDE to improve code quality and basically make it more interesting to write better code and put your IDE to good use.

Any thought on this?

Edit: Just to be clear here: the link contains a funny take on it. I'm interested in the entire notion of adding a gaming element to an ide, with for instance achievements that stimulate the use of best programming practises. Not so different from what StackOverflow is doing.

share|improve this question
2  
StarCraft would be nice... –  user1249 Jan 25 '11 at 23:12
add comment

6 Answers

up vote 14 down vote accepted

To expand on @gms8994's answer, it's well known that you get what you measure.

In this case, achievements would be considered a type of measurement. So, unless those achievements in the IDE are perfectly suited for your business, you won't be getting what you really want from developers.

Personally, I think the only measurement that should be applied to developers is, "was this good for our business or not?" Too many artificial and political measurements get in the way of development success.

share|improve this answer
1  
Most logical thing I've heard in a long time "was this good for our business or not?" –  Gratzy Jan 25 '11 at 22:05
    
You make a valid point. However, wether something "was good for our business or not" can be hard to establish. I finished the project on time and within budget. Hooora... Please don't touch it or shit will break... –  Syg Jan 25 '11 at 22:10
    
@Renesis: Should work not be enjoyable? –  Orbling Jan 25 '11 at 22:14
    
@Syg. Granted, it can be difficult. That's why managers get paid the big bucks right? Of course I'm being facetious, but really - if it's going to break if touched, was it really good for the business? –  NickC Jan 25 '11 at 22:14
1  
@Renesis: Many companies are buying Wii/PS3/XBox for their developers as a way to relax and blow of steam. Whats the big difference with having games in the IDE? –  Martin Wickman Jan 26 '11 at 14:52
show 5 more comments

I personally disagree; one of the "achievements" was Every Option Considered – Created an enum with more than 30 values. I think people would write crappy code just to get the achievement. That makes life that much harder on the next schmuck who has to maintain it.

share|improve this answer
    
The link was jsut a funny take on it ofcourse. It's the idea of adding a gaming element to promote the proper use of code and stimulate writing better code and using the IDE in a better way –  Syg Jan 25 '11 at 22:03
4  
But what denotes better code? Less lines? Shorter methods? It's all extremely subjective, imho. –  Glen Solsberry Jan 25 '11 at 22:04
    
True, a simple case would be adhering to the coding guidelines, preventing code repetition, 'not breaking the build', not creating endless methods etc. And is doesn't have to be achievements ofcourse. It can be other things, like exp points, challenges that match your skill to improve yourself within a certain area.. –  Syg Jan 25 '11 at 22:13
add comment

Short answer: No.

Long answer: Nonononononononononono. No.

IDEs cannot really gauge what is worthy of achievement: those things that make a programmer great. IDEs are slowly getting better at helping you identify bad code 'smells', but such functionality is in its infancy. Until IDEs can detect and suggest major project refactoring opportunities that result in making code easier to read/maintain by humans, having it run faster with the same logic, removing repetitive code, and enforcing chosen programming implementations (such as MVC), I think we're going to be relying more on code reviews and less on IDE achievements to teach our colleagues.

The day IDEs get smart enough to tell us how we should be coding is the day the machines take over. :o

share|improve this answer
    
I get this and agree with it. The practical implications might be hard to overcome to have this as a full blown replace everything solution. Is doesn't have to replace, for instance, code reviews though. I think the intention should be to make the IDE a more stimulating environment. This forum would work without achievements, badges and experience, but not as well as it does with them. –  Syg Jan 25 '11 at 22:56
add comment

Code Katas can be used as a coding game to help you write better code and practice your TDD. It has the upside of not being tied to a specific IDE, but it would be possible to integrate it into an IDE as a plug-in.

share|improve this answer
    
thanx, I'll have a look! –  Syg Jan 25 '11 at 22:14
add comment

with for instance achievements that stimulate the use of best programming practises. Not so different from what StackOverflow is doing

The silly point system is the single most annoying aspect of StackOverflow. (Even worse than using OpenID!) I would spend more time there and provide more answers if that was removed.

I'm not against scoring answers, but the idea to sum all of these points per person, and then display it next to their name whenever it's printed, is just stupid. It's not useful at all. Jon Skeet may have 250,000 points and know more about C#/.NET than most of Microsoft, but that doesn't translate to other languages and environments. I see all the time people with 10,000 points in language X try to answer a question about language Y and give a terrible response, which is then voted up despite being wrong. He has 10,000 points, so he must be right, right?

Similarly, you add this to an IDE, and now instead of the IDE working for you, you're working for the IDE.

Psychologists have known for years that incentive pay doesn't work. Why do people keep trying to re-invent this?

Isn't programming enough? I don't see how adding external goals, which take even a little brainpower to think about rather than your program, is a useful addition in the long term.

share|improve this answer
    
I guess it's more a problem of sticking to what you know then having a point system in place. Users just have to be sensible about it. I mean, having Senior in your job title instead of Junior will result in people taking you more serious. It doesn't mean you know everything about everything or that a Junior never has a better suggestion or answer. I don't see how that's different? Furthermore, I don't see how "the incentive pay" remark is relevant? Incentives work, monetary incentives however, will not motivate employees and fuel their creativity. Gaming might though. –  Syg Jan 26 '11 at 9:01
    
"I mean, having Senior in your job title instead of Junior will result in people taking you more serious." [sic] Really? It's been 10 years since I've even known what my own job title was. Nobody has ever asked, and no technical person has ever told me theirs. Apart from the CEO and CTO, I've never known anybody's title at any company I've worked for. –  Ken Feb 4 '11 at 19:24
add comment

I'm not entirely sure that an IDE is an appropriate platform for achievements. Not because I think achievements don't belong outside of games, but because the tasks one undertakes whilst programming are so varied there would never be a fair playing-field. It's a complicated world.

That said, an end-user application such as a Finance-app, or a business app? I whole-heartedly endorse the concept. Sales people can get achievements in-system for making sales. Trainees get bronze-cups for creating 10 records, or doing 20 updates.

Achievement points could then be converted in to the company bonus scheme.

I think achievements outside of games is a great idea.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.