source: https://www.irelandbeforeyoudie.com/

The Apprentice’s Library

Kevin Solorio
Red Squirrel
Published in
3 min readMay 13, 2022

--

At Red Squirrel nearly all of our entry-level engineers start as an apprentice. Our apprenticeship is structured in a way that allows the budding engineer to get hands-on practice through a passion project of their choosing supplemented with some learning materials that are normally determined by their mentor. Over the last few years, I have been using the following four books to kick off their learning with great results.

The Object-Oriented Thought Process by Matt Weisfield

Most of our apprentices have completed a coding bootcamp where they were introduced to Object-Oriented Programming (OOP). They can typically write code using classes and even use inheritance to extend pieces of the frameworks they are working on, such as controllers or models, but tend to lack depth in their understanding of OOP.

The Object-Oriented Thought Process (OOTP) is a fantastic book to reintroduce and solidify their understanding of OOP. The book uses Java for examples, but in most cases, the author does a great job of explaining language enough to understand the concept being introduced. In the few cases where things are still unclear, we will pair up with the apprentice to work through an example.

The book ends with an introduction to SOLID principles, which tends to lead to great conversations on code quality and provides a great vocabulary to use when leaving feedback on their passion project pull requests.

99 Bottles by Sandi Metz, Katrina Owen, and TJ Stankus

After OOTP I like to use 99 Bottles, and even ask the apprentice to follow along by typing the examples in the book to get hands-on with the code samples. Where OOTP teaches the concepts of OOP, 99 Bottles puts these ideas into practice with an application based on the song 99 Bottles of [Beer|Milk]. When you buy the book you will get access to different versions based on your language preference (PHP, Ruby, JavaScript) and your liquid preference (Beer or Milk).

This book seems to be the favorite of the four. Several of our apprentices have commented on how it feels like the author is right there coding alongside them, which is a testament to how well it is written.

Grokking Algorithms by Aditya Y. Bhargava

Grokking Algorithms uses brilliant illustrations and clear explanations to make algorithms approachable for apprentices from any background. This book covers concepts like understanding Big O Notation, differences between linked lists and arrays, and dives into algorithms like quicksort, breadth-first search, and ends with k nearest neighbors algorithm.

We are currently using this book to kick off an algorithms club at Red Squirrel where all our engineers are encouraged to attend. We write the algorithm in multiple languages to help keep the focus on the steps needed for the algorithm and not memorizing a specific implementation.

In short, this book is a great introduction to algorithms for beginners and a fun refresher for experienced engineers.

Refactoring by Martin Fowler

Refactoring is one of the best books for creating a succinct way to describe common code smells and their remedies. Most of the book provides a highly mechanical means of performing a specific refactoring, which can be tedious. I usually do not recommend going cover to cover right away but taking it in a little at a time.

Summing Up

One commonality among these books is that they are timeless. Each of the books will use a programming language as a way to provide examples of concepts, but the language is not the focal point of the lesson being learned. These books all provide valuable insights and lessons for engineers of all levels and they are extremely helpful for those engineers entering the field from non-traditional backgrounds and will likely provide the backbone of our apprenticeship for the foreseeable future.

--

--