Kris and I were talking about this the other day, and I’m really glad he blogged it.
I’ve got a theory that the best software developers are the ones that approach their trade in the same manner that athletes do.
Great athletes all have similar traits: talent, drive, and the ability to accept constructive criticism.
I agree with Kris 100% on this analogy. It is very interesting to observe how novice developers differ from the top notch people. As Kris points out, one of the more interesting differences related to how they handle the situation of “getting stuck.” Kris says, and I firmly believe, that developers should “ask for help when you are stuck for more than 5 minutes”.
I think that timeframe is a bit short. Without struggle then people don’t learn. So, if someone is always there to rescue you after 5 minutes then that developer will become to dependent on you and soon will become a resource hog that needs to be dealt with. Instead, I would rather the the developer spend more time, and take some pre-steps before going to you and asking. Steps like, a) google search (groups and web) b) MSDN Library c) topic related books. Then, if you are still completely stuck then ask. I just think you learn more when you are researching the problem rather than jumping up at first site of an issue to scream for help. What if you are the most knowledgable person on the project, in which case, in 5 minutes who do you ask?
I don’t agree with this at all. For most of my career, I have been the most knowledgeable person in the room and you know what? I always ask for help when I get stuck. I ask quickly. I have gone down terrible rabbit holes way too many times to want to do it again. _place_holder;I find the very act of explaining my problem to someone else often helps me figure out the answer on my own. And often then other person has some excellent insight that I may have missed.
This [practice and seek learning opportunities on your own] takes time outside of your 40 hour work week and it is unpaid. So, what is the incentive? Great athletes are either paid large sums of money or they are sponsored for their time, equipment, coaches and trainers needed for them to become great and stay great. Plus, 90% of their normal work week is practice. 110% of our work week is game time because clients don’t pay for practice, they pay to get a product done for them.
I’ll tell you, the one common thread among the top developers that I have had the pleasure of knowing and working with is that they spend tons of time, outside of work, playing with new technology and learning new things. These people (formerly known as hackers before the media destroyed the meaning of the word) love to learn… love to understand… love to take things apart. They have a need to know that is insatiable. They don’t do it for the money. Money is nice. It lets you have fancy cars and such, but it isn’t the driving influence.
This may be one area where Kris’ metaphor breaks down. But perhaps it doesn’t…
If you assume Kris is talking about professional athletes then it doesn’t work and Mr. Austin may be right. Those guys (especially football players) get paid to practice. But let’s not focus only on professional athletes. What about top track and field stars? Olympic athletes? College athletes? Top prep athletes? Now I think the metaphor applies just fine.
And let’s not forget, that even NFL players work their asses off during the off season… when they aren’t getting paid… to make sure they make the team when the season rolls around again.