If we analyze the activity of programming, we can perceive that there are a lot of things in common with play a musical instrument, write a novel and play sports. I won’t be crazy to say that there is no talent involved, of course that the great musicians or writers or programmers are talented, but other things also matter. One of them is practice/training.
Malcolm Gladwell in his book, Outliers wrote about the 10,000 hours rule. This rule is all about practice, he argues that for a person to be really good in a field, an expert, this person needs at least 10,000 hours of deliberate practice. Note that, he talks about deliberate practice, and not only practice. For him, doesn’t matter if one spend 10,000 hours doing the same thing, it doesn’t lead to mastery. Deliberate practice is continually practice a skill at more and more challenging levels with the intention of mastering it. As example of this rule, Malcolm cites Bill Gates, The Beatles, Hockey players and others.
In the software industry, programmers don’t use to practice, unlike, we use to learn a new language or a new framework when we are writing production code, of course, in this way we tend to produce bad quality software and we cannot test all the possibilities that this new tool can do because we are always in a tight deadline. Like musicians, writers and athletes, we, programmers, need to do practice sessions, and with this in mind Dave Thomas invented the CodeKata.
CodeKata, has it origin in two words, Code, that is the thing that we programmers love to write, and Kata, that is a set of movements that Karate practitioners do to improve their skill, so CodeKata is a set of programming problems that programmers can solve to practice programming and improve their skills.
For those that became interested in practicing programming through CodeKatas, below I’m sharing my CodeKatas Catalogue, use without moderation and become a better programmer!
#02 Evaluating Math Expressions
#03 Paycheck Reader
#04 Find the Phone Number
#05 Generating Prime Factors
#07 Roman Numbers
#08 Reading Numbers
#09 Prime Words
#10 Tennis Match