Saturday, November 7, 2009

Quotes from Apprenticeship of Patterns

The book contains 35 apprenticeship patterns (see below), mostly suited for young and/or inexperienced programmers. 8 of them appears to be more or less useful for me, or speaking by the card, 8 of 35 patterns that are worth reading.


An apprenticeship pattern attempts to offer guidance to someone working with the craft model on the ways in which they can improve the progress of their career.

Expose Your Ignorance

Show the people who are depending on you that the learning process is part of delivering software. Let them see you grow.


Software craftsmen build their reputations through strong relationships with their clients and colleagues. Conceding to unspoken pressures and telling people what they want to hear is not a good way to build strong relationships. Tell people the truth. Let them know that you're starting to understand what they want and you're in the process of learning how to give it to them. If you reassure them, reassure them with your ability to learn, not by pretending to know something you don't. In this way, your reputation will be built upon your learning ability rather than what you already know.

The Deep End

Jump in at the deep end. Waiting until you're ready can become a recipe for never doing a thing. So when you're offered a high-profile role or a difficult problem, grasp it with both hands. Growth only happens by taking on the scary jobs and doing things that stretch you.

A Different Road

[...] Ade's mentor [...] described how he went off to a Greek island for six months to become a windsurfing instructor after his first IT job. He found that he liked teaching windsurfing, but it wasn't entirely satisfying because he never got to use his brain. Afterward, it was hard for him to get back into the industry because "most HR people in big companies didn't like it."

Be the Worst

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

[...] 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.

Reflect As You Work

[...] it is quite easy to repeat the same year of experience 10 times without making significant progress in your abilities. In fact, this sometimes can turn into anti-experience: the phenomenon where every additional year or experience merely reinforces the bad habits you have picked up. This is why your goal should be to become skilled rather than experienced.

Record What You Learn

Try to avoid falling into the trap of just writing down your lessons and forgetting them. Your notebook, blog, or wiki should be a nursery, not a graveyard lessons should be born from this record, rather than going there to die.

Create Feedback Loops

[...] the less skilled you are, the worse you are at assessing the skills of yourself and others.

Dig Deeper

One thing you will learn from trying to apply this pattern is that gaining deep knowledge is hard. This is why most people's knowledge of the computer science that supports software development is a mile wide and an inch thick. It is easier and often more profitable to depend on other people's knowledge of the fundamentals than to spend the extra effort to acquire it yourself. You can tell yourself that you can always learn it when you need it; however, when that day comes you'll need to know everything by the end of the week, but it will take a month just to learn all the prerequisites.

No comments:

Post a Comment