So, You Want To Master A Language…
Out Of Date Warning
Languages change. Perspectives are different. Ideas move on. This article was published on February 26, 2013 which is more than two years ago. It may be out of date. You should verify that technical information in this article is still current before relying upon it for your own purposes.
Malcom Gladwell believes that greatness and mastry of anything requires 10,000 hours of experience with it. Thankfully, this is not necessarily true: it’s possible to master a subject with a far lower time investment. Questions about the quality and the types of involvement we have with a particular subject helps determine how quickly we can master it.
Most developers want to master the language(s) they use daily. They seek out solutions and answers to their problems, and they look for new ways to challenge themselves. When starting on a new language, there are a few things that you can do to help you master the subject in a shorter time than 10,000 hours.
Spend time writing code in that language
This concept may seem like an obvious one but it’s also one of the most overlooked. In learning a language, nothing substitutes for actually practicing in it.
Why do I think people overlook this? Because people like to take shortcuts when it comes to mastery of a subject. They want a “magic bullet” and so they buy books, go to conferences, read articles and blog posts. But they don’t sit down and write code. Writing code is the single most effective way to master a language. It is, thankfully, not the only way to get better at a language, though.
Spend time teaching others about the language
To teach a subject is the best way to understand just how much you’ve learned. Amy Hoy will tell you that she began writing about Ruby on Rails very early in her learning process. The reason that I started my blog so many years ago was because I wanted to help my own learning; writing down my thoughts helped me clarify exactly what I thought and why.
Spend some time writing about the language you’re working to master. Ask questions, but answer other people’s questions too. Speak. Show someone something that you’ve recently learned. By teaching another person, you improve your own mastery and further cement the concepts learned through your research and code writing process.
Contribute to the language
This doesn’t mean that you have to learn C or contribute to the language by fixing bugs in the language itself (though if you’re capable of doing so, this is a great thing to help master a language).
There are many ways to contribute to a language, from documenting features of the language for the official documentation, to writing code that ends up in frameworks and libraries for the language. It also has the side effect of raising your profile in a language, while encouraging you to learn more about the language.
Re-solve problems in the language
Developers don’t often like to solve the same problem twice, but when looking to master a new language or a new aspect of a language, solving problems previously solved is often a great way to learn.
Implement fizz-buzz or the Fibonacci sequence in another language. Rewrite a library you use in the language you’re learning. These are great ways to take a problem you already understand and express the solution in another language’s paradigm.
Engage in training and reading about the language
Once you have a basic level of knowledge, you can take advantage of books, conferences and classes on a particular subject. Regardless of what language you’re learning, there’s always a class or conference for you. PHP developers are lucky to have conferences like php[tek], Day Camp 4 Developers and Lone Star PHP. There are great books, like PHP and MySQL Web Development
No matter the language, there will always be classes, conferences and books that help you master the language.