The Ways of Practice

At 8th Light, the value of practice is undisputed. Effort devoted to honing your craft pays dividends time and time again.

In my last blog post, I talked about how practice paid off for me in the past. In this post, I cover how the craftsmen at 8th Light approach practice, what we practice, and ways to find time to practice.

Approaching Practice

How the 8th Light craftsmen practice varies, but at the core, the approach is the same:

Be deliberate

Many pages have been written on deliberate practice, and I won’t dwell on them here. It is enough to say that when you practice, you should be focused on the task at hand and to remember why you are practicing.

Be deliberate, a lot

If you like logging your time, you can start tracking towards your 10,000 hours of practice right away. Otherwise, consider it important to practice every day if you can.

Challenge yourself

If you think you’ve plateaued, maybe it’s time to try something different. If you don’t do much functional programming because your job doesn’t use it, try it to see if it’s better. Never given a talk at a conference? Volunteer for your next meetup group and give it a try.

What to Practice

Getting started in the habit of practice can be difficult, and often it can be hard finding something interesting enough to keep your attention. Some specific areas of focus at 8th Light:

Code Katas

I like katas because once you’ve solved the logic problem, it allows you to focus on the techniques you use while you code. With a memorized solution, you free your mind to focus on your TDD skills, like writing the simplest code to make a test pass.

Breakable toys

Just make something to see how it works. This is a very common approach among 8th Light craftsmen and in the software craftsmanship community at large, and the toys range from throwaway Rails apps, iPhone apps, Lisp interpreters, and games in Javascript to controlling a treadmill with an Arduino. Just find something that sounds fun and go for it.

Read open source projects

The ability to read and understand unfamiliar code quickly is a powerful skill. Cultivate it by pulling a favorite open source tool and reading through the code.

While you’re at it...

Contribute to open source projects

Take that favorite open source tool you just pulled, fork it, and fix a bug or two. If you’re feeling ambitious, open source your own project that you’ve been kicking around for a while.

Koans

There are koans for Ruby, Clojure, Smalltalk, Java, Javascript, Scala, and even .NET out there waiting to teach you about the features of the language. Here at 8th Light we’re especially partial to the Clojure Koans and Smalltalk Koans.

Presentations

The best way to get better at public speaking is to speak in public. At 8th Light, this skill is honed on Fridays during 8th Light University, where a craftsman will teach something he/she has learned to the rest of the company. Volunteer to give a talk at a local meetup, submit a talk to a conference, or just corner your co-workers over lunch and see what they think.

If you’re still looking for something to practice...

Chase Tangents

You may find something during your daily work that interests you - a design pattern you haven’t used in a while, or a language feature you haven’t seen used well before. Write it down and come back to it later - implement a pattern or use the feature a few different ways until you fully understand it.

A good example of this is in a talk on practice by Corey Haines at 8th Light’s Libertyville office in 2009. Corey discusses how he took a Ruby method he didn’t know much about at the time - gsub - and practiced it until he knew it back and forth.

Carving out Time for Practice

Sometimes it’s not easy to find time for practice. There are a few ways to set aside time for practice that are worth a try:

Timebox

Carve out a specific section of your day, like when you’re on the train, and devote it to practice. On Sunday mornings, I find myself at the coffee shop with my laptop before the day really begins, investigating something I came across the week before.

Competitions

A group of 8th Light craftsmen and apprentices recently competed in the Overnight Website Challenge, and others have competed in past Node Knockouts and Rails Rumbles. The short time period lets you fully devote yourself to the task at hand, and the competition keeps you focused.

Conference Driven Development

A healthy dose of panic at the thought of making a fool of yourself in public is often excellent motivation for completing a side project.

Get Started

Although there are many ways and motivations for practice covered above, there are numerous other approaches out there to try as well. Find what works for you, and get practicing.

Mike Jansen, Software Craftsman

Mike Jansen has spent the past 7 years in pursuit of quality, maintainable code in the world of software development.