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.
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.
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:
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!
Tomás Ruiz-López BOOKS
book review software craftsmanship patterns