For this blog post I will be discussing the entirety of the first chapter, and introductions to all other chapters of, Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hooper and Adewale Oshineye. As someone who is at the cusp of being released into the larger professional world, this book appears to be a useful resource. To clarify, I have been thinking about my future career as of late, and how exactly I can advance my own learning past what I do in class. Personally I have found this to be challenging, often finding myself having grand designs going into a personal project or online training program, but ultimately hitting a wall that abruptly kills progress. Within the first chapter of Apprenticeship Patterns, these troubles are acknowledged and addressed through establishing and discussing methods to approach learning new skills, these being the titular patterns.
There were a few sections that I found particularly interesting. To specify, this section in the intro that redefines the definitions for apprentice, journeyman, and master was something I did not expect to find. I did not really ever put thought into redefining those terms to fit their more modernized roles. Additionally I enjoyed reading the introductions to chapters two and five. When learning new languages I feel as though I am always trying to program in as though I am using Java, as it is simply what I have always been comfortable with. I feel like this idea of “Emptying Your Cup” is of high importance when learning a new language, as it will most likely work differently than what you are comfortable with. You have to be willing to step out of the comfort zone to have a true grasp on this new language.
The topic for chapter two goes hand in hand with this mindset. This chapter’s focus is on reinforcing a constant cycle of both learning new information or techniques, and subsequently sharing them. One important note is that this process should happen regardless of where you are in your programming career, apprentice or master, but it would be ideal to begin when your an apprentice. By establishing these practices early on you will habituated these processes of learning and sharing so that they will become second nature to you. Even just reading the introductions to this book has made me rethink these to aspects of how I program, which is a good sign for things to come.
This reading has already changed my mind on these two things, and much of what the other chapters discussed also sounded relevant, at the minimum. The only part that stuck out as odd to me were the introductions to chapters two and four. I am sure the content of both chapters differs, but they seem to be covering very similar topics, both stating that you need to let go of previous knowledge when tackling something new. This is not to say that I did not find these topics interesting, as I said above the topic of chapter two is something I am already thinking about doing, but I just found those chapter introductions to be strangely redundant. Overall thought this reading has been highly interesting and I am excited to dive even deeper into it!