What model now?
The Dreyfus model of skill acquisition is used to access to level of development of competencies and skills of people who are learning something new.
The model was proposed by the Dreyfus's brothers Stuart and Hubert in 1980. They studied how people attain mastery and came up with five stages on the journey from novice to expert.
The model is applicable per skill. You are not a novice nor expert at every single skill. Chances are, you are mostly average at most things. You can be a novice basketball player, and be an expert cook. Or vice versa.
I'm quite notice at cooking. I can follow a set of clear rules, have a clear recipe. But, I don't really know what is going on.
Let's jump into the different stages.
2) Novices
When you begin to learn something new, you are a novice. You have no skill or experience. Novices are not particularly interested in learning, but they need to succeed. They need an immediate goal.
When I started to learn how to code, I wasn't interested about how the DNS worked, how HTTP requests were happening, and how a website was working. I just wanted to see a page, my HTML page appear on the browser.
Thus, novices need recipes, context-free instructions. Recipes are often used in the context of cooking, but they are useful in every domain for beginners. Do A, then do B. If X, do Y...
I'll use the example of taxes to illustrate this. I, and many others, have no idea what we are doing. You follow the government instructions. On this case, fill out your revenues for the year, on that one, fill out the number of people in your house... I don't want to learn that stuff, I just want to achieve something. Get it out of the way, and move on.
The problem with novices, and recipes is that they won't know how to react if an error occur. If the government sends me a notice telling me the numbers are wrong, I won't know what to do, unless there is another context-free recipe to help me rectify my mistake.
We also have to be careful not to overwhelm novices with too many rules. If X happens, then do Y. But if W occurs, check M, if M is A, then do W....
Too ambiguous, too hard to understand. Keep it simple. There is a balance to find.
2) Advanced beginners
The second stage on the path to mastery is the advanced beginner. Advanced beginners can start to free themselves from the recipes and rules a little bit. They can try some tasks on their own, based on their past experience, but they will have problems troubleshooting. If problems arise, they most likely won't be able to solve them on their own.
Advanced beginners don't want the big picture. They want the information fast and get things done. On his way to master a new programming language, an advanced beginner doesn't care which data structure would be the most appropriate for a particular task. Nor would she care which way to loop through an array is the most performant.
The larger context is irrelevant to them. They can start formulating some overall principles, but the big picture will probably be dismissed as not useful yet.
3) Competent
At the third stage, learners can start to fix problems on their own. They can also troubleshoot and think about new problems. They seek out and apply advice from experts. They might be described as resourceful or to have initiative.
At this stage of their journey, they can also start to mentor novices and won't annoy the experts overly much with questions. They are able to use their experience to be more autonomous.
4) Proficient
At the fourth stage, practitioners need the big picture. They can understand the larger context and need it to guide their work. They are frustrated by oversimplified information. They would be really happy if they called tech support and got a: "Is your computer turned on?".
Importantly, they are able to reflect on their performance and adjust it for next time. This sort of reflection was not available before this stage.
They are able to understand and apply maxims. Maxims are proverbial, fundamental truths that can be applied to a certain context. This is what differentiates them from recipes. For example, a novice might be hearing about Test Driven Development and that good code must be tested. The novice might want to write tests for everything, without knowing which feature to test, and how to test it. At stage 4, they would know how to apply the TDD behavior correctly.
5) Expert
At long last, you are an expert. Experts are the primary source of knowledge. Experts work from intuition. Often, they are not able to properly articulate why something works. It just feels right to them. Ever notice some professional chefs telling you to add some salt and pepper? They never mention how much. It's a touch, or a pinch, or just pouring some stuff and then stop. They know, from experience, that this is the right amount of seasoning to make a dish perfect. But they are no rules here, it completely up to the expert to know what is right in that context.
Experts also know the difference between important details and irrelevant details. They know what can be brushed aside and forgotten and what we need to focus on.
Finally, experts are painfully aware of what they don't know yet. On the contrary, novices can suffer from what is called the second order incompetence: being unskilled and being unaware of it.
Conclusion
Some closing thoughts:
It's highly unproductive to treat everybody the same. Experts and novices have a huge difference a productivity between them. Novices need to be guided. Experts don't perform well with rules. A study of airline pilots showed this. The experts wrote rules for the novices pilots to follow. The novices skills improved as a result. But when they asked the experts pilots to follow their own rules, the experts' performance actually decreased...
So, where are you on your journey to mastery?
Thank you for reading ❤️