views:

473

answers:

2

How can I use the Dreyfus Model of skill acquisition specifically to improve programming skills?

+4  A: 

The Dreyfus Model fundamentals are summarized here.

  • Novice - Needs to be told exactly what to do. Very little context to base decisions off of.
  • Advanced beginner - Has more context for decisions, but still needs rigid guidelines to follow.
  • Competent - Begins to question the reasoning behind the tasks, and can see longer term consequences.
  • Proficient - Still relies on rules, but able to seperate what is most important.
  • Expert - Works mainly on intuition, except in circumstances where problems occur

As illustrated by this blog entry, it could be used to improve the right level of information you need in order to achieve a certain programming task.

By assessing your skill level on a given topic, you know if you can make decision or if you just need to follow a well-explained rule or convention.

By assessing the one's of your colleague, and you can quickly ask the right questions to your peer.

That could come in handy in code peer reviews for instance.

VonC
+1  A: 

If you already haven't, I strongly suggest you read the book Pragmatic Thinking and Learning by Andy Hunt - it does a good job explaining the Dreyfus model, specifically in the context of programming.

(The model is introduced in the second chapter (as a pretty central concept) - but I haven't read the whole book yet so I'm not sure just how much about using the model it will cover.)

One interesting notion (which is really useful to understand if you work in a team or manage one!) is that intuition starts playing a bigger role in problem solving when people become more competent. This means, among other things, that trying to force a strict set of rules concerning how one should do the job will actually bring the productivity of the experts down a few levels.

Jonik