What’s the biggest challenge a cat (moonlighting as a QA engineer) faces in a startup? Is it finding bugs? Hell no! Can you guess what it is?

(drum rolls please…)

It’s JUGGLING BALLS!

When you’re but a cat who’s trying to juggle many balls on a day to day basis, you’re bound to drop not just one, but SEVERAL balls, at the same time when you’re not careful. A cat’s lack of opposable thumbs DOES NOT help, as well as the periodic grooming (i.e. licking) that is expected of a cat (cue licking sounds: lick, lick, lick); hence the many broken balls by a cat’s feet at the end of each day.

Kidding aside, that is exactly how I was as a QA engineer in a startup: in my quest to be a master juggler at the company, I consequently dropped a whole lot of balls back then, especially when grenades were randomly thrown at me and I had to handle them first, as they may blow up anytime.

Dropping balls may be a reality that some of us have to face, but when you’re trying to deliver fast, fail fast, iterate fast, EVERYTHING fast, chronic fumbles are not ideal and are actually detrimental to the company’s growth. With a multitude of tasks and ever-changing priorities, I had to figure out how to get the crucial things done, without compromising other items that were just as important, albeit not as urgent as the critical ones.

So how did I set out to solve this problem? I divided it into two activities, which I’d like to call the two P’s: Prioritizing and Pestering.

PRIORITIZING: List down tasks and decide on what is URGENT and IMPORTANT

Ever heard of the Eisenhower Matrix? If you haven’t, you should check out this short tutorial at http://www.eisenhower.me/eisenhower-matrix. This link was given to me by Murat, our CTO, and I must say it really helped in sorting out the daily mess that I faced. I had a vague remembrance of this concept back from my college days, but that was a long time ago, and hazy recollections don’t really do anything but make things a whole lot murkier IMO.

Using the concept in this matrix, I was able to segregate tasks according to urgency and importance. This matrix divides tasks into four: the first quadrant, or DO FIRST quadrant, for the most urgent and important tasks that had to be done within the day; the second, or SCHEDULE quadrant, for the equally important but less important stuff; the third, or DELEGATE quadrant, for urgent things that were urgent but less important and can be delegated to other people; and the fourth, or DON’T DO quadrant, for stuff that didn’t matter because they were not urgent nor important.

I must admit that on first glance, it didn’t seem like I had tasks that fell into the third and fourth quadrants. However, as Murat pointed out to me, I couldn’t possibly do everything myself, and I had to delegate tasks that other people could do. Also, there were other stuff that I could do much later in the week, including those that needed to be done when I was less distracted and needed a quiet environment. This realization made me trim down my list from a gargantuan 10 to a manageable 6. This is just an example, mind you; I’ll be showing a sample task list at the end of this post, just to give you a picture of my day.

Adopting the matrix may not be easy at first, but once you get into a habit of listing down and prioritizing tasks before starting your day, it will get easier and will become second nature over time.

PESTERING: Make sure your tasks are VISIBLE and SUPER ANNOYING

Now, some people may think listing down tasks is enough for them. Seeing them written down in a spreadsheet, checklist, or perhaps in project management tools such as Trello is probably sufficient for some people. Task management apps are also abundant and especially useful for teams who share tasks among the team members. There are a multitude of options available; all that is left is figuring out which one is the best fit.

However, listing them down isn’t enough for me. I’ve tried Trello, Todoist, even my phone’s calendar, but nothing seemed to work. What I needed was some sort of reminder or alarm that would appear on the screen each time I had a task that needed my full attention. Also, the tool had to be FREE (ka-ching)!

After trying out several Ubuntu alarm/reminder apps, I stumbled across notify-send, a program used to send desktop notifications. Since it was fairly simple to use, I decided to create a small bash script that would show a task in a desktop bubble every 5 minutes (to make sure that I will be sufficiently annoyed by the bubble).

How did I get it to run every five minutes? Using cron
Where did the script get the list of tasks? From a plain old .txt file
How often did I update the .txt file with the list of tasks? At least once a day (at the beginning or end of the work day)

Here’s the script, with a little explanation below it:

#!/bin/bash

eval “export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)”;
IFS=$’\n’

for line in $(cat $1); do
TIME=$(echo $line | awk ‘{print $1}’)
ALERT=$(echo $line | awk ‘{print $0}’)

echo $TIME

(( $(date +%k%M) > $TIME )) && echo yes

if (( $(date +%k%M) > $TIME )) ; then /usr/bin/notify-send $ALERT
fi

done

Here’s the cron job for the annoying script:

*/5 * * * 1-5 /home/banx/show_alerts.sh /home/banx/daily_task_list.txt

And here is a sample list of tasks:

0400 run around the house for no apparent reason
0500 jump on the human’s face to ask for food
0600 lick, lick, groom, groom
0630 nap time
0900 meow incessantly for food, then ignore it and walk away
0930 lickity lick
1000 stare intently at a blank wall to freak out the human
1030 more nap time
1200 pester human again for food

Ok, so that isn’t exactly my daily task list, it was just to give you an idea of how I listed them down in a text file.

The list gets shorter each time I am done with one task; I just remove the annoying, offending line when I am done with it. This ensures that a bubble will no longer appear for that task, and I can move on to the next item. Ideally at the end of the day, the file is empty, so no more bubbles appear and I can relax.. until the next work day.

Now I guess the question in your mind is, “Does this really work?”. It’s the most effective one so far. I still drop a few balls every now and then, but not as much as I did before. Also, you’re probably wondering why did I not go for free Ubuntu apps with more features such as Day Planner or Indicator Reminder. Well, as my tag line shows, my dream is to become a HERO in the tech industry; why not use something that would help me learn and practice my bash skills as well? After all, a tester should have as much technical know-how as possible, and it can only be achieved through research (reading) and practice (breaking). :p

I hope you got something out of this post aside from the numerous “licks”. Do you also have trouble prioritizing tasks? If so, what tools do you use, and do they burn a hole in your pocket? Do you think my little script would be useful for you? How would you modify it? (I personally think it’s a tad fugly like the code formatting in this post. Definitely needs improvement.)

Feel free to leave a comment below, or if you’ve anything to shoot me, do send a mail at lovelyb@engagespark.com. I’d be happy to hear your thoughts!

MEOWK!