What are you practicing for?
I’m running the Chicago Marathon this Sunday. I’ve done a bad job of preparing for this race, so I don’t expect my time to be better than my first two marathons. One of the reasons I haven’t had much time to prepare is that I’ve been coaching football 3 days a week. We practice Monday, Tuesday, and Thursday evenings, with games every Saturday. So, between the marathon and football season, I’ve got sports and practice on the brain, and like I’ve been prone to do in the past, I’m going to compare sports with software. Right, so, if you want to improve as an athlete, you need to practice. Furthermore, if you want to be competitive, you need to practice specific techniques. Guess what? Both are true for software development too. You’ll find that the best software developers have had a series of toy/side projects that they’ve used to practice ideas and hone techniques on. If you’re not practicing, and practicing well, your performance will suffer.
One of the patterns in our soon-to-be published book is named “Practice, Practice, Practice”. This pattern is all about creating a safe environment to make mistakes so you can experiment and learn. For the apprentice, questions about practice are generally “Why? Why do I practice?” The answer is simply, “To get better!” And you could keep drilling down and play the 5 Whys and you’d eventually get to something like “to make more money” or “to work on a project I enjoy”. For the journeyman, the question evolves to “What am I practicing for?” Now that you are a competent software developer, practice is still important, but I think it’s important to focus your practice a bit more.
Something I’ve noticed in my journeyman years is that I’m starting to learn what sort of work I like best. During my apprenticeship years, I was learning how to learn, becoming generally competent as a software developer, and experiencing a variety of different projects. After experiencing nine years of variety, I know what I like. And I’ve noticed that my peers have learned what they like too. Some of them like coaching, some like to teach, others like to facilitate change, others like to architect enterprise systems, and on and on. People in the software craftsmanship community tend to enjoy writing code, but of course, each of us has our favorite contexts and mixtures of activites that we enjoy best.
The software craftsmanship manifesto states “we are raising the bar of professional software development by practicing it”. And I notice that many of us are living up to this. Corey does katas. Micah creates tournaments. Jim leads small groups of learners through the exercises of the Wizard Book. Now, all of these are great forms of practice, but I chose to participate in just one of them, the Wizard Book.
Why did I choose the Wizard Book over other alternatives? Because I felt that learning and practicing examples in Lisp would bend my brain in new directions. You see, I’ve learned that the sort of work I like best is the sort of work that lets me work directly with “the business” and deploy code every day. These sorts of collaborative, fast-paced situations are typical of startups, so when I practice, I focus my practice on becoming a better “startup developer”. I’m not learning Lisp so I can write my next project in Lisp, but I am planning on taking what I’ve learned and applying it to help me write more expressive code more quickly, which is super-important in startup-land.
Why didn’t I choose to spend time on a tournament or a kata? I’ve done the code competition thing and I know how much fun it can be, but I think it would provide diminishing returns for me right now. I’ve done kata, but since I’m self-taught, I prefer to couple practice with reading since I’m light on theory. Both of these types of practice could help me be a better “startup developer”, but I felt that the Wizard Book fit best for me right now.
So, if you’re in the first 5 years of your career (yes, you’re probably still an apprentice), practice as much as you can! Try out a bunch of different types of practice. They will likely lead you into interesting and unexpected places. If you’ve transitioned into your journeyman years and have learned what sort of work you like best, focus your practice!
OK, I need to go for a run now. :)
