You earned 15 XP in Getting Things Done!

Posted on by Idorobots

Gamification

According to the Oxford Dictionary...

Gamification (ˌɡeɪmɪfɪˈkeɪʃ(ə)n) is the application of typical elements of game playing (e.g. point scoring, competition with others, rules of play) to other areas of activity, typically as an online marketing technique to encourage engagement with a product or service: gamification is exciting because it promises to make the hard stuff in life fun.

Let's see how to apply it to optimize performing daily activities and get some useful statistics out of it...

foo

Disregard contexts, acquire experience

I use Emacs Org-Mode, a plain text focused, organization powerhouse, to manage both my work and my private life implementing the Getting Things Done techniques. And as far as Org-Mode goes it works like a charm, but there's still the human factor...

I hate to admit it, but I'm a slow-starter. Beginning some of the tasks, especially the seemingly harder ones, tends to be a problem for me and I usually need a considerable amount of preparation time beforehand, or an outside motivator of sorts, for example a milestone deadline or a course grade.

Staying focused on a performed task or keeping a task streak going has never been a real problem for me, and ever since I optimized it using the Pomodoro technique it became apparent that most of my productivity loss comes about before beginning a Next Action - it takes me quite some time and effort to actually start a series of actions that make up a complex task when I'm not looking forward to doing them and there's no real sense of urgency or reward. I just keep pushing the task back and back.

To overcome this recurring phenomenon I took a closer look at my GTD workflow - task contexts in particular. I used to tag my Org-Mode tasks based on the place they could be carried out and sometimes by their type, what looked something like this:

old

It turns out that such context tags are barely useful and carry little to none statistical value, and since I tend to keep all my working environments closely synchronized these contexts weren't even valid half the time - the tasks could be performed in either context. This got me thinking and I decided to drop task contexts whatsoever in favour of something more useful...

Gamify.el

...and fun. This Emacs package is my attempt at doing so. It'll help you keep track of your stats - any quantifiable values you name, be it your soft skills or your experience with various technologies and software. At its current state it's mostly usable together with Org-Mode and GDT to increase your productivity and motivation in your daily routine.

To get started with Gamify simply add this to your .emacs:

(require 'gamify)
(gamify-start)

There are a few customizable variables to tweak (which you might want to check out here), but I'll focus on the Org-Mode integration (enabled by setting gamify-org-p to t).

Whenever you complete an Org-Mode task by setting its state to DONE Gamify will try to interpret its tags and properties and update your stats accordingly. All you really need to do is assign some experience to your task, preferably automatically at capture-time:

(setq org-capture-templates
  (list* `("1" "New easy quest." entry (file "")
               ,(concat "* TODO %?\nSCHEDULED: %t\n"
                  ":PROPERTIES:\n"
                  ":gamify_exp: %(gamify-assign-some-exp 5 2)\n"
                  ":END:\n"
                  "%U\n%a\n %i\n"))
         `("2" "New medium quest." entry (file "")
               ,(concat "* TODO %?\nSCHEDULED: %t\n"
                  ":PROPERTIES:\n"
                  ":gamify_exp: %(gamify-assign-some-exp)\n"
                  ":END:\n"
                  "%U\n%a\n %i\n"))
         `("3" "New hard quest." entry (file "")
               ,(concat "* TODO %?\nSCHEDULED: %t\n"
                  ":PROPERTIES:\n"
                  ":gamify_exp: %(gamify-assign-some-exp 30 10)\n"
                  ":END:\n"
                  "%U\n%a\n %i\n"))
        org-capture-templates))

...and tag them by the stat they train or require:

new

New tagging scheme might seem time and display space consuming at first, but thanks to tag inheritance and stat aggregation provided by Gamify it quickly becomes a second nature. In fact, my getting things done workflow stayed unchanged - I still capture, tag, refile and perform my tasks as usual.

What changed, however, is the amount and type of information I'm gathering - instead of "just a task archive" I now have more data to play with, to enhance my productivity and motivation, to boldly go where no man has gone before!

It's not gamification if there's no XP bar!

Or well, you know, XP percentage indicator due to limited space of the Emacs mode-line:

exp

This little fellow does wonders. This type of feedback is essentially the core concept behind gamification itself - seeing your progress helps you stay motivated to progress even further.

Gamify includes a Graphviz dot exporter to provide extra feedback - it builds a colorful graph of stats and their dependencies which shows how different stats depend on each other and how developed they are. The exporter supports filtering, so it is possible to focus on a specific part of the graph or filter out stats that are less important or less developed.

Following is an example subgraph of my skill-set. Skills that didn't make it past filtering are barely visible on the graph not to obscure it:

codin

There's some useful information to be seen on this graph, for example programming languages I know or what my toolchain is. My Valgrind skill is marked red meaning that it went rusty because it wasn't updated for a while. Perhaps that's something I could focus on in the future? This type of data is invaluable when identifing your weak spots that require improving and it's right there, awaiting interpretation.

With all these neat things on my side I'm not hesitant in starting new tasks anymore.

notify

2016-02-16: Adjusted some links & tags.