May 04, 2020
It’s easy to overestimate our abilities. Not even a 10X developer can know everything. To succeed in software development, it’s important to maintain your humility and avoid illusions of competence.
This article originally published in my newsletter, The Solution
“The way you focus your intelligence is more important than how much intelligence you have.”
-Steve McConnell, Code Complete
Do you know what you think you know?
Are you sure?
In Make It Stick, the authors describe the The Dunning-Kruger effect, a phenomenon in which “incompetent people overestimate their own competence and, failing to sense a mismatch between their performance and what is desirable, see no need to try to improve.”
I’m not suggesting you are incompetent.
It’s easy to fall into the trap of overestimating our abilities. As we’ll see, we’re hardwired to do it.
In Code Complete, Steve McConnell humorously outlines the importance of humility in software development:
The people who are best at programming are the people who realize how small their brains are. They are humble. The people who are the worst at programming are the people who refuse to accept the fact that their brains aren’t equal to the task. Their egos keep them from being great programmers. The more you learn to compensate for your small brain, the better a programmer you’ll be. The more humble you are, the faster you’ll improve.
Programming and problem solving are both metacognitive activities.
To excel, we need self-awareness.
We need to think about our thinking.
This is true for learning as well.
In Make It Stick, the authors write:
Each of us is an astounding bundle of perceptual and cognitive abilities, coexisting with the seeds of our own undoing. When it comes to learning, what we choose to do is guided by our judgments of what works and what doesn’t, and we are easily misled.
Why are we easily misled? The authors outline several common illusions of competence:
That’s a lot to think about!
How do we avoid illusions of competence?
“If it’s important, it needs to be practiced, and practiced again.”
In A Mind for Numbers, Barbara Oakley cautions us:
Beware—a common illusion of competence is to continue practicing a technique you know, simply because it’s easy and it feels good to successfully solve problems.
Okay, so what is the best way to practice?
The last word you want to hear, especially if you’re a developer.
Testing forces us to retrieve information from memory and situate it in new contexts.
Don’t worry, though, the authors of Make It Stick outline several other tools and habits for calibrating your judgment, the first being closely related to testing:
In A Mind for Numbers, Barbara Oakley reinforces the importance of simulation:
You want your brain to become used to the idea that just knowing how to use a particular problem-solving technique isn’t enough—you also need to know when to use it.
We can supplement the above list with several ways for maintaining intellectual honesty in software development, as outlined by Steve McConnell in Code Complete:
In many ways, the items on this list all relate to the first, which is also closely related to the Dunning-Kruger effect and (sometimes willful) illusions of competence and knowing. McConnell offers some sage advice:
How can you learn anything new if you pretend that you know everything already? You’d be better off pretending that you don’t know anything. Listen to people’s explanations, learn something new from them, and assess whether they know what they are talking about.
In other words: be humble.
Want to level up your problem solving skills? I write a weekly newsletter about programming, problem solving and lifelong learning. Join now