For this course, we were introduced to the book Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman, by Dave Hoover and Adewale Oshineye as a resource and reference.
Immediately, I found this book to have an interesting approach to the way it presented information. Instead of being organized in a simple front-to-back kind of format, where content would be organized by order of foundational material followed by more advanced topics, this book is organized more similarly to a wiki, with the content presented in a relatively self contained manner for each chapter rather than as a series of introductions or tutorials followed by applications.
More specifically, I think the idea of apprenticeship discussed throughout the opening chapter and throughout this text is a genuinely useful idea relative to any kind of career or interest in software development. Rather than focusing on achievement and career progress for the sake of progression, the definition of apprenticeship is more concerned with learning and the acquisition of the knowledge with the goal of learning more and knowing more each day than the ones preceding it.
The definitions of “apprentice”, “journeyman”, and “master” used in this book are interesting because they discuss them as part of a system. Apprenticeship is presented as a step in a logical progression leading forward to being a Journeyman and eventually a Master with differing priorities and activities being attributed to each one, where the apprenticeship stage is primarily concerned with learning and self-development.
I like the idea of starting out with self development, because if you don’t develop yourself and understand how you want to work and the tools you want to use going forwards, then you proceed on unstable ground which won’t be very conducive to your future development or career.
Chapter 2, “Emptying the Cup” discusses the concept of remaining open to new ideas and knowledge, even after you feel you have learned a lot about a particular topic. It deals with the idea of acknowledging what you don’t know, and confronting those deficiencies while also maintaining a “beginner’s mind” while learning new things. While the chapter goes on to discuss how these ideas can be applied to something like learning a programming language, I think they can be relevant to learning just about anything. Activities such as cooking, painting, or even tying a knot all seem like places where it could be a good idea to approach them with a “beginner’s mindset” and not assume everything through prior knowledge.
Often going through things step-by-step as an absolute beginner might seems to produce some of the most lasting impact, in my experience. I think this chapter and the idea of keeping an open mind is very valuable, especially in a field like software development where you might be exposed to many different frameworks or languages throughout a project/development period, and might be tempted to apply knowledge from one to another (possibly leading to later difficulties).
Book Referenced: “Apprenticeship Patterns by David H. Hoover and Adewale Oshineye. Copyright 2010 David H. Hoover and Adewale Oshineye, 978-0-596-51838-7.”