(This post was originally published on thetimelydeveloper.com)
The world of software can be overwhelming at the best of times, even for those who have worked in the industry for several years. The rate at which you have to learn and absorb new information exceeds that of many other industries. Today’s book, Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman, looks to guide you through many of the problems the fledgling developer is likely to face. Read on to find out whether this book is right for you.
Apprenticeship Patterns sets out to teach you ways in which you can more effectively approach a software development career. It takes the concept of a pattern language and applies it to a job in the industry.
Each piece of advice is presented as a Context, Problem and Solution, and fall into one of five sections:
- Learning to keep an open mind throughout your career
- Maintaining your commitment over a long career
- Assessing your own abilities accurately
- Learning effectively
- Choosing/finding learning materials
It is this pattern language approach that makes the book so appealing. A few spare minutes with the book could answer that one question that’s been bugging you or send you on a path you may never have otherwise considered. You would be hard-pressed not to find a couple of pages which are immediately applicable to your job.
The book is also really valuable thanks to its expression of common problems for beginners. While they bring passion and fresh perspective to the industry, newcomers also have a massive amount of pressure to learn and adapt. Not being able to fully conceptualise and express problems faced can be a frustrating experience. The apprenticeship patterns described in this book can help to put these issues into words.
If you find yourself struggling at the start of your career, or are lacking direction and need to know what to do next, then you could do a lot worse than read this book for ideas.
The obvious answer is the one that the authors themselves give: industry newcomers. The barrier for entry to this book is virtually non-existent and this makes it ideal for those with little experience. If you are an industry novice or advanced beginner then you are likely to get a lot out of the book. There is one caveat, in that the novice might struggle to relate to the problems discussed due to a lack of first-hand experience.
The authors also point out that more experienced developers could glean some new insight from the book. I think this is a little understated. It is very easy to find yourself settling into a comfortable routine or getting stuck in a rut, which I believe the structured approach in the book would help to solve.
One potential audience that I think the authors fail to highlight are senior developers. As they point out several times, apprentices will eventually become journeymen, sharing their knowledge with the less experienced. This book would serve as a good refresher on what many junior developers are going through and what approaches might help them progress.
If you find yourself asking any of the following questions then you should consider reading this book:
- What are the best techniques for continuously improving my craft?
- How do I reach the level of competence of the developers that I look up to?
- What does it mean to be a skilled developer?
- What habits should I build to improve my day-to-day work?
- Am I a bad developer for struggling at work?
- What can I do to reignite and maintain my passion for a software career?
This book is unlike many that I expect to write about on this blog, because it requires next to no prerequisite knowledge in order to get a lot of value out of it. Thanks to it being aimed at relative beginners, the content is easy to understand, and the authors’ analogy of craftsmanship should be understandable to most.
See my mind map for a high-level visual overview of the book.
A key lesson from the book is in how to concentrate on becoming a great developer, rather than climbing the promotional ladder. This essay makes a similar case: we should learn for the sake of learning. Focus on your own knowledge and ability, and good things will come to you.
One piece of advice from the book is to learn concrete skills that will set you apart and serve you well over time. If you want to develop some foundational skills then check out this site.