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 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.