Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
By Dave Hoover and Adewale Oshineye
I’m not an “aspiring software craftsman”, at least not at the moment — so why does this book seem so interesting? It’s the first part of the title that caught me eye, the idea of “apprenticeship patterns”. I’m intrigued by the notion that there may be well-defined steps you can follow to increase your learning and chances of career success…
In this book, Hoover and Oshineye “have cataloged dozens of behavior patterns to help you perfect essential aspects of your craft.” They start by defining software craftsmanship “as a community of practice that encompasses values such as a growth mindset, the need to adapt and change, being pragmatic instead of dogmatic, and the belief that we should share what we know instead of hoarding that knowledge.” Then, throughout the course of the book, they “outline a number of techniques, or patterns, which can help you maintain a level of structure to your learning, while also helping you avoid sticking points that can often derail us.”
The title is a play on the term “software patterns”, which describes common design patterns used in software development. But I like the idea of applying “patterns” to other areas of human activity like learning and creativity. Christopher Alexander talks about patterns as applied to the design of urban space and structure, and I’ve long thought it would be fun to try applying similar ideas to human behavior.
A lot of the material in here probably isn’t immediately useful to me, insofar as it’s geared specifically toward learning software — but I’m betting the more generalizable parts will make this worth the read. One reviewer notes: “It’s not a stretch to look at these patterns and find that you could apply them to *any* sort of new learning. Granted, most of the commentary on each pattern is software-related, but most transcend that narrow niche.”
There seem to be many topics covered here — unleashing enthusiasm, developing concrete skills, confronting ignorance, finding mentors, constructing your own curriculum, practicing, and creating feedback loops for your learning — that aren’t software-specific at all, which is great. This book may not be relevant for everyone, but I think for areas driven by creativity, problem solving, rigor, design — “crafts”, loosely defined — there’s sure to be some helpful information here!