I see programming as an extended application of problem solving, and problem solving is just a different view on self-learning. Encouraging self-learning makes a team skillful and robust.

February 12, 2021 · 2 min


I once worked at a startup where the developers were regularly ignored. Try as we might to bring in new perspectives and experts, everything was dismissed. It eventually fell apart with the entire team leaving. This is an example of climate, and a highly toxic one.

February 12, 2021 · 3 min

Motivation and Goals

I come from the world of startups. Companies with interesting products fail every day. Despite novel products, customers are disinterested and avoidant. In software, unit tests are widely acknowledged to be good practice. However, few developers write them. These two cases are prime examples of motivation failures.

February 12, 2021 · 2 min

Practice & Feedback

Repeatedly explaining some idea without perceived progress is frustrating for both the teacher and student. Ideas feel compelling and actionable, but remember, knowledge is both declarative and procedural. Thus, feedback and practice are two halves of one process. Feedback is not effective without an opportunity to practice.

February 12, 2021 · 2 min

Knowledge Organization

Think back to the first post on mastery. Expert blindspot is caused by information obvious to the master and imperceptible to the student, causing both sides to be baffled by the behavior of the other. This can be an issue with knowledge organization.

February 12, 2021 · 2 min

Prior Knowledge

Every student views new information through the lens of prior knowledge. In fact, some researchers suggest that learning requires connecting new information to what we already know. Either way, more connections leads to improved recall and utility.

February 12, 2021 · 2 min

Knowledge Types and Mastery

Defn: Mastery - a high degree of competence in a particular area.

February 12, 2021 · 4 min

Learning Principles

Communication is hard. We’ve all (probably) experienced situations where our words fall flat; where repeated explanation just doesn’t seem to create understanding. In this situation, you are an educator. Learning and teaching are two views of the same process. However, those views don’t always line up. Each individual’s past experiences, goals, subject mastery, learning habits, and the environment can all cause disconnects. Not just these qualities in students, but in the teacher as well.

February 12, 2021 · 2 min

System Language

The Language of the System by Rick Hickey is an illuminating talk about why systems differ from programs. It provides a clear framework for understanding and addressing the differences. I believe these same ideas underpin some of the recent movements in software design philosophy. Let’s explore.

September 4, 2020 · 6 min

Test Api In Practice

A friend of mine, Paul Spoon, wrote a delightful article about using the Anti-Corruption Layer pattern as a tool for more stable tests. I tried the pattern with skepticism, and will now never go back. Let’s take a brief look at the pattern then dive into the benefits I’ve experienced.

August 21, 2020 · 6 min