Published on 29 April 2020
"The first rule of the Dunning Kruger club is that you have no idea that you have joined it. The second rule is that you can join it at any point during your career. It can happen pretty much whenever you learn something new."
The Dunning Kruger effect is something that most craftsmen (including programmers) have come across in their own pursuit of knowledge. It's a particular kind of cognitive bias, where novices greatly overestimate their own abilities. It happens to everyone - however it is in the best interest of the craftsman himself to understand it and get over it and also in the best interest of the organisation to facilitate working through the "Dunning Kruger club".
The opening quote of this article comes from my friend and colleague Krzysztof (it was originally in Polish, the translation is mine). I've been reminded again of my first few days at work, just as I started my journey to becoming a "real" programmer, as opposed to just someone coding projects on the side.
The story goes like this. When I first joined the company, I was rather critical of React. I should note that most people with whom I worked were already veterans, both with React and with JS as a whole. At the time, I had just learned this cool new framework called Vue and I thought it was superior to React in every single way. While most of my new colleagues joked or dismissed the idea, he suggested I do a short training to teach him, and other interested people, what I thought was so great about it.
I spent a day preparing that training. It was not complicated, it was not very well thought through — but it was a way to share some of my knowledge with the team and it gave me the reputation of being the "Vue guy" in an organisation that mostly worked with React. It also noted me down as a bit of a bratty know-it-all from the get-go — but as you'll learn later that is not necessarily a bad thing. And besides, it went away rather quick.
Let me be absolutely clear about one thing though: the Dunning Kruger club is not a place you want to be at too often, and not for an extended period of time - you want to identify that you're there and get out as soon as possible.
There's a very powerful aspect to conversation, speech, or even more generally, the coherent verbal formulation of thoughts. It's been recognised from the very beginning of recorded human history, in myths and stories. In the Mesopotamian creation myth Enuma Elish one of the most powerful aspects of Marduk, the king of the gods, is that he can "speak magic words". In Genesis, God created the world by speaking it into existence. Similarly in the Bible, the famous and famously difficult to grasp first verse of the Gospel of John says
In the beginning was the Word, and the Word was with God, and the Word was God.
The bottom line is — what you think does not generally matter until you get it out somehow. It can be on a piece of paper, or through talking to another person. But until you do it, it will remain in your head and misguide you into believing you might understand something you don't. The very process of speaking — and the process of formulating what you want to say that accompanies it — is what's going to make your journey through the Dunning Kruger club that much more easy.
This was, unknowingly at the time, what the process of preparing and presenting the Vue training was for me and what got me through the Dunning Kruger club much more quickly. By working through the training, rehearsing my explanations and finally taking questions at the end I realised what I was missing, and ultimately, what I still needed to learn.
"If you can't explain it simply, you probably don't understand it," is something Einstein probably never said but nevertheless, the sentence is quite true. Similarly, a creation that exists in an artist's mind is worthless until it is brought out to the world with the work of a pen, brush or chisel.
I noticed that people quite like to prove other people wrong. I know I do — and I have no reason to assume others are different. There's a trick I employ sometimes when I want to learn something from an expert — especially one who is really good at his craft but not necessarily willing or able to share it. I call this "tactical overconfidence".
When you talk to someone with whom you don't necessarily disagree, feign such disagreement and total belief in an opposing side in the attempt to get out the arguments.
The trick is deceptively simple to describe but quite difficult to execute. It requires some guts and self-control. You do not want your "opponent" to just give up on the idea of trying to convince you — but instead make it difficult so that the simplest and most persuasive arguments are forced out and articulated.
Tactical overconfidence in combination with an open mind and actual (even though concealed) humility is a powerful tool to further your own understanding and get out of the Dunning Kruger club all the faster.
Finally, there's one principle that your organisation can adopt that will facilitate getting your junior developers through the Dunning Kruger club much faster. And it comes from the timeless Rule of Saint Benedict, chapter 3:
And we have thus said that all are to be called to council because it is often to a junior that the Lord reveals what is best.
Noting that this document was published 1504 years ago, we should consider what it means in a more modern interpretation.
My understanding is very simple — you want to let your juniors in on the action. It's always nice to hear a well structured and informative presentation given by a veteran developer or a senior technical expert. But it is also very important to give the floor to the less experienced and let them tell what they learned too.
First, the insight of a junior is invaluable because he has a fresh eye that may yet be untainted by routine and scarred by the more traumatic parts of a programmer's job. Such insights might not always be valuable for a senior — but as a senior when you see a neophyte misunderstand things, the very fact that he is able to express his thoughts without some kind of "beginner's shame" lets you know about them — and gives you the ability to correct or explain things.
At my company we do a weekly knowledge sharing session — a fifteen minute presentation (almost) every Thursday before lunch where anyone is invited to speak about anything he or she likes. Usually these are topics about something that one might have learned recently. They do not always concern programming — mostly they do, but we've had presentations about psychology, mental illnesses or even beekeeping.
Such sessions are really useful for beginners, because afterwards they usually will receive feedback from the more experienced about what they did well and what they could improve. Usually those sessions also generate really interesting discussions that last throughout the lunch break and sometimes even until the end of the day.
After the Dunning Kruger club comes the valley of unknowing — the point where you realise you don't know anything but start to slowly realise what you still need to learn. It's very important that you do not fall into any gumption traps as you continue on this journey, but instead talk it out to understand what you know and what you don't. Use tactical overconfidence to extract useful bits of knowledge from your surroundings and try to facilitate open exchange of ideas in your organisation.
And when you do, you will realise that the Dunning Kruger club is not actually anything to fear.