The way to mastery is a long journey. Yet if you’re passionate about your craft, be it writing, design, building virtual products, building physical products, or just want to become a master at whatever you’re currently doing, pick up this book – Apprenticeship Patterns. Guidance for the Aspiring Software Craftsman, by David D. Hoover and Adewale Oshineye.
This book is not only for software developers. If that “Software” in the title made you avoid it so far, go back to it. Read it, then read it again. The book is offering advice on how to accelerate your growth and tools for inexperienced software developers or apprentices. The book benefits also experienced developers, and anyone who wants to master certain skills. I’ll show below why.
Dave and Ade (the authors) interviewed people all over the world to create the apprenticeship patterns, adding to it research into current learning literature, the psychology of optimal performance and mastery.
I will first clarify some of the concepts in the book – patterns, software craftsmanship, apprentice, journeyman, Master – then I’ll jump into describing the patterns.
I have created a matrix for better visibility of the patterns, so if you already read the book, jump straight to the overview here. I will also explain below how to best use this matrix for your own growth, but also to coach your team.
What are the patterns?
“A pattern is a named description of a recurring solution to a problem in a given context. The description should give readers a deep enough understanding of the problem to either apply the stated solution to their own context or decide that a particular pattern is not appropriate to their situation.” (excerpt from the book).
Otherwise put, no matter in what learning stage you are as an apprentice on your way to software craftsmanship, there is a solution to help you grow out of it, and continue on your path to becoming a Master. Dave and Ade have used the collective intelligence of a lot of experienced (and inexperienced) software developers and created the right solutions for you. Or patterns, if you’d like.
Software Craftsmanship Manifesto
Before jumping into the patterns, the authors define software craftsmanship; in a true Agile spirit, they put together a Software Craftsmanship Manifesto (in March 2009, after a prolonged discussion with their community):
“As aspiring Software Craftsmen, we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:
Not only working software, but also well-crafted software.
Not only responding to change, but also steadily adding value.
Not only individuals and interactions, but also a community of professionals.
Not only customer collaboration, but also productive partnerships.
That is, in pursuit of the items on the left, we have found the items on the right to be indispensable”.
The inspiration for defining software craftsmanship comes from the medieval apprentice practice. In those times, the Masters of a craft were owning the workshops and they were controlling the apprentices that worked for them. They had absolute authority over all their workers; the journeymen followed immediately underneath in authority. The journeymen were also travellers, thus taking the skills and knowledge to other places and sharing them with other journeymen.
Thankfully, the software craftsmanship concept refers to a modern working studio, where the journeymen improve upon the past knowledge, not imitate it. Following Agile software development, the book is to be used as a learning tool, not to be followed as absolute rule. This book aims at helping apprentices learn and create new practices, and together, apprentices and masters, to drive the software development discipline forward.
“So software craftsmanship refers to a community of practice united and defined by overlapping values, including”:
- The concept of “growth mindset“, as it’s presented by Carol Dweck’s research. According to Dweck, we can grow constantly through practice and effort, there is no “fixed” talent and skill set we’re born with and can’t overcome.
- Using constant feedback from the world around you to adapt and change.
- A desire to be pragmatic rather than dogmatic.
- Sharing what you know helps you more than hoarding information and knowledge.
- A willingness to experiment and fail.
- A dedication to internal locus of control. Locus of control refers to you owning the outcome of events in your life, over external forces driving them.
- A focus on individual rather than groups.
- A commitment to inclusiveness.
- Skill-centric rather than process-centric.
- A strong preference for “situated learning“. The concept promotes learning through communities of practice: the best way to learn is being in the same place with people who have the skills you need to learn, and solving a problem together.
Learn more about situated learning here:
What is an Apprentice?
“I guess it basically means having the attitude that there’s always a better/smarter/faster way to do what you just did and what you’re currently doing. Apprenticeship is the state/process of evolving and looking for better ways and finding people, companies and situations that force you to learn those better/smarter/faster ways”.
An Apprentice is beginning his journey towards becoming a software craftsman. Her focus will be within, and will have to learn to grow herself, and learn to learn.
What is a Journeyman?
The journeyman keeps the focus inward and continues the learning path she started as apprentice. But at the same time, the journeymen will build connections between practitioners, communities, communication channels within and outside the team.
Back in medieval times, the journeymen would be working with different masters to learn the craft and share their knowledge and skills with others. In modern times, they will continuously grow their portfolio, community and the status in the community, so that they are ready to become masters. So their responsibilities are wider than those of an apprentice.
What is a Master?
Defining mastery is simple: “Mastery involves performing all the roles of an apprentice or a journeyman as well as focusing on moving the industry forward.”
Masters have gone through apprenticeship and journeyman paths, and now are helping others grow their own skills, by orders of magnitude. They can create new tools, or train journeymen to know more than themselves. “In short, masters view the acquisition, usage, and sharing of superior skill as the most important part of being a software craftsman.”
What is an Apprenticeship Pattern?
An Apprenticeship Pattern is meant to offer guidance to someone working with the craftsman model on the way they can grow and improve their skills (and careers).
The patterns are:
- a result of experience of the authors and the community they interviewed
- unoriginal, because people around you are already using them
- generative, giving different results every time you use them
- going to improve your working environment if used appropriately
The Apprenticeship Patterns Matrix
There are 35 patterns. For better visibility, I created a matrix here.
The matrix is structured in five categories, which I will explain below, while the detailed patterns are in the attached sheet:
1. Emptying the Cup: if your cup is full – if you already think you know a lot – it’s very hard to fill in, it’s hard to get new knowledge; your ego is your biggest impediment for growth. All the patterns in this category are tools to start your apprenticeship with an open mind:
- Your First Language
- The White Belt
- Unleash Your Enthusiasm
- Concrete Skills
- Expose Your Ignorance
- Confront Your Ignorance
- The Deep End
- Retreat into Competence
2. Walking the Long Road: the more you learn, the more you recognise how far you have to go. There is an immense pool of knowledge that you are yet to get, the more you dive deeper in a craft. When you start collaborating with exceptional people, you will see that you are walking the same road, even though they are miles ahead of you:
- Walking the Long Road
- Craft over Art
- Sustainable Motivations
- Nurture Your Passion
- Draw Your Own Map
- Use Your Title
- Stay in the Trenches
- A Different Road
3. Accurate Self Assessment: if you’re a big fish in a small pond (e.g. the expert on a topic in your organisation), remember there are a lot of ponds out there, where you can find fish that are way bigger than your entire pond. “You must be able to let go of your perceived competence and allow yourself to recognise that you have travelled only a short distance on The Long Road.” :
- Be the Worst
- Find Mentors
- Kindred Spirits
- Rubbing Elbows
- Sweep the Floor
4. Perpetual Learning: any craft has two primary activities: 1) learning and 2) communicating. The Perpetual Learning patterns are important through your entire journey (becoming a master is all about learning and growing), but it’s absolutely essential at the beginning of your journey:
- Expand Your Bandwidth
- Practice, Practice, Practice
- Breakable Toys
- Use the Source
- Reflect As You Work
- Record What You Learn
- Share What You Learn
- Create Feedback Loops
- Learn How You Fail
5. Construct Your Curriculum: don’t get caught in the new information for your craft, don’t forget there is a vast amount of wisdom in classic books, written by experienced craftsmen. You need to read books and dedicate time to study as well as practice your learning.Construct your own curriculum, based on the path that you designed for yourself.
- Reading List
- Read Constantly
- Study the Classics
- Dig Deeper
- Familiar Tools
So how can you use the Apprenticeship Patterns?
There are two ways you can make great use of the Apprenticeship Patterns:
- On a personal level: take control on your own growth, check the matrix, see where you are at the moment in your journey towards mastery. Use the tools, do the actions, iterate. I do a review every other month at least, whenever I am blocked into my learning and growth, and use any of the tools that fit my craft journey needs to push myself further.
- On a team level: the Apprenticeship Patterns are to be used by individuals to master their growth journey but it is a wonderful coaching tool at the same time. Our devs have Apprenticeship Patterns as mandatory reading during induction. We value developers that see software development as a craft and want to continuously grow their skills towards mastery. We – Agile Coaches – guide them through their journey: we work with each dev to see where they are, help them set the next objective for themselves and review their objectives and growth with them (on a monthly basis). it’s pretty much your regular performance coaching with Apprenticeship Patterns as a conversation starter.
I can’t recommend this book and doing the exercised it suggest highly enough. Go grab a copy of it now, it’s the first step on your journey to becoming a master of your craft.