I recently watched a video on YouTube titled, “Making Badass Developers”, which was uploaded in 2015. In the video, O’Reilly Publishing’s author Kathy Sierra presented her thoughts on learning. Her use of sarcasm in the presentation slide deck enhanced the motivational tone of her speech. The video starts off with Sierra explaining how humans (which we all are – we’re not unicorns or humanoids), have “extremely scarce, easily depleted cognitive resources.” Sierra claims all books, college courses, and technical training treat you as a humanoid, not considering our valuable cognitive resources as easily depleting.
Our cognitive processing and willpower come from one pool of resources. The aim is to reduce “cognitive leaks” by avoiding the needless use of willpower when possible. What are some examples of these leaks? Your boss (or client) asks you to complete a project or task in an unreasonable amount of time, and you say “yes” when you should say “no”. Losing your television remote and wasting time looking for it. Having to fix 43 bugs in your code all at once. It’s all the little things that get to you every day.
Sierra’s learning model is depicted via the use of a Kanban-style board. Each of the 3 sections, A, B, and C, represent a progressive tier of expertise. The A board is titled, “Can’t do (but need to)”, B is “Can do with effort”, and C is “Mastered (reliable/automatic)”. The goal is to get a new skill from board A to board C quickly. However, there are three main problems that cause people to not make progress.
Problem 1: You just don’t get better. People tend to experience a ‘pile-up’ of tasks on board B, causing too many cognitive resources to be drained to ever move skills to board C. This implies you are trying to learn too much at once.
Solution: Keep more new skills on board A if possible. Break up what you have to learn into smaller pieces or sub-skills/tasks. Take them directly to board C using this method. Sierra states, “half-a-skill beats a half-assed skill”. A way to identify if a new skill is too big to take on at once is to assess whether you can learn it in a maximum of 3 sessions at a maximum of 45-90 minutes per session. If you can’t do that, then the task is too big.
Problem 2: You make progress but don’t get any better. Usually, something has made it to C but is not high-quality, or outdated. The skill may be unconsciously performed at this point, despite the fact it is not a worthwhile skill. It is difficult to let a mastered skill go, even when it’s useless.
Solution: Here, Sierra states, “practice does NOT make perfect. Practice makes permanent.” This means the longer you practice at being crappy at some skill, the longer you’ll stay crappy (or a beginner) at it. Recheck and refine the skills in C to ensure they are still relevant.
Problem 3: It takes too damn long to make progress. We don’t have enough time to learn. Fixing this is where the magic happens.
Solution: Bypass board B where you can. Speed up the transition from board A to board B to board C for the rest. Match up with an expert in the skill you wish to learn. Self-tutor while using the expert to validate whether you are wrong or right while learning the task. Use perceptual learning, aka hands-on. Sierra says, “brains are brilliant at pattern-matching when we aren’t even cognitively aware of it. We must use high-quality, very high-quantity examples to learn from. It takes 200-300 samples of exposure to a skill in a short amount of time to master it.”
Sierra advocates for us, as a community, to fix this situation and build a big library of small, diverse, excellent examples, in the hundreds. A few examples of this library (at least for developers) include Rosetta Code (a programming chrestomathy), Code Codex (a free code wiki), and Project Euler (a series of challenging mathematical/computer programing problems). I couldn’t find anything similar online for networking or systems administration. Perhaps there’s an opportunity for some clever, dedicated individual, or group, to make that happen. It could even be you or I…
