One of the classic engineer mistakes is the belief that we can do anything. We understand the basics of electricity, we bend computers to our will, and anything else, well, seriously... how hard could it be? We're Smart.
And we are a pretty smart bunch, both developers, engineers, and those in similar fields. We can figure out nearly anything, given time. The trap we need to carefully avoid is believing what our mother's believe about us: that we can do anything.
Once you step back, it's pretty easy to see. Being an expert car mechanic doesn't make you a brilliant brain surgeon. Or vice versa. In other words, expertise doesn't map quite as well as most of us like to think it does. (There's a great lesson to be learned here about why we should show our software to our customers frequently, but I'll leave that for another day.)
This is why learning new things can be so frustrating. We work our way up the ladder in one area, become very competent, then something new comes along, and we're suddenly stupid again. I know that I really don't like feeling stupid, and avoiding feeling stupid is a very natural response. But it's an urge we've got to fight.
The Dreyfus Model of Skills Acquisition is something I learned about from Andy Hunt. He talks about it a bit in his book Pragmatic Thinking and Learning: Refactor Your Wetware and in a number of his related talks.
The Dreyfus model tells us that when we learn something new, we require steps. Think about a recipe book. The measurements are in very precise quantities, and we need that level of direction as beginners.
As we progress as cooks, we move on to "season to taste." Think of Emerill. Does he measure with teaspoons?
We do the same with technology. As we advance, we stop following steps and learn to move with more freedom and fewer rules. One of the harder things for an expert to do is to learn how to translate their vast experience back down into steps for a beginner. It's usually quicker for them to just do the work themselves instead of explaining how the work should be done.
What does this have to do with stupidity and feeling foolish? Learning a new technology and skill always pulls us off our sure footing, and moves us back to a level of requiring steps. Our pride chafes against the unfamiliar restraints. We're smart! Get out of our way and just let us work!
The biggest deterrent to your career is that impulse. Never be the developer who uses the exact same toolkit for the rest of your career. If you don't learn how to improve your craft, and your toolset, every year, then you've given up. You've settled for mediocrity, and the relative safety of working within your area of expertise.
Stretch out this week... find something new, something that takes you outside of your comfort zone. Embrace your inner stupid!
Here are a few ideas to get you started!
How do you embrace your inner stupid?