Max Tiu

Max Tiu

Apprenticeship Patterns: Lessons Learned

June 26, 2016

For the past six months, I've been part of a book club of developing developers reading Apprenticeship Patterns by Dave Hoover and Adewale Oshineye. We took a leisurely pace to truly understand and appreciate all the different lessons this book provides and I'm so glad we did. The book is structured in patterns: reusable solutions to common problems in one's career. While the Record What You Learn and Share What You Learn patterns have been massively influential for me in an immediate and concrete way (they're why I started this blog), I've found more useful advice in some of the book's overall themes.

Be the Worst

Instead of focusing on the Be the Worst pattern, a better, more relevant message for me has been the book's theme of being humble.

It's always a nice to have a reminder that many, many people are more experienced and have more knowledge than you do. That everyone, no matter their experience level, has something they can teach you. I reached a moment recently when I felt like I had learned a lot about Ruby and Rails thus far in my short career. Soon after, I stumbled on a large area of the Ruby core documentation that I hadn't encountered or used before; it became immediately apparent that no, I really know nothing in the grand scheme of things. This cycle never ends. Hey, I learned a thing! Oh, I don't really know much about said thing. And I'm okay with that. I'm here to learn.

I'm happy to Be the Worst on a team, to be a fly on the wall and absorb as much as I can while gratefully in the presence of others willing to share their knowledge.

Always Be Learning

While not an actual pattern from the book, this is a common theme spread throughout. Hoover and Oshineye reccomend that developing developers Study the Classics to learn the fundamentals; to have Breakable Toys to experiment with new designs or technologies; to dive into The Deep End for a more involved understanding of one's work; to Practice, Practice, Practice. This learning is what drives a career.

Striking a balance of constant learning while maintaining a full-time job isn't an easy one. Preventing burnout should be a top priority. But reading books, learning new languages and frameworks, and writing blog posts when you've got the time and mental energy is key to a long, happy career, Hoover and Oshineye say.

Through discussion with our book club, we came up with a technique for continuing learning without burnout: make a list of 5 topics to learn each month. No more, no less. The limit of 5 items prevents distracted, manic consumption of every conference talk or blog post on the internet, while also providing a sizable list of accomplishments in a concrete period of time.

Stay Employed

One of the book's authors, Dave, was kind enough to have a video chat with our book club to answer some of our burning questions surrounding the book. By far, of all the advice he gave us, the one nugget that stood out was to Stay Employed. Though it seems a bit obvious, without a steady job, you don't have a framework to constantly grow and learn new things. Staying employed will often mean making compromises in other departments. Sometimes meeting business needs means you won't be able to focus on maximizing your learning. Not every employment situation will be ideal, but keeping the bills paid is what gives you the privilege to fulfill oneself with Breakable Toys on the weekends. Plus, every employment situation will teach you lessons in software craftsmanship, even if they're lessons in what not to do.

Travel the Long Road

This was by far the most influential pattern in the book. It has completely shifted how I view my career and my industry.

The Long Road is the idea that one should not aim for immediate or quick “success.” Moreover, other people cannot define what success means for you. You can write software for the rest of your life, so there's no rush to achieve X position, salary, or status. While it can be difficult, the Long Road provides guidance and purpose for not being competitive; you should pace your learning at your own speed, not comparing yourself to anyone else. People traveling the Long Road must listen only to the intrinsic motivations stemming from a love of the craft of building software and the persistent desire to know more and be better.

It's not the path for everyone, but it's certainly the road I travel. Personally, it was great to read this idea put into words. This is precisely how I feel about my work; I'd rather make less money and be in a position emphasizing learning than make six figures at a company that doesn't value personal and professional growth. I don't ever aspire to the C-suite. Above all else, I love building and making things. I love writing code and creating software. And I want to do exactly this for the rest of my life, learning more every single day.

If you haven't read Apprenticeship Patterns, I highly recommend it. The majority of the patterns within are widely applicable to all stages of one's career. Better yet, the entire book is available online for free via O'Reilly. Do buy the book if you like it, though; my copy will rest prominently on my shelf, to be referenced for years to come.