Kurt's Blog

May 12, 2010

Book Review: Apprenticeship Patterns

Filed under: Software Craftsmanship — Tags: — Kurt Häusler @ 8:00 am
The next book I want to review was published in 2010, and uses a Pattern Language approach to provide tips for newer software developers, to grow their skills, including those in areas other than technical.

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave H. Hoover and Adewale Oshineye

The book draws on experience and interviews to find out what patterns developers noticed as they made progress, and dealt with situations and catalogs them in this book. Before I bought the book I heard many comments expressing that people wish they had this when they started their careers.

The patterns are ordered into sections. The first section, after the introduction where some background into software craftsmanship is provided, along with definitions of what it means to be an apprentice, journeyman or master, is Emptying the Cup, which is a reference to a story about a Zen master who overfills a student’s cup to illustrate how the student was not receptive to new ideas because he thought he knew it all. The theme of the chapter is all about keeping an open mind, and expressing the value of humility. Two of my favorite patterns in this section include Concrete Skills, which reminds us that having knowledge is not the same as having the practical ability to apply the knowledge, and encourages practice, and Retreat into Competence which reminds us, should we become overwhelmed, to step back a bit, and build up your confidence with some easy stuff.

The next section, Walking the Long Road is about thinking of a career long term, and in the short term preferring opportunities for growth rather than traditional indicators of success like salary or leadership titles. The most interesting pattern for me in this section is Sustainable Motivations, which reminds us that not all work is exciting and interesting, and sometimes we have to make compromises, or struggle against things we can’t control and this may impede our motivation. It presents a way to restore motivation by thinking long term, and using our long term needs to make informed decisions about what to do about it, which usually comes down to sticking it out, or making a bold change. Much of the other patterns in this section address similar issues. Use Your Title is interesting, it talks about promotions involving impressive titles, and what that may really mean, as well as referring to situations where hard work goes unrecognized.

Accurate Self-Assessment, the fourth chapter, has patterns involving how we relate to other developers, such as Being the Worst on a team, so we have people to learn from and room to grow, and Finding Mentors or Kindred Spirits who can help us grow by sharing experiences, and reflecting on each other’s ideas and progress. Rubbing Elbows reminds us that even the big names are often friendly and approachable, and can be an excellent source of knowledge and inspiration. Sweep the Floor reminds us of the value of humility, and provides a means for a new apprentice to slowly build up trust with his team by proving himself by doing menial tasks well.

The fifth chapter, Perpetual Learning has some fairly concrete tips for staying up to date on what is current in our profession, not just on building up knowledge, but Practicing in order to leverage that knowledge as concrete skills. Developing specific skills is encouraged including source reading, self-reflecting, and recording and sharing knowledge learned.

Construct Your Curriculum consists mostly of patterns related to learning from books, and how to select such books, but the pattern Familiar Tools also suggests building up a toolbox of things we may specialize in, or prefer to use across projects because we become expert in them, and knowing when to make changes to this toolbox.

I thought it was a great book, especially for those starting out. For me its greatest value comes in the contribution it makes to the idea of craftsmanship as a model for the discipline of producing software and software developers. It is a sparse field, and this book is significant for refocusing the software craftsmanship movement several years after McBreen’s book, after the community had some chance to develop the concept. Choosing to focus on apprentices, and structure the book as patterns were excellent choices, that help to solidify craftsmanship from being just a thought experiment, or alternative model, into something more concrete than can have a beneficial influence on the lives of developers, the profession and potentially help steer the industry towards a more effective future.


Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: