Categories
Programming Psychology

The Dreyfus Model Mistake in Software Development

I have recently been reading in more detail about The Dreyfus Model, which was originally based on a study of how students acquire skills. This model is often used to describe software development, very often alongside the Dunning-Kruger effect, but in our enthusiasm to apply these studies to software development, we have made a fundamental mistake.

Before I explain the mistake, here is a quick refresher to provide some background.

The Dreyfus Model Quickly

The Dreyfus Model was proposed in 1980 by Stuart and Hubert Dreyfus. It describes how you transition through a possible five-stages of competence: Novice, Advanced Beginner, Competent, Proficient and Expert.

The full model is described under the title:

“A Five-Stage Model of the Mental Activities Involved in Directed Skill Acquisition”

The Dunning-Kruger Effect Quickly

Also known as second-order incompetence, The Dunning_Kruger effect was proposed in 1999 by David Dunning and Justin Kruger. It describes how unskilled individuals can mistakenly believe they have above-average abilities. It also describes how actual competence can weaken self-confidence.

The full theory is described under the title:

“Unskilled and Unaware of It: How Difficulties in Recognizing One’s Own Incompetence Lead to Inflated Self-Assessments”

So what is the big mistake?

When we apply these two studies to software development, we tend to do it as a whole. This is the mistake. I believe that The Dreyfus Model applies on a per-skill basis. You can be a novice at relational data-stores, but competent at restful services. You have a different level of competence for each technology or practice or principle that you apply to software development.

Why does this matter? When you form a software team, you very often end up with a technical lead who is held in high regard as a general “Expert Software Developer”, but as I’ve mentioned, this is a mistake as there will be areas where they may well be competent, proficient or even expert – but also many areas where they are a novice.

If your technical lead is riding roughshod over developers who are actually more competent in specific areas, you end up making the wrong decisions as a team.

The Dunning-Kruger Effect is slightly different. I believe there is an epiphany with this theory that leads to a shift in awareness. If you don’t know anything about The Dunning-Kruger Effect, I believe it is possible to suffer the effect on a per-skill basis. Once you become aware of the study and realise how you have been a good example of second-order incompetence, I believe that you will be more cautious in estimating your ability.

So write down the particular skills that are relevant to a given task and try to plot your position in the five levels of competency – whilst bearing in mind that you may be exhibiting The Dunning-Kruger Effect and don’t get caught in the myth of the “Expert Software Developer” generalisation.