Practice, Code Exercises, and Code Katas
Date Published: 25 August 2009
One of the ways we improve as software developers is through practice. Practice isn’t just something that’s done as you go about your job – it has to be focused on improving your skills. Practice can take many forms, but two of them include practicing doing something the right way and practicing something new that is outside of your comfort zone. Often in our day-to-day work, our focus is on delivering something within a given timeframe, and not necessarily on doing it the right way. Further, without exploration and practice learning new things, we may not be aware of what the “right” way is to accomplish certain tasks. There are individuals with many years of experience who have done the same thing the same way at the same company and there are individuals with far less calendar experience but a much broaden and deeper range of skills. The difference in these individuals is clear to any employer after a brief period of time, and one way we deepen and broaden our skillset is through practice.
I wrote yesterday about Project Euler, which provides over 200 problems that can be used as the basis for coding exercises and practice. This is just one resource for those looking to hone their skills as developer craftsmen. Here are some others I’ve found as I research the topic for our local Hudson Software Craftsmanship group:
- The Bowling Game– The original from UncleBob, the presentation as a PPT file with test and code side by side along with notes on needed refactorings is excellent. I’m hoping to write up some Euler problems using this same approach at some point. If you miss the link to the powerpoint, it’s here: BowlingGameKataPowerpoint.
- Prime Factors– Another UncleBob kata.
- Project Euler– Lots of problems which in and of themselves are not katas because there’s no explanation of the right way to approach them. However, they are a great way to explore and hone your skills or see how others in a group would approach the same problem.
- CodeKata Blog– Dave Thomas, one of the Pragmatic Programmers, maintains this blog which includes over 20 coding exercises/kata.
- TDD As If You Meant It: Go– This writeup of an excercise done at the SC 2009 conference demonstrates how to really take small steps.
- TDD As If You Meant It: Tic-Tac-Toe: A similar writeup, this time using Tic-Tac-Toe.
Videos (mostly Ruby):
- Uncle Bob Prime Factors Kata 2009– Prime Factors
- Micah Martin at Ruby Conf 2008– Katas, Sparring, and Langton’s Ant Kata
- Micah Martin’s Langton’s Ant– Screencast
- Corey Haines at Envy Labs 2009– String Templater
If you have an extra hour this weekend, pick a problem and go through it in your language of choice. If possible, pair with someone or get feedback on your solution once you’re done. Then, perhaps another time, do it again, this time a little bit better.
Steve is an experienced software architect and trainer, focusing on code quality and Domain-Driven Design with .NET.