Self-learning
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.
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.
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.
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.
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.
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.
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.
Defn: Mastery - a high degree of competence in a particular area.
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.
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.
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.