Dreyfus Model: More thoughts
Date: 2009-08-10 20:36:51

Since http://www.markhneedham.com/blog/2009/07/18/book-club-the-dreyfus-model-stuart-and-hubert-dreyfus/[we discussed the Dreyfus Model in book club] a few weeks ago  I've noticed that I'm more aware of my own level of skill at different tasks and references to the model appear more frequent at least amongst my colleagues.

These are some of the things I've been thinking about:

== How do we use the model?

Alan Skorks has an interesting post where he discusses http://www.skorks.com/2009/08/building-software-development-expertise-using-the-dreyfus-model/[the role of the Dreyfus Model in helping to build software development expertise] concluding that it doesn't help very much in developing expertise within a team.

In http://www.markhneedham.com/blog/2008/10/06/pragmatic-learning-and-thinking-book-review/[Pragmatic Learning and Thinking]  Andy Hunt suggested that one way to make use of the Dreyfus Model is to analyse the skill level of people that we interact with and then adjust the way we present information to them accordingly which I think is a good idea but requires a reasonable amount of skill to do.

I've found that it's actually quite revealing to just analyse your own level of skill and I hadn't realised how many things I am a novice at and just rely on a series of steps/instructions to make any progress and get quite frustrated when one of those steps doesn't work because I have don't yet have the ability to problem solve effectively in that area.

I had an example of this a few weeks when trying to port our code from Subversion to Mercurial using http://bitbucket.org/durin42/hgsubversion/wiki/Home[hgsubversion] and struggled to work out how to get it to work, in particular with the fact that the process always failed at the same revision with no real indication (that I could understand at least) of why that had happened.

I am a novice with regards to doing this. I was just following the instructions and since I don't have any knowledge of the hgsubversion code base or even of Python I wasn't able to progress much further.

In this case though there is an argument that *even if we are not skilled at a particular task we still might be able to make use of a higher level of skill with problem solving in general* to try and infer why something might not be working as expected.

Recognising which other skills might be useful to us when we are struggling with a new skill is perhaps a skill in itself and in this case http://intwoplacesatonce.com/[Dave] was able to do this more effectively than I was by suggesting different ideas to try based on his understanding of what probably happened during the porting process.

This allowed us to progress further even though we weren't successful in getting it to work for the moment.

== It's ok to be a novice at some things

Having recognised that I am a novice at quite a number of different things I was questioning whether I should be trying to improve in all those areas that I had identified.

Discussing this with some colleagues though we came to the conclusion that there are so many different areas of skill in software development that there's bound to be areas where we are going to be novice and if we don't use those skills that frequently perhaps it's fine that we don't progress beyond that stage.

For more core technical skills it's more important to raise our level although I think it might be difficult to identify which skills are important and which less so if we are a novice!

There seems to be potentially some conflict here with http://jamescrisp.org/2009/08/06/now-discover-your-strengths-and-strengthfinder/[Marcus Buckingham's idea of focusing on your strengths] if our strengths aren't aligned with the most important skills for software development.

On the other hand there are so many different areas of the field that it's quite likely that something we're good at will be important.

== Experts and intuition

The way that those at the expert level work a bit differently to those at other levels is that they rely mostly on intuition when working out what they need to do but I think that there might be a bit of a trap here in that we assume we are an expert at something if we are unable to explain to someone else how or why we do it.

Although teaching a skill to someone else is a different skill than knowing the skill yourself, I think there is some overlap between them.

I have often found that when you try to explain something to someone else you are forced to really work out what you actually know around this area.

I think we probably http://www.markhneedham.com/blog/2009/04/21/learning-through-teaching/[learn more from teaching a skill to someone else] than via any other learning approach and I currently measure my understanding of something based on whether I can explain it to someone else. If I can't then I don't know it as well as I thought.

The inability to explain something might indicate that we are an expert working by intuition but it might also indicate that we aren't as skilled as we'd like to believe.

Justin Kruger and David Dunning's paper titled http://www.apa.org/journals/features/psp7761121.pdf[Unskilled and Unaware of it], which discusses how people are liable to overrate their own ability and are even more likely to do this the less skilled they actually are, seems to provide some evidence that this theory might be true.

From my understanding of the Dreyfus model one would need to have gone through the previous levels before reaching the expert level so perhaps the perception of expertise wouldn't actually happen for a real expert.