apprenticeship patterns

60
APPRENTICESHIP PATTERNS (guidance for the aspiring software craftsman)

Upload: vladimir-tsvetkov

Post on 01-Nov-2014

237 views

Category:

Education


5 download

DESCRIPTION

These are the slides I presented to my team last week, introducing them with the ideas from the Apprenticeship Patterns book - http://chimera.labs.oreilly.com/books/1234000001813/index.html

TRANSCRIPT

Page 1: Apprenticeship Patterns

APPRENTICESHIP PATTERNS(guidance for the aspiring software craftsman)

Page 2: Apprenticeship Patterns

APPRENTICESHIP PATTERNS(guidance for the aspiring software craftsman)

3 key things

to introduce

before the patterns

1. What means to be ‘aspiring’?

2. What is ‘Software

Craftsmanship’?

3. What is ‘Apprenticeship’?

Page 3: Apprenticeship Patterns
Page 4: Apprenticeship Patterns

aspiring verb [ intrans. ]

direct one's hopes or ambitions toward achieving something

Page 5: Apprenticeship Patterns

aspiring verb [ intrans. ]

direct one's hopes or ambitions toward achieving something

e.g. to become a master of software craftsmanship

Page 6: Apprenticeship Patterns
Page 7: Apprenticeship Patterns
Page 8: Apprenticeship Patterns

a community1 of practice united and defined by overlapping values2

2. some of the key values are introduced on the next series of slides →

1. doesn’t exclude those people who feel that there’s something valuable in the attempt to build a discipline of software engineering

Page 9: Apprenticeship Patterns

GROWTH MINDSET

This entails a belief that you can be better and everything can be improved if you’re prepared to work at it.

Page 10: Apprenticeship Patterns

A need to always be adapting and changing based on the feedback you get from the world around you.

Atul Gawande refers to this as a willingness to “recognize the inadequacies in what you do and to seek out solutions” (Better, p. 257).

Page 11: Apprenticeship Patterns

PRAGMATISM OVER DOGMAS

This involves a willingness to trade off theoretical purity or future perfection in favor of getting things done today.

Page 12: Apprenticeship Patterns

Julian Rotter

LOCUS OF CONTROLINTERNAL EXTERNAL

I control the consequences of my behavior

The consequences of my behavior are outside my control

This involves taking control of and responsibility for our destinies rather than just waiting for someone else to give us the answers.

•“things happen to me”

•“why bother?”

•“There is nothing I can do about my future”

“I make things

happen.”

“I can determine my future.”

“look what I

can do!”

Page 13: Apprenticeship Patterns

skill-centric rather than process-centric

For us, it is more important to be highly skilled than to be using the “right” process.

This idea suggests that no process or tool is going to make everyone equally successful. Even though we can all improve, there will always be discrepancies in our skill levels.

Page 14: Apprenticeship Patterns
Page 15: Apprenticeship Patterns

Situated Learning

Its essence is that the best way to learn is to be in the same room with people who are trying to achieve some goal using the skills you wish to learn.

Page 16: Apprenticeship Patterns
Page 17: Apprenticeship Patterns

“What makes a life worth living?”*

* Mihaly Czikszentmihalyi asks this. Noting that money cannot make us happy, he looks to those who find pleasure and lasting satisfaction in activities that bring about a state of "flow."

Page 18: Apprenticeship Patterns
Page 19: Apprenticeship Patterns

CHAL

LEN

GE

SKILLS

Apathy

Worry

Boredom

Arousal

Control

FLOWAnxiety

Relaxation

UNDERSTANDING FLOW1. intense and focused

concentration on the present moment

2. merging of action and awareness

3. a loss of reflective self-consciousness

4.a sense of personal control or agency over the situation or activity

5. a distortion of temporal experience, one's subjective experience of time is altered

6.experience of the activity as intrinsically rewarding, also referred to as autotelic experience

Page 20: Apprenticeship Patterns

CHAL

LEN

GE

SKILLS

Apathy

Worry

Boredom

Arousal

Control

FLOWAnxiety

Relaxation

UNDERSTANDING FLOW1. intense and focused

concentration on the present moment

2. merging of action and awareness

3. a loss of reflective self-consciousness

4.a sense of personal control or agency over the situation or activity

5. a distortion of temporal experience, one's subjective experience of time is altered

6.experience of the activity as intrinsically rewarding, also referred to as autotelic experience

The winding curve of learning

Page 21: Apprenticeship Patterns

LET’S LEARN ABOUT LEARNING&

