O'Reilly logo

Apprenticeship Patterns by Adewale Oshineye, Dave Hoover

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 4. Accurate Self-Assessment

image with no caption

One of the primary risks for someone who learns quickly is becoming a big fish in a small pond. While there is nothing inherently wrong with small ponds or big fish, it is critical for the big fish to be aware of other ponds within the vast global network of ponds, and more importantly, the existence of enormous fish, fish that even exceed the size of your little pond.

The talented and hard-working apprentice must not become self-satisfied with his success. It is very easy to rise above the mediocre in the field of software development because too many people become satisfied with staying only slightly ahead of the curve. You must fight this tendency toward mediocrity by seeking out and learning about other teams, organizations, journeymen, and master craftsmen that work at a level of proficiency that an apprentice cannot even imagine.

You must be willing to let go of your perceived competence and allow yourself to recognize that you have traveled only a short distance on The Long Road. Your goal isn’t to become better than the “average developer.” Your goal is to measure your abilities and find ways to be better than you were yesterday. We’re all on the same journey, and comparing ourselves to others is useful only when it allows us to find ways to help each other improve.

Be the Worst

image with no caption

Be the lion’s tail rather than the fox’s head!

Context

You have Unleashed Your Enthusiasm and taken every opportunity to learn new skills. As a result, you have outgrown your team and possibly your entire development organization.

Problem

Your rate of learning has leveled off.

Solution

Surround yourself with developers who are better than you. Find a stronger team where you are the weakest member and have room to grow.

Be the Worst was the seminal pattern of this pattern language. It was lifted from some advice that Pat Metheny offered to young musicians: “Be the worst guy in every band you’re in.”[21] Pat’s advice struck a chord with Dave, and was one of the reasons he started writing this book.

Being in a strong team can make you feel as if you are performing better. The other members of that team will often prevent you from making mistakes, and help you recover from mistakes so smoothly that you won’t realize that you may not be learning as much as you think. It’s only when you work on your own that you will see how much your team increases your productivity and realize how much you have learned. This makes Reflecting as You Work and building Breakable Toys particularly important for people who are the worst on their team. Both provide opportunities to take a step back from the team environment to see what habits, techniques, and knowledge you’re picking up from Rubbing Elbows with your more experienced teammates.

The drawing shows that as the weakest member of the team, you should be working harder than anyone else. This is because the goal is not to stay the weakest, but to start at the bottom and work your way up. You do this by consciously finding ways to improve and mimicking the stronger developers until you are on the same level as the rest of the team. Without this conscious attention to learning from the team, you will face several risks.

First, there is the risk that you will drag the team down. Second, since good teams won’t tolerate (for long) someone who is just a passenger, you run the risk of being fired if you’re so far behind that you can’t catch up or don’t seem to be catching up quickly enough. Another side effect of joining a strong team is that you can end up feeling bad about yourself and your skill level unless you’re actively honing your skills. At its best, this can motivate you to improve. But like any “sink or swim” strategy, when it fails you will find yourself drowning. This is why it is essential to Create Feedback Loops so that you can tell when you’re in trouble. This feedback will tell you if the team is too far ahead of you or hostile to people trying to work their way up.

Like Stay in the Trenches, Be the Worst clashes with cultural norms that encourage you to attain a position of superiority as fast as you can. But as an apprentice, you should value opportunities to learn the craft over expanding and asserting your authority. Sometimes that means you’re leading a team (see The Deep End), but as an apprentice, you should typically look to be led.

There is a selfish aspect to purposely joining a team as the worst member. To counter this, complement Be the Worst with Sweep the Floor and Concrete Skills. Sweep The Floor means to explicitly seek out menial tasks in order to directly add value to the project. Developing Concrete Skills will increase your contributions to the development effort and is fundamental to your role as an apprentice. Without these kinds of contributions, this pattern can lead to strong teams being fatally weakened, as Jamie Zawinski points out in his infamous open resignation letter from the Mozilla project.[22] Ultimately, your (rapidly) increasing contribution to the team is why these strong teams will take the risk of bringing you on board.

Jake Scruggs says it well when he speaks of his summer apprenticeship at Object Mentor:

Collaborating with great developers will help you maintain a more accurate self-assessment as well as provide help in Finding Mentors. However, this pattern is usually inappropriate for more experienced developers who are looking to become journeymen. At that stage, you should be looking to mentor novices and give others the opportunities you have been given.

Action

List all the teams you know. Include open source projects, other departments, and other companies. Sort these teams by skill level, then identify a team that is open to new members who want to work their way up. This may require you to join several mailing lists and ask various people questions in order to gauge their relative skill level. At the end of the process you will be better at comparing skill levels, and may even have a new team!



[21] Chris Morris’s blog, “Be The Worst.” Available at: http://clabs.org/blogki/index.cgi?page=/TheArts/BeTheWorst.

[22] Resignation and postmortem: http://www.jwz.org/gruntle/nomo.html.

[23] Jake Scruggs, “My Apprenticeship at Object Mentor.” Available at: http://www.jikity.com/Blah/apprentice.htm.

[24] Brian Tatnall, “New beginnings with Obtiva.” Available at: http://syntatic.wordpress.com/2007/05/18/new-beginnings-with-obtiva/.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required