The Value of Practice

One of the habits that’s valued highly at 8th Light, and should be valued by professional developers everywhere, is the habit of practice.

If you're earning a living by developing software, technically you’re a professional. However, I believe that in order to really consider yourself a professional and a craftsman, practice is a must.

I'm not a great programmer; I'm just a good programmer with great habits. —Kent Beck

The value of practice can have profound effects on your career. In this first of two posts, I’m going to discuss how practice altered the trajectory of my career. In the second, I’ll cover the ways the team at 8th Light hones their craft.

Before 8th Light, I worked at a software company with a very large code base and spent countless hours tracking down bugs or figuring out exactly how a certain feature worked. There were many tools available - white paper documentation, a thriving ecosystem of internal wikis, detailed development logs with notes on the last change - all with the intent of making the software's functionality easier to understand.

When I first started, these were great tools for quickly getting a sense of what the code ought to be doing and it often took care of easy questions. However, these tools led to a false sense of security. Unless they were updated the day before, chances were very good some piece of data was incorrect.

In the end, though, it was always about the code. With millions and millions of lines of code, this was an intimidating process for a fresh-faced new hire like myself. I would go to the best members of the team for advice, and I noticed that the tools I relied on were almost never pulled up right away. They would jump right to the source of truth.

I knew that if I wanted to succeed, I couldn't just wait until I had a difficult problem to debug to increase my knowledge of the application code base. As practice, I began debugging every single problem that came my way, no matter how simple. I would muddle through until I understood exactly what functions were getting called, when they were getting called, and what they were returning.

It was slow going at first. Issues that could have taken 15 minutes through the methods I knew took an hour or two, and I always had to keep the urgency of the issue in mind before spending extra time on it. My workload didn’t decrease, either. This meant longer hours to get the same amount of work done.

However, the cycle time came back down as I catalogued the application's flora and fauna. Eventually my mind and fingers got faster, and there was hardly a bug I couldn't track down. When critical issues started affecting production environments, I knew how to react and where to look. This made me a better troubleshooter and developer, and I earned more respect and responsibility along the way.

Since joining 8th Light, I’ve discovered more ways to practice and seen how it has benefited the careers of others. In my next post, I’ll cover the ways the craftsmen of 8th Light practice.

Mike Jansen, Software Craftsman

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