Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye opens up with a really great hook that makes you want to dive deeper. The book, so far is extremely simple and easy to read. The authors do not overwhelm you with too much information. It feels like they are talking to you rather than telling you something. I like the medieval inspiration of guilds, masters, and apprentices. It brings me back to the days where I wanted to be a blacksmith apprentice (in 5th grade we went to Old Sturbridge Village which sparked my interest in blacksmithing). I never became one, obviously because there are no blacksmith masters around. Anyways, just the word apprenticeship gives me a feeling of being useful (or at least learning to be useful) and I enjoy the thought of having a master to teach me the crafts.
My favorite line from this chapter was “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.” This is important because even the most skilled of teachers can learn things from students that think differently. Giving us the tools to make our own decisions is what we need to continue developing new and better technology.
The authors include a bulleted list of values that describes the phrase software craftsmanship. Some of the most important values being:
-Growth mindset. The author accurately explains that failure is just momentum to try again. Keep learning and growing from your mistakes an you will become very powerful.
-Adaptability. Recognize that the world is changing around you and just because you think it is right, doesn’t mean it is.
-Open source sharing. Share what you know rather than hoarding it. This will help progress software development as a whole.
-Manifest Destiny. Go out and create your own opportunities rather than waiting for someone to give them to you.
-Learn form your environment. Swallow your pride and ask for help from people around you. They have the knowledge and skills to advance your skills.
The authors go on to explain what it means to be a journeyman, master and an apprentice. As an apprentice you should always have the attitude that there is a better and faster way to do things. You should continuously absorb information from the people around you and use that information to your advantage. A journeyman is an apprentice that might switch between masters and relay ideas off each other. They are focused on enlarging their portfolio and working to become a master. A Master is the all powerful leader of the three. A Master retains all responsibilities from his journeymanship, with the added responsibility of furthering software development as a whole. He/she does this by teaching and continually learning.
The phrase apprenticeship pattern does not mean that this book will teach you how to become a software designer. The patterns are simply a guide to bring you to the next level and get you better at what you want to do.
From the blog CS@Worcester – Rookey Mistake by Shane Rookey and used with permission of the author. All other rights reserved by the author.