examine some apprenticeship patterns →

Page 22: Apprenticeship Patterns

LET’S LEARN ABOUT LEARNING&

examine some apprenticeship patterns →

focus on some of the patterns(read the book to get to know all

of the documented patterns)

Page 23: Apprenticeship Patterns

1 - Emptying the Cup

Page 24: Apprenticeship Patterns

Expose Your Ignorance

Confront Your Ignorance

Breakable Toys

Concrete Skills

Retreat intoCompetence

Nurture Your Passion

Unleash Your Enthusiasm

Page 25: Apprenticeship Patterns

Confront Your Ignorance

Breakable Toys

Concrete Skills

Retreat intoCompetence

Nurture Your Passion

Unleash Your Enthusiasm

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.

Page 26: Apprenticeship Patterns

Expose Your Ignorance

Breakable Toys

Concrete Skills

Retreat intoCompetence

Nurture Your Passion

Unleash Your Enthusiasm

Pick one skill, tool, or technique and actively fill the gaps in your knowledge about it.

Confront Your Ignorance

Page 27: Apprenticeship Patterns

Confront Your Ignorance

Expose Your Ignorance

Breakable Toys

Retreat intoCompetence

Nurture Your Passion

Unleash Your Enthusiasm

Concrete Skills

Acquire and maintain concrete skills. ...the possession of discrete and demonstrable ability with specific tools and technologies increases the likelihood that you will be trusted to contribute

Page 28: Apprenticeship Patterns

Concrete SkillsConfront Your

Ignorance

Expose Your Ignorance

Breakable Toys

Retreat intoCompetence

Nurture Your Passion

Unleash Your Enthusiasm

Do not allow anyone to dampen your excitement for the craft—it is a precious commodity and will accelerate your learning.

Page 29: Apprenticeship Patterns

2 - Walking the Long Road“How long will it take to master aikido?” a prospective student asks. “How long do you expect to live?” is the only respectable response.

—George Leonard, Mastery

Page 30: Apprenticeship Patterns

Kindred Spirits

Sustainable Motivations

Nurture Your Passion

Expand Your Bandwidth Find Mentors

Study the Classics

Draw Your Own Map

Craft over Art

The Long Road

Page 31: Apprenticeship Patterns

Kindred Spirits

Sustainable Motivations

Nurture Your Passion

Expand Your Bandwidth Find Mentors

Study the Classics

Draw Your Own Map

Craft over Art

The Long Road...keep your focus on the long term. During your apprenticeship, value learning and long-term growth opportunities over salary and traditional notions of leadership.

Page 32: Apprenticeship Patterns

Kindred Spirits

Sustainable Motivations

Nurture Your Passion

Expand Your Bandwidth Find Mentors

Study the Classics

Draw Your Own Map

The Long Road

Craft over Art Focus on delivering value to your customer over advancing your own self-interests.

As a craftsman you are primarily building something that serves the needs of others, not indulging in artistic expression.

Page 33: Apprenticeship Patterns

Kindred Spirits

Nurture Your Passion

Expand Your Bandwidth Find Mentors

Study the Classics

Draw Your Own Map

The Long Road

Craft over Art

Sustainable Motivations

“Anyone who has ever seen a programmer at work...knows that programming itself, if the programmer is given the chance to do it his way, is the biggest motivation in programming.”

—Jerry Weinberg, The Psychology of Computer Programming

Page 34: Apprenticeship Patterns

“..there is not much overlap between the kind of software that makes money and the kind of software that’s interesting to write.... If you want to make money, you tend to be forced to work on problems that are too nasty for anyone to solve for free.”

—Paul Graham, Hackers & Painters

Page 35: Apprenticeship Patterns

Kindred Spirits

Expand Your Bandwidth Find Mentors

Study the Classics

Draw Your Own Map

The Long Road

Craft over Art

Sustainable Motivations

Nurture Your Passion

Work on what you like. Find something at work that interests you, identify it as something you enjoy, and pour yourself into it. If you can’t spare enough time during the workday for this activity, consider putting in some extra time. If this isn’t feasible, dedicate some time outside of work to build some Breakable Toys.

Page 36: Apprenticeship Patterns

Kindred Spirits

Expand Your Bandwidth Find Mentors

Study the Classics

The Long Road

Craft over Art

Sustainable Motivations

Nurture Your Passion

Draw Your Own Map

Identify a logical but ambitious next step for your career.

Page 37: Apprenticeship Patterns

