Apprentice coder books: Apprenticeship Patterns, by Hoover and Oshineye, O’Reilly, 2009

Apprenticeship patterns, book, learn to code, programming, Dave H. Hoover, Adewale Oshineye

You are not alone. What I mean is, if you are sometimes feeling lost and overwhelmed in the world of Computer Science, programming, web development and the alike, you are not the only one feeling that way. The problem is that, nevertheless the world is full of IT students, enthusiasts and professionals trying hard to find their way and getting lost and found over and over again, it is also full of people who are lost but very good at pretending that they are not. Understandably so. Which, however, leaves a lot of people feeling like they are the only ones lost. One of the patterns in this book says “expose your ignorance”, which is interesting. I would also add “admit that you sometimes feel lost” in the world of IT. It’s OK to acknowledge the complexity of the IT world, and it is OK to need maps. Some of these maps are books. BTW which maps have you found useful? How do you share your maps with others? Do tell me in the comments, please!

One of these useful maps is the book “Apprenticeship Patterns” (read it online here!), by Dave H. Hoover and Adewale Oshineye, published by O’Reilly Media, first edition in 2009 (mine is the 2010 one). It is great for reminding you that you are not the only one finding your way along the apprenticeship path. And it also contains good advice, presented in an interesting way. Suggestion it offers range from learning your first programming language to constructing breakable toys, from finding mentors to choosing teams where everyone is better then you (be the worst), from unleashing your enthusiasm (and beginner’s enthusiasm is a resource for the team) to learning how you fail, from organizing your reading list, including the classics, to sharing what you learn, etc. Different aspects of the programming craft are taken into account, and things that are too often left unspoken or taken for granted are spelled out for you. The book may not be quite as fun and funky as Chad Fowler’s “The Passionate Programmer”, which I shall blog about some other time, but it is definitely a useful read.

Click “Continue reading” to get more details. Please do write in the comments if you have any advice of your own about dealing with these issues. How do you map? How do you keep your maps? How do you decide your priorities and manage your time? How do you keep track of your progress? And anything else that comes to mind.

Apprenticeship patterns, book, learn to code, programming, Dave H. Hoover, Adewale Oshineye

What do the authors of “Apprenticeship Patterns” mean by the word apprentice? They map out the learning process into stages that are apprentice, journeyman and master. The more you progress along that path, the more you can see the big picture and combine different elements of your craft to create complex solutions. The patterns are expressed in a form that contains context, problem, solution, action and links to other related patterns.

The first chapter is an introduction.

The second chapter is about “Emptying your cup”, that is knowing how to be a beginner, and knowing how to act as a beginner every once in a while, to start over, reboot yourself a bit, can be useful. The patters are (click to read them online):

Your First Language
The White Belt
Unleash Your Enthusiasm
Concrete Skills
Expose Your Ignorance
Confront Your Ignorance
The Deep End
Retreat into Competence
Wrapping Up

I LOVE the way they dedicate a “pattern” to reminding everyone that the beginner’s enthusiasm is a great resource for everyone around. The apprentice may not be the champion of ability in the team, but has a precious one to see everything with fresh eyes, mind and heart, which can be all around motivating and boost productivity. I like the idea that exposing and confronting your ignorance is a good thing, and that we need to work towards a culture that encourages that. I find it interesting that it is considered useful for more advanced programmers to retreat into competence every once in a while to regain composure, if you feel lost and in over your head. Because we are not beginners just once in our lives, but over and over again in different ways.

Apprenticeship patterns, book, learn to code, programming, chapter 3, Walking the Long RoadChapter 3 is about “Walking the Long Road”. The patterns are (click to read online):

The Long Road
Craft over Art
Sustainable Motivations
Nurture Your Passion
Draw Your Own Map
Use Your Title
Stay in the Trenches
A Different Road
Wrapping Up

I like this citation, from the Long Road pattern:

“First, accept the fact that you may be considered a bit strange for what you want to become. Second, keep your focus on the long term. During your apprenticeship, value learning and long-term growth opportunities over salary and traditional notions of leadership.”

This is important because the world of IT, programming and the Web can be a confusing one, full of all kinds of people with all kinds of motivations who would have you believe all kinds of things. That is why it is important to keep your priorities straight, and think long term, almost monk like. Takes dedication. I was blessed with having had the opportunity to encounter some inspiring and very advanced techies in my life, so I know how good, creative and dedicated one can and should aspire to get. That makes it easier for me.

Apprenticeship patterns, book, learn to code, programming, chapter 4 "Accurate Self-Assessment"Chapter 4 is about “Accurate Self-Assessment”. The patterns are (click to read online):

Be the Worst
Find Mentors
Kindred Spirits
Rubbing Elbows
Sweep the Floor
Wrapping Up

I am inspired by the advice to be the worst, and find it fundamental. I’ve seen people get trapped in the idea that they need to be the best or, even worse, appear to be the best, which makes them pretend to be better then they are or surround themselves with so-so people, just to boost their own ego. Which stops them from improving and actually become the best that they wanted to be (even though no best should ever be good enough, best is relative). Being the worst, finding mentors and kindred spirits, rubbing elbows and sweeping floors all have to do with humility and modesty. But these words need to be understood correctly, it is not about belittling yourself in order not to offend the egos of others, it’s about keeping your energy well focused and not wasting it in showing of and trying to appear better then you are.

Apprenticeship patterns, book, learn to code, programming, chapter 5, "Perpetual Learning"Chapter 5 is about “Perpetual Learning”. The patterns are (click to read online):

Expand Your Bandwidth
Practice, Practice, Practice
Breakable Toys
Use the Source
Reflect As You Work
Record What You Learn
Share What You Learn
Create Feedback Loops
Learn How You Fail
Wrapping Up

This is about cultivating your skills. Sometimes it means expanding your horizons and finding new ideas, others it just takes practice, practice, practice and building “breakable toys”. Reading the source code is always a good idea. And also “reading the source code” of your own career, that is “self reflection” is a must, that is you should always keep track of what you are doing, what you are capable of, what is going on, in order to avoid becoming victim of the Peter Principle and being promoted to your “level of incompetence”.

Apprenticeship patterns, book, learn to code, programming, chapter 6, "Construct Your Curriculum"Chapter 6 is entitled “Construct Your Curriculum”. The patterns are:

Reading List
Read Constantly
Study the Classics
Dig Deeper
Familiar Tools
Wrapping Up

Books over blogs. Written reading lists. The classics. In every problem looking for that “underlying computer science concept behind what you are learning, and what trade-offs were made in the implementation that you are using”. Figuring out if the problem “has a well-known solution or is in fact impossible”. Gaining deep knowledge is hard, but well worth it.

Apprenticeship for me is about being enthusiastic and grateful for simply learning something interesting every day, being willing to work for that, and finding motivation in it.


About apprenticecoder

My blog is about me learning to program, and trying to narrate it in interesting ways. I love to learn and to learn through creativity. For example I like computers, but even more I like to see what computers can do for people. That's why I find web programming and scripting especially exciting. I was born in Split, Croatia, went to college in Bologna, Italy and now live in Milan. I like reading, especially non-fiction (lately). I'd like to read more poetry. I find architecture inspiring. Museums as well. Some more then others. Interfaces. Lifestyle magazines with interesting points of view. Semantic web. Strolls in nature. The sea.
This entry was posted in books, learn-to-learn and tagged , , , , , , . Bookmark the permalink.

1 Response to Apprentice coder books: Apprenticeship Patterns, by Hoover and Oshineye, O’Reilly, 2009

  1. Pingback: deephacks » The Truly Educated Never Graduate

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s