The Meerkat Manifesto


Meerkat is a method to get people learning at the right speed by bringing together a Mentor and a Learner. It is inspired by how meerkats teach their puppies to eat scorpions. The mentor picks a project that is challenging, gives it to the learner, and waits until the learner declares defeat. Then the mentor slightly simplifies the project, and gives it back to the learner. This continues until the learner can solve the task. The Meerkat method skips ‘exercises’ (that is: problems that are simple enough for anyone to solve) because it keeps the learner stretched at all times.


The Problem

To learn optimally you need to pick a project that is right for your skill level: not too hard, not too easy.

To teach yourself anything, you pick a sequence of tasks. Common sense tells us you should do tasks of increasing complexity.

Common sense is wrong in two ways:

(1) It assumes that as novices we estimate task complexity well. You judge complexity (or a proxy) to order the tasks. But I have yet to see a domain where beginners make good estimations. Imagine you know no math whatsoever. How easy is it to solve a particular system of equations? Tough call.

(2) It assumes that going from easy to complex is better for learning the skill. But following this ramp guarantees that you will spend quite a bit of time on simple tasks; time that you could spend on stuff that challenges you just about right. You want to stay always at the border of your capabilities.

You may choke on a task that is too difficult, or improve slowly because you pick too easy a task. You don't know in advance, because you need skill to rate task difficulty. So we are in a predicament. What can you do as a learner?

The Solution

You just borrow that difficulty-estimation skill. From a more advanced programmer than you.

You walk pass that advanced coder and ask him to pick a task just right for you? While this might work occasionally, it generally is difficult to get a feeling for your skill level without knowing you well. And let's be honest, unless he’s invested in you getting better, the incentives aren’t there for him to spend hours thinking about that just-right task for you. You need a mentor.

Turns out that animals have similar problems training their descendants as coders have. Let's have a look at what the Meerkats do.


Meet the Meerkats

Meerkats eat scorpions. Baby meerkats need to learn to eat them too; but scorpions are tough! Parent Meerkats bring a live scorpion to their puppies, and when it's clear they cannot eat it, they maim the scorpion a bit and offer it again. If the puppy makes progress, but still struggles, more maiming ensues. A few iterations and the puppy eats the scorpion. Yummy!

For a puppy, eating a scorpion is not an easy task. This is not a problem where the solution is in front of you and you just have to walk towards it. A programmer swimming in web tutorials has only a vague idea of the desired end result: That he will be competent in that language or technology. Vague. Hard.

The puppy didn’t start eating - say - beetles to ‘train’. He could have spent weeks on beetles and not being better at actually eating scorpions. Which is the whole point, as scorpions is what’s around to eat!

How did the adult meerkats go about the problem? They started with something that was challenging even for them, and made it less challenging little by little. If they simplify too much, say with a dead scorpion, no learning happens.

The Method


The Meerkat method has three basic concepts.

Mentor: a person capable of leading others. This doesn't mean they are superhuman: you can be a so-so programmer and still lead a person who knows less than you. Both of you will come out the better for it. One can be a mentor on a particular topic, and a learner on (many!) others. The person being a learner with you today could be mentoring you on a skill they are better at than you.

Learner: a person who wants to follow a Mentor. You can be incredibly skillful in many technologies, and still play the Learner role for a new one you are learning. That is: no stigma in being a learner!

Scorpion: that is, a task at the limit of the Learner's capability. The Mentor will observe carefully how the learner goes about things; at the beginning he has little to use to prepare a first task. This doesn’t matter: the first task is something that the mentor finds demanding and interesting.

Learner: If you are learning a new technology, finding a Mentor is the fastest way to improve. Anybody can be a Mentor and a Learner at different times. On some technologies you can lead, and on others you can follow.

Learner: You need to find a project you like and a Mentor that you trust. Once you both agree you want to work together, the Mentor will give you a scorpion (see below for an example)