3 - Accurate Self-AssessmentThe Dunning–Kruger effect is a cognitive bias in which unskilled individuals suffer from illusory superiority, mistakenly rating their ability much higher than is accurate. This bias is attributed to a metacognitive inability of the unskilled to recognize their ineptitude.

Page 38: Apprenticeship Patterns

Rubbing Elbows

Nurture Your Passion

Concrete Skills

Find Mentors

Record What You Learn

The Deep End

The Long Road

Reflect as You Work

Breakable Toys

Sweep the Floor

Create Feedback Loops

Kindred Spirits

Be the Worst

Page 39: Apprenticeship Patterns

Rubbing Elbows

Nurture Your Passion

Concrete Skills

Find Mentors

Record What You Learn

The Deep End

The Long Road

Reflect as You Work

Breakable Toys

Sweep the Floor

Create Feedback Loops

Kindred Spirits

Be the Worst

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

Page 40: Apprenticeship Patterns

Rubbing Elbows

Nurture Your Passion

Concrete Skills

Record What You Learn

The Deep End

The Long Road

Reflect as You Work

Breakable Toys

Sweep the Floor

Create Feedback Loops

Kindred Spirits

Be the Worst

Find MentorsSeek out those who have gone ahead of you and strive to learn from them.

Page 41: Apprenticeship Patterns

Rubbing Elbows

Nurture Your Passion

Concrete Skills

Record What You Learn

The Deep End

The Long Road

Reflect as You Work

Breakable Toys

Sweep the Floor

Create Feedback Loops

Be the Worst

Find Mentors

Kindred Spirits

To keep your momentum going, especially in the absence of a full-time mentor, you need to be in frequent contact with people who are walking a similar road. Therefore you should seek out people like yourself who are also looking to excel.

Page 42: Apprenticeship Patterns

“Nothing is more powerful than a community of talented people working on related problems.”

—Paul Graham, Hackers & Painters

Page 43: Apprenticeship Patterns

Nurture Your Passion

Concrete Skills

Record What You Learn

The Deep End

The Long Road

Reflect as You Work

Breakable Toys

Sweep the Floor

Create Feedback Loops

Kindred Spirits

Be the Worst

Find Mentors

Rubbing Elbows

Find ways to sit with another software developer and accomplish a hands-on task together, side-by-side. There are some things that can only be learned while you are sitting with another software developer to accomplish a shared objective.

Page 44: Apprenticeship Patterns

4 - Perpetual Learning

learningcommunication

software development

+

Page 45: Apprenticeship Patterns

Confront Your Ignorance

Expand YourBandwidth

Find Mentors

Read Constantly

Share What You Learn

Kindred Spirits

Learn How You Fail

Breakable Toys

Draw Your Own Map

Create Feedback Loops

Record What You Learn

Be the Worst

Reflect as You Work

Use the Source

Practice,Practice, PracticeConcrete

Skills

Page 46: Apprenticeship Patterns

Confront Your Ignorance

Find Mentors

Read Constantly

Share What You Learn

Kindred Spirits

Learn How You Fail

Breakable Toys

Draw Your Own Map

Create Feedback Loops

Record What You Learn

Be the Worst

Reflect as You Work

Use the Source

Practice,Practice, PracticeConcrete

Skills

Expand YourBandwidth You must develop the

discipline and techniques necessary to efficiently absorb new information, as well as to understand it, retain it, and apply it.

It involves seeking out new knowledge and experiences in multiple dimensions.

Page 47: Apprenticeship Patterns

Confront Your Ignorance

Find Mentors

Read Constantly

Share What You Learn

Kindred Spirits

Learn How You Fail

Breakable Toys

Draw Your Own Map

Create Feedback Loops

Record What You Learn

Be the Worst

Reflect as You Work

Use the Source

Concrete Skills

Expand YourBandwidth

Practice,Practice, Practice

Take the time to practice your craft without interruptions, in an environment where you can feel comfortable making mistakes.

Page 48: Apprenticeship Patterns

Confront Your Ignorance

Find Mentors

Read Constantly

Share What You Learn

Kindred Spirits

Learn How You Fail

Draw Your Own Map

Create Feedback Loops

Record What You Learn

Be the Worst

Reflect as You Work

Use the Source

Concrete Skills

Expand YourBandwidth

Practice,Practice, Practice

Breakable Toys

Budget for failure by designing and building toy systems that are similar in toolset, but not in scope to the systems you build at work.

Page 49: Apprenticeship Patterns

Confront Your Ignorance

Find Mentors

Read Constantly

