Book Review Apprenticeship Patterns

Either if you are a newbie in the software industry or you already have several years of experience developing software, Apprenticeship Patterns is a good book to reflect about several habits that you acquire along the road and to focus on becoming a better software engineer. Read it and start your journey to become a master software craftsman.

One of the reasons I started this blog was Apprenticeship Patterns. The moment I read the patterns Record What You Learn and Share What You Learn, I decided to setup both a blog and a GitHub account to try to give to the community what I have been learning from them, so that others who may come later can have an easier learning path.

I finished reading the book by David H. Hoover and Adewale Oshineye a couple of months ago and I thought that it would be nice to write a post so that others can get to know it and leverage what I have learnt from it, even though the book is not recent and maybe there are plenty of reviews of it out there. I have to say I enjoyed the book; it is really easy to read and it is organized in small pieces of information (patterns) that you can read in 5 minutes or so, which makes it very appropriate for those small periods of time where you are not doing anything concrete.

Probably you have heard about the Software Craftsmanship movement, and if you haven’t, you should definetely check it out (I should probably write another blog post about it sometime in the future…). Apprenticeship Patterns is a good way to start your journey to become a true master software craftsman. The book has a big number of patterns structured into 5 parts. I don’t want to spoil anything from the book, so I will just provide a small opinion for each one of those parts.

Emptying the cup

You may be starting your career in software development, or you may have already several years of experience. Either case, we all approach new things where we don’t have any previous knowledge at all. It is in those cases where this part comes in handy. It encourages you to make progress step by step to become better in the process. It serves as a starting point to learn basic habits that are going to be really useful later in your daily life as a software engineer.

I also liked the patterns Expose Your Ignorance and Confront Your Ignorance. We software developers are not precisely humble most times and have a hard time admitting that we don’t know how to do things. It is perfectly ok to ask for help when you need it. Actually, I consider it to be a sign of professionalism: to recognize your shortcomings and to try to fix them.

Walking the long road

Becoming a master software craftsman is a long journey where you need to learn many things from many different sources. It becomes even harder because of the always-evolving nature of software technologies. For this reason, it is important that you have a clear motivation and passion for what you are doing. I couldn’t agree more to this quote from the book:

Anyone who has ever seen a programmer at work… knows that programming itself, if the programmer is given the chance to do it his way, is the biggest motivation in programming. Jerry Weinberg - The Psychology of Computer Programming

For me, becoming a software engineer was a vocational decision, I am able to work in the projects I want and I enjoy doing my job every day.

Accurate self-assessment

Usually, learning is a guided process. You can be self-taught, but it is reasonable to find people to help you and teach you. I agree with the authors that you have to try to find mentors who are willing to guide you in the process, but that is not always easy. I would rather recommend to talk to your peers; they may not have the same experience as a mentor would have, but a collective reflection on some problem can throw a lot of light over it.

Perpetual learning

Ever since I left College I haven’t stopped learning new things. It is not always easy to find time after work - you also need to have a life! However, the ever-changing technology-based world we live in forces us to do it, and, in my opinion, if you have been able to grasp good learning habits from the beginning, everything becomes much easier.

Not only books are good sources of knowledge. Internet is full of resources and deep discussions on any topic you may be interested in. I wish I had it when I was a kid and started learning to program!

Construct your curriculum

At the end of the day, all of this is for you. You have the opportunity to stand up and become a better professional. It’s all a matter of attitude. I tweeted this when I was reading the book:

Final thoughts

Recently, Dave Hoover gave a presentation at Craft Conf 2015 in Budapest where he revisited some of the patterns in the book. Maybe you want to take a look at the conference here.

I think the book is really worth reading it. It is not very long - around 140 pages - so if you already have read it or after reading this post you find it interesting, drop by and leave a comment here!

Dialogue & Discussion