Motivation is a tricky thing. Sometimes it can cause us to complete wildly-improbable tasks, other times it can cause us to dread even the simplest of chores.
The software I’m creating at work has one such chore. Our application interacts with a complex, proprietary, and highly-secure server. One of the consequences of this pattern is that we have to deal with security tokens.
It works like this: Whenever someone logs into the app, the server issues them a security token. From that point on, all communication between the app and the server must use this token. Easy, right?
The chore is this: Due to some wonky bug that is beyond our control, the server can only issue a few dozen tokens, and they’re not renewed properly. We’ve never counted it out, but I’d estimate the server can grant tokens for a hundred or so logins before it runs out.
When this happens, and it happens every couple of hours, someone needs to manually access some web form and click around a few times to reset the tokens. This is a pain for two reasons.
First, it interrupts whoever is trying to run the app. Maybe it’s QA breaking my stuff, or our PM showing the app to somebody important, or a dev like myself just trying to validate his latest code change. Whoever is unlucky enough to see the login fail must run through all the token-resetting hoops, and then context-switch back into real-work mode.
Second, nullifying the tokens will kill any and all existing sessions on the server. So if QA got the last token and is in the middle of a test sequence, and I try to log in next, and fail, and reset the tokens, then QA’s session is suddenly invalid and they’ll start seeing errors left and right.
So to stop QA from logging a whole whack of bugs that would be impossible to reproduce, we came up with a system. Whoever resets the tokens lets the rest of the team know by sending a message to our project’s group-chat in Skype.
Just murdered the tokens.
See? Like that.
This was really annoying, especially since we had to do it many times per day. There was much complaining, and clamoring about getting a new version of the server that might solve our problem.
Then, something changed.
Tokens punched in the face and had their milk-money stolen.
We made a rule: Every time you clear the tokens, your message to the group must be unique. At first, we saw a lot of synonyms for “killed”. When we grew tired of running to a thesaurus every few hours, we started getting more creative with our phrasing:
Tokens are dead, and their heads have been mounted on pikes to warn future tokens to stay away.
Topical, even. We would hit movie quotes, the latest news, memes… Nothing was off-limits.
Tokens defeated by attacking their weak points for massive damage.
It became a game. Who could come up with the most creative token-killing message? Who could get the most laughs?
Tokens were eaten by a grue.
Our moods did a full 180 from a few weeks prior. Instead of feeling frustration when I see that login failed error, I now feel excitement. “I have just the thing!” I proclaim, and off I go to reset the tokens before anyone else notices and beats me to it.
Down came the rain and washed the tokens out. Then, I shot them.
We successfully turned a real headache into a fun experience. Morale went up. And a happy team is a productive team!
Tokens fed through a detokenizer.
I’m going to look for other places where joy can replace annoyance. Maybe you can do the same?
You maniacs! You blew them tokens up! Damn you! Damn you all to heeeeeell!