Share What You Learn

Kindred Spirits

Learn How You Fail

Draw Your Own Map

Create Feedback Loops

Record What You Learn

Be the Worst

Reflect as You Work

Concrete Skills

Expand YourBandwidth

Practice,Practice, Practice

Breakable Toys

Use the Source

Seek out other people’s code and read it. Start with the applications and tools you use every day.

Page 50: Apprenticeship Patterns

Confront Your Ignorance

Find Mentors

Read Constantly

Share What You Learn

Kindred Spirits

Learn How You Fail

Draw Your Own Map

Create Feedback Loops

Record What You Learn

Be the Worst

Concrete Skills

Expand YourBandwidth

Practice,Practice, Practice

Breakable Toys

Use the Source

Reflect as You Work

This involves regular introspection into how you are working. Consider whether your practices are novel, innovative, or outdated. Ask yourself questions about the things that the rest of your team takes for granted.

Page 51: Apprenticeship Patterns

Confront Your Ignorance

Find Mentors

Read Constantly

Kindred Spirits

Learn How You Fail

Draw Your Own Map

Create Feedback Loops

Be the Worst

Reflect as You Work

Concrete Skills

Expand YourBandwidth

Practice,Practice, Practice

Breakable Toys

Use the Source

Share What You Learn

Record What You Learn

Keep a record of your journey in a journal, personal wiki, or blog. A chronological record of the lessons you have learned can provide inspiration to those you mentor, since it makes your journey explicit, but it can also give you a vital resource to draw upon.

Page 52: Apprenticeship Patterns

5 - Construct Your Curriculum

Page 53: Apprenticeship Patterns

Dig DeeperKindred Spirits Find Mentors

Familiar Tools

Breakable Toys

Expose Your Ignorance

The Long Road

Study the Classics

Read Constantly

Share What You Learn

Reading List

Page 54: Apprenticeship Patterns

Dig DeeperKindred Spirits Find Mentors

Familiar Tools

Breakable Toys

Expose Your Ignorance

The Long Road

Study the Classics

Read Constantly

Share What You Learn

Reading List

Maintain a Reading List to track the books you plan to read, and remember the books you’ve read.

In the spirit of the Share What You Learn pattern, consider storing your list in a public space. This will allow other people to benefit from the things you learn.

Page 55: Apprenticeship Patterns

Dig DeeperKindred Spirits Find Mentors

Familiar Tools

Breakable Toys

Expose Your Ignorance

The Long Road

Study the Classics

Share What You Learn

Reading List

Read Constantly

“If you read even one good programming book every two months, roughly 35 pages a week, you’ll soon have a firm grasp on the industry and distinguish yourself from nearly everyone around you.”—Steve McConnell, Code Complete

Page 56: Apprenticeship Patterns

Dig DeeperKindred Spirits Find Mentors

Familiar Tools

Breakable ToysThe Long

Road

Share What You Learn

Reading List

Read Constantly

Expose Your Ignorance

Study the Classics “Discover the great literature

in your profession or area of interest—the finest books, articles, and speeches ever written—and then begin an earnest study of these works.”—Joshua Kerievsky in “Knowledge Hydrant: A Pattern Language for Study Groups”

Page 57: Apprenticeship Patterns

Kindred Spirits Find Mentors

Familiar Tools

Breakable Toys

Expose Your Ignorance

The Long Road

Study the Classics

Share What You Learn

Reading List

Read Constantly

Dig Deeper

Learn to dig deep into tools, technologies, and techniques. Acquire the depths of knowledge to the point that you know why things are the way they are. Depth means understanding the forces that led to a design rather than just the details of a design.

Page 58: Apprenticeship Patterns

Kindred Spirits Find Mentors

Breakable Toys

Expose Your Ignorance

The Long Road

Study the Classics

Share What You Learn

Reading List

Read Constantly

Dig Deeper

Familiar Tools

Identify and focus on a set of familiar tools. Ideally, these are the tools where you no longer need the documentation... Armed with this knowledge, you can provide reliable estimates about certain parts of your work, limiting the risk to the new and unexplored areas.

Page 59: Apprenticeship Patterns

PROG

RAM

MER

S

SKILLS

Low Average High

“We can take the time needed to nurture apprentice developers because we are faced with the problem of abundance, rather than scarcity....Today we have more developers than needed, but we have a shortage of good developers.”

—Pete McBreen, Software Craftsmanship, p. 93

Page 60: Apprenticeship Patterns

LET’S CHANGE THAT!