Have you heard about the Dunning-Kruger effect? The definition of Wikipedia is:
The Dunning-Kruger effect is an example of cognitive bias in which “people reach erroneous conclusions and make unfortunate choices, but their incompetence robs them of the metacognitive ability to realize it”. They therefore suffer an illusory superiority, rating their own ability as above average. [...]
They hypothesized that with a typical skill which humans may possess in greater or lesser degree,
- Incompetent individuals tend to overestimate their own level of skill.
- Incompetent individuals fail to recognize genuine skill in others.
- Incompetent individuals fail to recognize the extremity of their inadequacy.
- If they can be trained to substantially improve their own skill level, these individuals can recognize and acknowledge their own previous lack of skill.
Have you in mind some of your acquaintances? Maybe, some of your colleagues (current or past)? The ones who probably take decisions too quickly, because they are sure that they have the right answer. I like this picture from Kathy Sierra & Dan Russell.
But, what about you? Are you open minded about every subjects? Do you ask yourself whether you are a good programmer? In my opinion, the Dunning-Kruger means: you are competent when you know that you don’t have the solution to a problem but only one of the possible ones. I’ve found these tables and I just give you a sample here:
I can’t write that I disagree with the levels 0, 1, 2 or 3. I have to admit that these tables can be useful to have an overview of skills but, the problem is: where is level 4? and the next ones? How can we say that there’s nothing more to learn? People who reach the “log(n)” step are not incompetent, it’s sure. But are they competent? I don’t make a black or white choice about competency.
Developers often think that they learn what to do in a specific situation, but in fact, they have learnt from their previous mistakes: they just know what NOT to do. For sample, when you smell bad codes, it’s because you know how not to code.
To finish this post, this is a great answer from Adam Davis found on Stackoverflow:
A good programmer understands that that they have to continue to learn and grow. They strive to do their best at every effort, admit to failures and learn from them.
They are extraordinarily communicative. Not only are they able to explain complex technical terms to a layperson, but they go out of their way to act as devil’s advocate to their own idea to make sure they’re giving the best options to their client.
The best programmers know and accept that there is more than one way to do things, that not every problem is a nail, and that because there is always a better way to do something than how they were planning on they constantly seek to learn new techniques, technologies, and understanding.
A good programmer loves to program, and would do so in their spare time even if they already spend 80+ hours a week programming.
A good programmer knows that she/he is not a great programmer. Truly great programmers do not exist, there are only those who claim to be great, and those who know they are not great.
-Adam
And you, what do you think about great developers?


Comments 7
a lot of thoughtworks programmers spring to mind here
Posted 30 Apr 2009 at 12:25 pm ¶Hello Zynasis,
Posted 30 Apr 2009 at 5:02 pm ¶I like reading Martin Fowler‘papers, the Chief Scientist of Thoughtworks. I currently read his first book: .Analysis Patterns: Reusable Object Models. I hope I can take time to write a review of it on my blog soon. His popular book, Refactoring: Improving the Design of Existing Code, is really great too!
Thank you for your comment.
Coderfriendly
Your use of pretty images, charts, and quotes from prominent web sites has convinced me of the competency of your remarks… or did I miss the point of your article? (jk)
In all seriousness, it seems in some parts that you are arguing a negative correlation between confidence and competence (especially the Darwin quote on the wikipedia page you linked). More likely I would say there no correlation. What is often observed is either confidence or arrogance. Arrogance is confidence plus incompetence.
Posted 30 Apr 2009 at 10:20 pm ¶Hello Danno Ferrin,
). And so, I think that your joke is judicious.
Posted 01 May 2009 at 1:29 am ¶I admit that I probably don’t use the right word when I write “competency” (maybe, the fact that english is not my native language can put me in trouble sometimes
Your remark is right: we’ve to distinguish arrogance and confidence. So, in my next posts, I’ll try to be more precise when I’ll use specific words.
I hope I’ll read another comment from you in the future. Thank you for this correction.
Coder-friendly
And I thought unfounded confidence was from a neurological disorder…
Posted 09 Jan 2010 at 4:01 pm ¶Hi Alex,
A neurological disorder? Can you be more explicit?
Coderfriendly
Posted 09 Jan 2010 at 4:31 pm ¶In one case, I had heard (unconfirmed) that our most arrogant and incompetent co-worker had Lyme disease. I don’t remember the specific symptoms, but I recall that it was plausible.
The picture from Kathy and Dan is strikingly accurate to my experience with him.
Posted 09 Jan 2010 at 11:19 pm ¶Trackbacks & Pingbacks 1
[...] Coder-Friendly Sphere: Related [...]
Post a Comment