Mentor: You need to find a scorpion. A scorpion is a task you will give to the Learner, that is valuable/demanding for you; and more so to the Learner. You will gauge the difficulty of the task, and the skill of the Learner. The goal is to first give a task that is at the very end of his capabilities.

Learner: You try to do the task to the best of your capability. No need to pair, you can go on your own for a while. If the task feels impossibly hard, get back to the Mentor.

Mentor: Reduce scope, give a hint, or solve a bit of the task in front of the student. This is called 'maiming the scorpion'. The result is a simpler task. Be careful not to simplify too much, you want the student to still be at the border of his capability. Make a mental note on what he found to be an unsurmountable obstacle, because this will help you prepare the next task.

Both: Iterate till the task is solved.


Exercises, problems, and projects

The standard learning method

Epsilon Camp, a children's math bootcamp, makes a clear distinction between problems and exercises:

"What makes the difference between an “exercise” and a “problem” is how readily a learner can figure out how to begin when faced with the question. All learners need some exercises at all stages of learning, but it is possible to go wrong by having too few problems in the learning process. Basically one can never solve too many problems."

A project is a task that has no clear solution yet, where finding the right questions is a prerequisite to completing the task.

A lot of exercises is what you get when you attend an university course or one of the new online courses (e.g. MOOC). You don't do problems often, and full projects are even rarer. It could be that you only get to do a project at the very end of the degree, after five years of exercises.

The Meerkat method

The Meerkat method goes against more established methods, where you go bottom-up (from simple tasks to complex ones) by starting with a project. In Meerkat, you start with the most complex task that a Mentor thinks you can complete. He'll start with something that is challenging maybe even for himself. You are helping him, like the Learners in middle-ages guilds helped the Mentors.

As a learner in the Meerkat method you have fewer choices to make, and this is a good thing. You piggy-back on the Mentor’s experience to find the best path. Even if the mentor is not very good at introspection and doesn’t know how to adjust the difficulty level at first, the meerkat method will auto-calibrate with iterations.

  • No need to find the right tutorial/book/whatever. The choices are made for you.
  • You spend more time at the border of your capability.
  • You save time doing exercises that would be too easy.
  • Higher project completion rates: all projects must have a concrete output, so you will see your own progress in tangible ways.
  • You will have an easier time demonstrating progress to yourself and to others (the Mentor vouches for the Learner).
  • You will get more hands-on training than with other methods.

A possible conversation mentor-learner (the method in action)


Mentor: Predict telecom customer churn based on information about their account. The data consist of 200 predictors related to the customer account, such as the number of customer service calls, the area code, and the number of minutes, etc. We have data from 2008-2015, and want to predict 2015.

Learner: "Before, I need to make a decision that is not trivial: how do I split the data into holdout, test, and training?" (proposes two options)


Mentor: Two options: (1) Take all the available data from 2008-2015, reserve some data for a test set, and use resampling with the remainder of the samples for tuning the various models. (2) create models using the data before 2015, but tune them based on how well they fit the 2015 data. This strategy may produce overfitting. What if 2015 is very different from 2008-2014?

Learner: (Finds a compromise over the two methods on his own): "Tried a regression model with the 200 variables, didn't work great. Also tried a random forest, slightly better, not ideal. I'm stuck. Are there more specific techniques I should be using?"


Mentor: Are the predictors good for this task? Maybe this dataset doesn't contain predictors that are good enough. Try dropping predictors with zero variance. Run a PCA on the remaining continuous predictors. Rerun existing models. If that fails to improve results, try to find better predictors outside the data you have (web APIs). You can try model X, Y and Z.

Learner: (Goes off for two days and does that, finds some improvements by transforming features;also gets 20 more from web APIs). "It could be that the way I'm looking at model fit is not ideal (percentage correct). What other methods are there? And I cannot find an implementation of model Z that converges..."


Mentor: We can use ROC curves. If you need a good implementation of model Z, check this paper:"Implementing model Z the way God intended". You can try these two python libraries: Zmod, blahmod, and argmod.


Interested in becoming better with data using the Meerkat method and Chief Data Scientist / CTO mentors?