I was updating my CV today when I noticed something interesting. I have been programming since 1989 and doing digital design since 1998. Then I recalled reading somewhere before that it takes 10 years of doing something to be any good at it. From my personal experiences, I would have to agree with that statement.
I had spent about 13 years of learning to play the piano before reaching my peak and becoming really good at it (even though I kind of suck now because I've been out of practice for almost a decade). At my peak, I dare to say that I would have made a fairly decent concert pianist, even if I don't become a great one. If I wanted to return to my peak level, it would probably take me about 3 years worth of practice to get there.
As for my programming, I have spent about a dozen years or so actively doing it and perfecting my skills. As I'm still constantly forced to work with software all the time, I have not lost them. I can pretty much write any type of software now, from machine code to massive management tools. 3D graphics used to be my Achilles heel but no more, since learning how to do it with my last Java project. And my churn rate is about 10,000 lines a week. So, that's not too shabby.
Although I've been working closely with microprocessors for almost 10 years, I have only actually been designing them for about 6 years. So, I am still in the process of learning and improving. I can see my architectures improving with each revision of microprocessor that I design. So, I still have several years more of training and practice to go through before actually reaching the peak level. I've certainly mastered in-order pipelines, some more advanced stuff like caching and branch prediction. I'm currently working on multi-core designs. However, I have no clue about out-of-order execution as yet.
So, in conclusion, I would have to agree that it will probably take at least 10 years of learning and practice to be any good at anything. And I only have my parents to thank for giving me the necessary opportunities and exposure at a very young age to different things. Now, I'll need to figure out what will fancy me for the next stage of my personal development.
** image from headrush.typepad.com **
PS. I do think that there's at least *one* skill that I'll never be able to master even with a lifetime of learning and practice. That is the ability to understand women! Haha!