Last month I wrote an article about how years of development experience is a poor metric for evaluating software developer quality. I concluded that…
If I had to pick one trait to filter for, it would be self-learning, i.e. evidence that the developer actively chooses to self-learn offline and online and then applies that learning to their own side projects.
Lately I can’t stop thinking about ‘what makes a developer a great developer’. Something’s been bugging me about choosing self-learning as the most important trait. I don’t take back that self-learning is the most important trait mind you. I’ve just had a gnawing suspicion that the statement needs a (few) caveat(s).
So, what’s the fundamental problem with self-learning?
You don’t know what you don’t know.
This is a critical obstacle to growth as a developer.
He says that in his early days as a bowler, he developed a technique that didn’t involve putting his fingers in the bowling ball. This technique worked well – to a point. He was able to improve to a certain level in the league that he played, scoring up to 160 a game. Until he stopped improving. An old manager eventually told him what it would take to improve:
“Thereâs nothing you can do to improve as long as you keep bowling like that. Youâve maxed out. If you want to get better, youâre going to have to learn to bowl properly. You need a different ball, a different style of throwing it, and you need to put your fingers in it like a big boy. And the worst part is that youâre going to get way worse before you get better, and it will be a good bit of time before you get back to and surpass your current average.”
The concept of an expert beginner is elaborated from this observation:
The Expert Beginner has perfected the craft of bowling a 160 out of 300 possible points by doing exactly the same thing week in and week out with no significant deviations from routine or desire to experiment.
The self-learning expert beginner can find themselves in a position where they do ‘good enough’ and even ‘better than most’ but not ‘truly great’. By not knowing and/or actively avoiding their own knowledge gaps, the expert beginner misses out on discovering what they don’t know. This is a huge inhibitor to growth.
It’s not unusual to see expert beginners inheriting positions of authority. After all, they perform stronger than pure beginners, creating a perception of expertise.
How do you avoid the expert beginner trap?
Recognize that self-learning doesn’t mean learning by yourself.
Self-learning means actively seeking out and exposing yourself to different knowledge and beliefs than your own.
Attend events in your local software development community. Attend national and international events in the software development community (and bring that knowledge back to your local community!). Complete College and University level diploma and degree programs in your field, maybe even do a masters part-time, as these programs by definition ’round out your knowledge and diversify your experience’. Identify good mentors online and offline. Keep working on your mathematics background. Try to understand technical opinions held by developers that you might (at least initially) disagree with for whatever reason.
Actively try to seek out what you don’t know yet, and especially why those things may be important.