When Casals (then age 93) was asked why he continued to practice the cello three hours a day, he replied, “I’m beginning to notice some improvement.”
Much of what we do as software developers requires an immense amount of knowledge and training. We certainly weren’t born knowing how to program. So how do we go about gaining the required knowledge and skills required in this industry?
These days it seems like there’s a new language, framework, or technology coming out every single day. It can be quite daunting. I find it’s best to pick a handful of items (languages, technologies, or frameworks) to focus on and really work to understand them thoroughly.
How to learn?
We each seem to learn in a different way. It can be a struggle to learn if you’re now enjoying what you’re doing.
Books can be a great source for learning. I’ve always found the Wrox Professional series to be quite useful as a resource. They can be quite effective if you really want to learn the ins and outs for a particular language.
When working to better understand design patterns I first turned to the Gang-of-Four book, but found it to be quite dry and too text-book for my liking. Thankfully I was pointed towards the Head First Design Patterns offering from O’Reilly. Much better.
Videos from YouTube as well as services such as Pluralsight can be a fantastic resource. Most recently I was in need of learning React and Redux and turned to Pluralsight. Thankfully, Cory House has a fantastic course that helped me get up to speed quite quickly. Big thanks to Cory!
How to grow?
Push beyond your comfort zone. I enjoy working with people that are smarter or more knowledgeable with a particular language or technology. When working closely with such individuals you will be exposed to better code and you will likely learn a great deal more than you would if you were to work in a vacuum.
I also enjoy teaching others what I know. When I share and mentor others it forces me to evaluate what I know and understand it well enough so that I can communicate it effectively to others.
How to practice?
Katas. Each day I like to start my day off with a kata. It’s a great way to get into the rhythm of coding. What is a kata? A kata is nothing more than a training exercise most often associated with martial arts.
Some of my favorite code katas include:
These are not merely exercises with which to go through the motions. Challenge yourself to solve the problems in new and interesting ways. Impose restrictions on yourself such as not using if statements. When learning a new language, try solving one of the katas your familiar with in that new language.
Whatever you do, continue to learn and grow.
But I want to hear from you. How do you make sure to stay up to date? How do you prefer to learn and grow?