# Wednesday, 24 August 2016

"Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman" by Dave Hoover and Adewale Oshineye is written primarily for people entering the profession of software development.

Hoover and Oshineye draw upon their years in the industry to provide advice on how to succeed - how to advance your skills and improve your career.

They present this advice as "patterns" - a term taken from the software design patterns made  famous by Gamma, Helm, Johnson, and Vlissides. Like the software patterns, these Apprenticeship Patterns favor general guidance over explicit step-by-step instructions. Often a chapter will end with a qualifying sentence, warning the user not to be too dogmatic in following an approach to its logical extreme.

Each pattern is presented briefly and concisely and includes action items that the user can apply to his or her own career.

Many of the Patterns provide advice on how to approach education. They begin with learning your first language and "Unleash your Enthusiasm" to motivate your quest for knowledge; applying that education to "Concrete Skills" in your job and  "Confront Your Ignorance" to recognize and address gaps in your knowledge.

Later chapters provide advice as you begin to master skills, including "Reflect As You Work" and "Record What You Learn".

Ultimately the book promotes Software Craftsmanship - a growing movement designed to improve the overall quality of the software industry. The authors relate the book's patterns to how they achieved a level of craftsmanship in their own careers. Hoover and Oshineye provide numerous examples of times that they and people they know applied these patterns in real-world scenarios.

Apprenticeship Patterns was published in 2009, but remains relevant today as thousands of young people continue to pour into the software industry. In fact, this book is more relevant than the vast majority of technical books written at the same time. This advice does not go out of date as new technologies are developed.

People beginning their software careers will benefit from this book. So did I, despite the fact that I switched to this profession decades ago. I read  good advice on expanding my skill sets; and I read good advice to pass on as I mentor junior developers.

I wish this book had existed when I first entered this profession.