Book Report - Software Craftsmanship
As I mentioned on Day 1, my apprenticeship at 8th Light involves a lot of reading. In addition to reading the PPP book and Software Craftsmanship I’ve also started working through Design Patterns in Ruby, Eloquent Ruby and Extreme Programming Explained.
I recently finished ‘Software Craftsmanship’ by Pete McBreen so I wanted to offer a few quick thoughts. If I had to sum it up in one sentence I’d say that the book’s focus is to stress the importance of quality people in software development- a small team of software craftsman will be extremly more productive and valuable both in the short term and in the long run than just throwing more developers at a problem.
Even though the book was written in 2001 and the technology and development landscapes have continued to explode since then, I actually think his words ring truer than ever. Back then the dot com bubble had just burst and mobile apps didn’t even exist, and even though it seems like everyone can “build an app” nowadays and make a few bucks off of it, the truly successful products are the ones that are painstakingly crafted through a close relationship with the user and built to last. I think discerning consumers can sense when an app is just a money-making flash in a pain or when it has been well thought out and cared for.
McBreen also spends a significant amount of time in the book discussing how the lessons from traditional craftsmanship (blacksmithing, carpentry, etc.) can be applied to software craftsmanship. All of the occupations require a skill that is developed through years of experience, practice and continual learning. This is the only way that a craftsman can become a master, and during that process- especially during his journeyman years- it’s important to share what he’s learned from working with different master craftsman and foster the development of the apprentices as well. (Whereas Apprenticeship Patterns focused on lessons for apprentices, 'Software Craftsmanship’ definitely focused more on Masters and Journeymen.)
The two other major points that McBreen continually drives home are just how valuable a master craftsman is and the importance of personal relationships. He challenges customers who may balk at a quarter of a million dollar annual salary for a master craftsman (which may even be low in 2012 dollars, and when he says “master” he’s talking about someone with 10+ years experience and a stellar reputation) to think about how much they would have to pay a team of mediocre developers who will produce an inferior product that will cost even more to fix and maintain as bugs arise down the road. Quantity does not make up for quality.
When McBreen talks about personal relationships he means relationships across the board: between the customer and the developers, between the users and the developers, and amongst the team of developers themselves. He recommends only hiring people that you know or that someone you know has personally recommended. A close relationship means two things: that communication will be better so that the developer can have a crystal clear understanding of what the customer needs, and that everyone has a personal connection to the project, understands that their reputations are on the line and will take pride in their work. The best way to judge a developer is based on what he has delivered and what his peers have to say about him. It is, in fact, only through the recognition and respect of one’s peers that a developer can acheive the status of master craftsman.