Friday, January 12, 2007

Fun is Usable

A long time ago, some programmers I knew came upon a pretty familiar dilemma. The specifications required more data than could be efficiently queried from the database. Furthermore, the volume of data and the detail in which it was retrieved made it dubious that a mortal human of the early 21st century could make any sense of it whatsoever. What to do, what to do. In my naivete, I thought, Let's make a game! You could assign numbers to different levels of criteria, and when you total the numbers you get the cost of the query. Certain levels of staff could only "afford" particular kind of queries. It makes it a game to narrow down search terms. To make it really fun, the organization could assign goals, and when a staff member meets a certain set of goals, the system could let that user create more expensive queries. "SalesSteve has gained +20 Query Points". Which lets a bright employee do his or her job better, which gets better query points, etc. It seemed like a great idea at the time, but, well, I was younger and exceptionally excitable. Data mining isn't supposed to be fun.

Data might not be fun (for some people), but usability is. It's something I was thinking about during the holidays spent with my future in-laws, where I enjoyed a Christmas present of a computer game. This game, Knights of the Old Republic 2, is in many ways indistinguishable from work. You go through a somewhat repetitive series of number crunching exercises, face crises, deal with them by crunching more numbers . . . for what? Why, I asked myself, am I working for free? The reason immediately slapped me in the face: I'm playing to get Force Storm so I can really cream these goody-goody little Jedi freaks. Playing evil aside, I was playing because the game had a constant and consistent framework of reward and punishment. It was just that my character's idea of a reward was a goblet filled with the tears of the innocent.

In any case, the reason (good) computer games can get people to work almost indefinitely for free is because of this system. This is what makes them fun, and, ultimately, usable. All too usable, in some cases. Imagine, I thought, if when a programmer finishes a certain number of graph functions he gets a level up as "Graphmaster" (displayed in a tasteful little HUD below the IDE, like KOTOR's level up tooltip), or a programmer who is a rapid typist gets "Speeddemon". The guy who puts the smack down on the project could be "Finisher". These sorts of points could go towards awards, from micro-bonuses to extra training. Ideally the rewards help the player to work harder to get more rewards. Just like in the video game: you kill to shop, and you shop to kill.

All these different aspects or "levels"- Graphmaster to Connectrix- might not mean a hell of a lot by themselves. Probably the most important guy on the team will have high combined scores in all his levels. That's not the important bit (well, it is important to HR, but let's leave that out of this for now). The important bit is that each member of a team gets immediate feedback on something they're doing- and something they can immediately compare against everyone else.

Maybe when we start seeing the next generation of HR technology, we'll hear a new cry coming from the corporate office:

"Level! Woot!"