Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye, is an interesting read. The beginning really focuses in on the Craftsmanship of programming. Dictionary.com defines craftsmanship as, a person who practices or is highly skilled in a craft; artisan. Hoovers adapted definition for this word is where the main focus lies. It is still a craft, or art piece, where programming expands beyond the average engineering aspect and is something that must be worked on and perfected.
Hoover offers suggestions on how to improve one’s craft through three stages of becoming a software craftsman. First one must become an apprentice. While an apprentice your primary focus is on inward intent of growing yourself and your craft. Given few responsibilities you often can consider this an internship where you learn industry tools, and focus on your understanding of them. Then you will eventually move up to the next role of Journeyman.
A Journeyman is the next level up where your focus is still everything of the apprentice, inward improvement, but also where you work on connections between practitioners. Practitioners are the communication channels within and outside of your team. The original idea of a journeyman is to bounce from master to master, but given the work place for a software craftsmen most of your journeyman career will be with one group. Therefor your focus should be improving your relationship with them. Eventually as you approach a higher stage of your career you will start to mentor some of the apprentices and build your portfolio to show off your work.
Finally you are a Master Software Craftsman, but you do not stop focusing on your previous goals. There is always room for inward improvement, but ideally your focus is on moving the industry forward. Being a master involves taking your skills and putting a magnifying glass over them to improve. Then of course taking in apprentices and enhancing the skills of others in the field. By far the build of a craftsmanship is something that I synergies well with. I have always thought that software development was art, and I was the artist. Creating something you are proud of rather than just pumping out products on an assembly line. So I certainly agree and enjoy the mindset that Hoover presents and the career goals that are outlined.
In addition to the apprentice model the other chapters have some interesting patterns to them. I think the one that stuck out the most to me was Chapter 5 about Perpetual Learning. I think this section relates with me very well because I often find myself learning how to do things on my own. I specifically remember my first few classes being forced to learn by reading other materials and teaching myself. Although I think this chapter relates more to learning new technologies when they come out I’m certain believe I will be the person who is on top of that. Another chapter that caught my eye was walking the long Road chapter 3 because it sets the expectation that you will not become a master anytime soon. That truly improving yourself is the only way to become proficient in the field. The only chapter that I thought would be something I might disagree with was the emptying the cup pattern. I understand the idea it puts forth about emptying yourself so you can fully work with the master and learn everything, but I just don’t see how it’s going to be feasible in the field of work that we will be in. Realistically what company is going to spend valuable time starting from scratch to train you only for you to eventually move on to another company. I see the value that’s proposed just don’t know how it would work.
Overall the book seems interesting and a fun and insightful read. A LONG and fun insightful that is. I look forward to exploring addition chapters and learning the best way to continue on my way to becoming a software craftsman.