?

Log in

No account? Create an account
 
 
22 September 2007 @ 06:22 am
 
Everquest. World of Warcraft. Dark Age of Camelot. Guild Wars. Their predecessors like DikuMUD, CircleMUD, ROM, Merc. Collectively, MUD designers call them "MMORPGs" -- it's a pretty unwieldy acronym for Massively Multiplayer Online Role Playing Games. Some people have shortened it to MMO, representing the first three words of that. I'm gonna use that in this entry.

MMOs are really addictive, and mainly because of the achievement grind. You fight monster after monster, or player after player, and get a little "ding!" of achievement. In-game money, experience, equipment. A chance at that latest, greatest new thing that will make your in-game character marginally better. As the game continues, the payoffs get smaller and less predictable, which actually makes it *more* addictive, as it goes from continuous advancement to being a really involved slot machine.

There's a dark side to the advancement grind (well, okay, *another* dark side). Some games, like World of Warcraft, barely penalize you for dying in-game. In extreme cases you may have to spend hours setting up a really involved quest again after you fail it, but that's about the worst it gets. But a lot of the older games would really whomp you for screwing up. In a lot of DikuMUDs it was standard that if your character died, you'd lose a level. When you first start, that's maybe an hour of work. In some MUDs, that could be the loss of a day, a week or even more until you recovered that last ounce of power you just lost. It was also sometimes possible to lose really good equipment, which could take hours or days (or occasionally longer) to regain. This is the most common time for players to get demoralized and quit a game.

Ever wonder why programmers and techies seem so likely to succumb to the temptation of these games? I've got a theory. It's related to the advancement grind.

I'm a computer programmer. I do it for a living, I have for around ten years, and I hope to get at least another ten out of the profession before I have to get a real job. If I'm really lucky I can keep doing it until I'm sixty, where "lucky" means "able to stand up to the strain." But some guys manage. I also program pretty seriously in my spare time, and I've done that for even longer. What I'm getting at here is that I really like being a computer programmer, and I think I'm a good example of a basically successful one.

Techies, you know that little thrill you get when something works? When your new feature works in software, when your script does something cool, when you can suddenly read an RSS feed or install your new game or whatever you were up to. Think of that as being like the thrill of gaining a level or a cool new item in an MMO for a minute. If you're an MMO player, that should be a pretty easy thought exercise :-)

One thing about writing software, and about assembling software, and about really almost everything on the computer is that it gets much, much harder as the job gets bigger. Assembling ten different computer widgets and making them work together isn't just twice as hard as assembling five different widgets and making them work together. It's more like four or five or ten times as hard.

So think of getting a widget working as a "ding!"... which gets harder and harder as you go on, because the bigger, more complicated project makes adding "one little thing" that much more difficult and error prone. Now imagine serious failure ("okay, this approach isn't working, back to the drawing board") as the equivalent of an in-game death. Doing that thing, in that way, didn't work. You just screwed up and you take whatever the penalty for "dying" is...

Interestingly, the old penalty for dying in software engineering was pretty bad. You had a half-done feature hanging around, adding bulk and screwing up your later attempts. You could go back and get rid of those bits, but it meant there was a chance you'd destroy stuff that *was* working... Which meant a serious, possibly permanent penalty for "dying".

If you look at recent advancements in software engineering (for the initiated: I'm thinking of stuff like unit testing, continuous integration, source control management and agile methodologies), it's a lot like the differences between DikuMUD (the old standby MMO of the 80s) and World of Warcraft (the big popular newcomer MMO of the 00s). Source control is a way to roll things back and get to where you were when you started writing that feature. So you still lose all the progress since then, but at least you're no farther back then where you started. Unit testing is a way not to lose progress while you're not looking at something. Agile methodologies are ways to break the features up into smaller pieces so that stop-and-roll-back loses you less. Continuous integration probably doesn't have an equivalent -- it's more about multiple programmers working together, but guild advancement in World of Warcraft doesn't work in a way that parallels programming well :-)

It's easy to say, "yes, all this reduces the penalty for writing bugs. We knew this was the goal. Equating it with World of Warcraft is perhaps interesting mental masturbation, but, like, ew. Go away, freak." But there's a point we're not taking into account, and I think it's worth mentioning...

Morale. Work ethic. When I'm cynical, I think that pair programming gets good gains mostly because people feel worse about slacking off when there are two of them watching each other. We ignore effects like this when theorizing about how to train good programmers. That's silly. We should be paying attention.

When an MMO loses users they wander off, lose interest, maybe delete their character and move on to a game they like (or chores they neglect). But when you lose a programmer's interest, you lose a lot of productivity in a mostly-invisible way. It's hard, hard, hard to measure programmer productivity, and similarly hard to measure productivity in most other creative techie disciplines (hello, sysadmins!). We don't talk about programmer's block, but it happens every bit as much as writer's block, judging by me and my coworkers. We just have an easier time screwing around in ways that hide it.

I don't have the Next Big Thing figured out for programming or anything. But I do think it's worth looking at the "retention features" of the better MMOs and try to see what that says about motivating programmers. Because the more compelling this discipline is for us, the better the widgets will be that the rest of you get to use :-)
 
 
 
vito_excalibur on September 22nd, 2007 05:00 pm (UTC)
Damn, you're writing a lot of really good stuff lately!

The not being willing to slack off in front of someone else is a well-documented phenomenon. It's what keeps soldiers at war. Running away when you're on your own is completely different from deserting in front of your teammates.
Zhaneel: WoW addictzhaneel69 on September 22nd, 2007 08:31 pm (UTC)
I hadn't thought about it that way, but you may be on to something. I do think that programmers are more likely to get sucked in by the MMO formula, but I never based that on 'ding', so much as figuring out the fastest/most efficient way to ding.

Zhaneel
msde on September 23rd, 2007 05:15 am (UTC)
I don't really know if the analogy works quite right for me. MMOs have been about the social aspect for me, and not so much about the underlying game. Most of the time I spent in DAoC really had no achievements to grind.

The analogy sounds more like it applies to traditional CRPGs than MMOs.

Noahangelbob on September 23rd, 2007 06:13 am (UTC)
Fair enough. I'm making some assumptions about what attracts people to MMOs that don't apply to you. I have more trouble imagining paying $15/mo for an MMO for the social aspects :-)
(Deleted comment)
taoflaherty on September 26th, 2007 11:26 am (UTC)
Social aspects
When I first joined a MUD, I made better friends than I'd previously had in my life. Sure, there was a game, and I'd follow friends around killing things, but I was there for the conversation, with level gain as an added bonus.
I had the same motivation as a programmer at CMU. I worked coding in the cluster because I wanted to interact/work with people in the cluster. And the bonus of creating working widgets was as good as the social interaction.
That's what killed my interest in MUDs - the realization that real life interaction is better than online interaction, and real accomplishment is better than level ups.
Right now, I'm in a place where real life interaction is difficult to come by, and real accomplishment gets no acknowledgement. Where did that motivation go?