Just read an interesting article in Scientific American online on the topic of how expertise is developed. Any fragment is just that, but here's one that suits my ends:
Ericsson argues that what matters is not experience per se but "effortful study," which entails continually tackling challenges that lie just beyond one's competence. That is why it is possible for enthusiasts to spend tens of thousands of hours playing chess or golf or a musical instrument without ever advancing beyond the amateur level and why a properly trained student can overtake them in a relatively short time. It is interesting to note that time spent playing chess, even in tournaments, appears to contribute less than such study to a player's progress; the main training value of such games is to point up weaknesses for future study.
As one who has spent "tens of thousands of hours" programming and not getting particularly better... AND as one who has from time to time taken leaps forward in my ability, I suspect that there are lessons to be learned for those wishing to improve computer science education and software development practice, whether at the company, team or personal level. I further suspect that that TDD and pair programming are two pieces of the puzzle that lead to programmers doing more "effortful study" in their work.
Article: http://www.sciam.com/article.cfm?articleID=00010347-101C-14C1-8F9E83414B7F4945
Great post Pat. Thanks.
Posted by: Dave Hoover | September 20, 2006 at 11:33 AM