I don’t know how I missed not posting a review of Apprenticsehip Patterns: Guidance for the Aspiring Software Craftsman by Dave H. Hoover and Adewale Oshineye (OReilly, 2010), but somehow I did. I read this book quite some time ago so this review will somewhat limited as the material is not fresh in my mind.
The book says it is targeted to the aspiring software craftsman, but I found it the book full of wisdom and good ideas for the most seasoned developer. The book uses the Manifesto for Software Craftsmanship as a basis on what skills you should develop and how you go about gaining those skills. The book is short, only about 140 pages and an easy read, but don’t think it’s something you can just breeze through. Along the way you will take many retrospectives of your own career, see new things you should be doing, and be reminded of concepts you had either forgotten or ignored.
Chapter One gives an overview of Software Craftsmanship. One paragraph lays out the theme for the book:
One of the lessons we’ve learned from the Agile development movement is that just telling people to do things doesn’t create lasting or sustainable change. When people you’ve advised encounter a situation that isn’t covered by the rules, they’re lost. However, if those same people have imbibed the values that underpin the rules, they can come up with new rules to fit any situation. Our goal here is not simply to hand people a rule book, but to give them the ability to create new practices for new contexts, which in turn drives the discipline of software development forward.
The authors then layout a path to move the reader from apprentice to journeyman to master and define an Apprenticeship Pattern as a pattern that “attempts to offer guidance to someone working with the craft model on the ways in which they can improve the progress of their career.”
The remainder of the book is laid out as patterns you can follow to grow and improve as a developer.
Chapter Two, Emptying the Cup, discusses learning your first language and how to move on to learn the second, third, and more. For example, you may have to unlearn something. If one language implements a specific construct one way, you may have to unlearn that and adopt a new way of doing something. Another pattern is Expose You Ignorance. You many be unfamiliar with the technology you are required to use. The solution is to show that you can learn it. Don’t be afraid to let people see you struggle, but showing that you can learn and overcome is important.
In Chapter Three, Walking the Long Road, the authors explain that you are responsible for your career, not your employer, your friends, or your family. You need to plan your own path and then provide the nurturing and sustain your own motivations. Sometimes you will end up in jobs that don’t seem to be taking you on the path you wanted. You then need to Stay in the Trenches and continue or take A Different Road.
The next set of patterns come in Chapter Four, Accurate Self-Assessment. This, to me, is the hardest part of the book to do. People, in general, tend to be hard on themselves and often cannot accurately give a self assessment. Sometimes you’ll find yourself the best developer on your team so to continue growing you need to Be the Worst. Take a new job where you are at the bottom of the group. You may need to find Mentors or Rub Elbows with others to learn new things and grow your network of knowledgeable Kindred Spirits to help you grow..
Perpetual Learning is the next set of patterns. When you want to learn something new, Practice, Practice, Practice. Create a Breakable Toy, some pet project that you can recreate in a new language as a way to learn. Record What You Learn and just as important, Share What You Learn and Learn How You Fail.
Now that you know what you need to do, it’s time to put the plan into action. Chapter Six is Construct Your Curriculum. Create a Reading List and Read Constantly. And just because you’re learning new languages and concepts doesn’t mean that you should give up the Familiar Tools. They often propel you to learn new techniques more quickly because you don’t struggle with the language, which allows you to concentrate on the new stuff.
So, that brings up the conclusion of the book. You then find out how to tell if you are a Master. Oh, I’m not going to give that away. You need to read the book yourself. I will say, go buy the book. Or, read it online for free. Then apply the concepts presented and you will become a better developer.