David H. Hoover & Adewale Oshineye

Apprenticeship Patterns

This is an excellent book that talks about different patterns that you can implement in your day to day to become a software craftsman.

Going through different levels

The book starts by describing the three levels of craftsmanship:

  • Apprenticeship
  • Journeyman
  • Master

These three levels are great because you can see exactly where you may be in your journey and what you need to do to achieve the next level. At a high level:

  • Apprentices need to learn how to learn, grow themselves and get mentoring from the two other levels.
  • Journeymen focus on connections within and outside the team, mentor those around themselves and build a larger portfolio to show progress.
  • Masters focus on moving the industry forward, enhancing the skills of others, creating tools for others to use, training journeymen and apprentices.

Learning a language

This section offers great advice if you want to apply for a job that uses a particular language. You should build a toy application using that language and open source it so your prospective employer can see a sample of your work.

It also mentions that:

One of the fundamental ways to improve the experience of learning your first language is to have an actual problem to solve.

This section also mentions that once you learn your first language, you should look for opportunities to learn languages that take a different approach than the ones you already know.

Apprentices comfortable with an object-oriented language should explore a functional programming language

Steps after getting the first job

The book also offers great tips on what you should do once you get your first job. The one thing that stuck with me was that a path might take you to management. If that's the path, you want to take, great! But if you're going to become better at your craft, you should seek opportunities to learn and keep practising so you can grow.

Practicing and Breakable Toys

Take the time to practice your craft without interruptions in an environment where you can feel comfortable making mistakes.

These two patterns are intertwined. You need to practice your craft in a playful environment where you don't need to deal with stress such as deadlines, incidents or interruptions.

Experience is built upon failure as much as (if not more than) success.

Breakable Toys is a project that should mimic what you are learning or what you want to work on. They are a safe place to make mistakes and try different things without putting yourself out there.

These projects can be as simple or as complex as you would like them to be and the great thing about them is that you don't need to show them until you are ready for it. Some may never leave your computer.

Reading

One of the patterns is about keeping reading and keeping a list filled with relevant books and classics that are still relevant today.

Reading is important because you go past the cursory glance of tutorials when you read a book on a specific thing. You can get more context and more in-depth knowledge about what you are reading.

Personal Opinion

I love this book, it's small enough for you to read pretty quickly. But it is also filled with great pieces of advice and actionable items that will help you implement these patterns.

This is one of those books that you should come back to from time to time, pick a pattern and implement it. You will definitely become a better software engineer if you apply these patterns.