Wednesday 28 July 2010

The Dreyfus Skill Levels

A few weeks ago I picked up a book called Pragmatic Thinking and Learning: Refactor Your Wetware by Andy Hunt of Pragmatic Programmers fame. Hunt discusses a thing called the Dreyfus model of skill acquisition, which applies on a per-activity basis to people. So you can be an expert chef and a novice windsurfer. Or vice versa.

The top level is the expert: experts write the books, give the conference addresses, get called on by governments and television producers and as practitioners have "forgotten" what they know so that it has become second nature to them. It all looks intuitive and mysterious, because you can't see the thought process.

Which you can with the novice, who needs strict instructions and has no experience or background knowledge with which to exercise judgement. Think offshore IT help desks. Next up from the novice is the advanced beginner. These people know enough not to telling what to do every time, but not so much they can sort stuff out when it goes wrong. These are the "party trick people", who know the tricks needed to do their job but not much more and who copy code from the Internet. They frequently use tools and refer to ideas that they don't really understand but can "use properly". They still need showing how to solve something, rather than being able to get a hint and figure it out from there.

Figuring out an approach to solving a problem and troubleshooting are the hallmarks of the competent. Competent people take on new problems because they will learn more by solving them. They have a fair chunk of background knowledge and can use general principles in their problem-solving. There are a couple of books on their desk, strictly utilitarian reference textbooks.

When you start reading books like The Pragmatic Programmer or How To Solve It and want to know the abstract ideas behind a subject - from theories of how food tastes to the grammar of the language compiler - and you can comfortably interpret and use maxims and rules of thumb in context, then you are at the proficient stage. There's a lot more background knowledge, not just of the technical stuff but of the wider business and social context. The proficient person hears a conversation about how someone fixed a problem on the corporate website and gets an idea about how to solve a database problem - they are operating at a much higher level of abstraction.

The news is this: forget all that stuff about "subject matter experts" and "excellence": most people are at best advanced beginners at everything. You shouldn't be surprised: how much time do you have left in a week to get really good at something that isn't your day job? And how much time do you have in your day job to learn and practice new stuff? After all the routine crap work is done?

No comments:

Post a Comment