Coding In Public

52
Coding In Public Alan Stevens or If You’re Gonna’ Suck, Do It With Gusto!

description

 

Transcript of Coding In Public

Page 1: Coding In Public

Coding In Public

Alan Stevens

or If You’re Gonna’ Suck, Do It With Gusto!

Page 2: Coding In Public

WHO IS ALAN STEVENS?

• Microsoft Most Valuable Professional• ASP Insider• Occasional Blogger

http://netcave.org• An Enthusiast NOT an expert!

Page 3: Coding In Public

June 26th – 27th 2009

• Knoxville, TN• Regional Speakers / Open

Spaces• .NET, Java, Ruby, Erlang, more• Call for speakers – March 31– 3 & 6 hour sessions on Friday– 1 hour sessions on Saturday

• http://CodeStock.org• http://twitter.com/CodeStock

Page 4: Coding In Public

DevLink

August 13-15, 2009 Nashville, TNwww.devlink.net

Page 5: Coding In Public

I am a failed educator.

Page 6: Coding In Public

“I never stopped trying to become qualified for the job.”

Darwin Smith, CEO of Kimberly Clark

Page 7: Coding In Public

Dreyfus Stages of Skill Acquisition

1. Novice2. Advanced Beginner3. Competent4. Proficient5. Expert

Page 8: Coding In Public

Novice

• Rigid adherence to taught rules or plans• Little situational perception• No discretionary judgment

Page 9: Coding In Public

Advanced Beginner

• Guidelines for action based on attributes or aspects

• Situational perception is still limited• All attributes and aspects are treated

separately and given equal importance

Page 10: Coding In Public

Competent

• Sees action at least partially in terms of longer-term goals

• Conscious, deliberate planning• Standardized and routinized procedures• Plan guides performance as situation evolves

Page 11: Coding In Public

Proficient

• Sees situation holistically rather than in terms of aspects

• Sees what is most important in a situation• Perceives deviations from the normal pattern• Uses maxims, whose meanings vary according

to the situation, for guidance• Situational factors guide performance as

situation evolves

Page 12: Coding In Public

Expert

• No longer relies on rules, guidelines, or maxims

• Intuitive grasp of situations based on deep tacit understanding

• Intuitive recognition of appropriate decision or action

• Analytic approaches used only in novel situations or when problems occur

Page 13: Coding In Public

Where We Stand

Novice

Advanced Beginner

Competent

Proficient

Expert

Source: Hackos & Stevens, 1997 via the Pragmatic Programmers

Page 14: Coding In Public

"The vast majority of all users remain advanced beginners, performing the tasks they need and learning new tasks as the need arises, but never acquiring a more broad-based, conceptual understanding of the task environment"

Hackos & Stevens, 1997, p. 36

Page 15: Coding In Public

You can write COBOL in any language.

Page 16: Coding In Public

Everybody works, but not everybody improves.

WHY?

Page 17: Coding In Public

The Mastery Curve

Page 18: Coding In Public

The Dabbler

Page 19: Coding In Public

The Obsessive

Page 20: Coding In Public

The “Hacker”

Page 21: Coding In Public

After moving up a level, things always get worse.

Page 22: Coding In Public

Zones of ComfortComfort ZoneLearning ZonePanic Zone

Page 23: Coding In Public

Comfort Zone

People stay hereMinds often closed to learning

Very little change

Page 24: Coding In Public

Learning Zone

Lots of UncertaintyFeels uncomfortable

and challengingLots of learning opportunities

Page 25: Coding In Public

Panic Zone

People close upThey freeze

They don’t learnVery little focus on change and improvement –

it’s all about survival

Page 26: Coding In Public

The Fast Horse?

Page 27: Coding In Public

What is expertise?

• Performance consistently superior to peers• Produces concrete results• Can be replicated

Page 28: Coding In Public

Recipe For Greatness

1.Intensive practice2.Devoted teachers3.Enthusiastic support

Page 29: Coding In Public

Deliberate Practice is Designed

Page 30: Coding In Public

Deliberate practice

focuses on tasks beyond your current

level of competence and comfort.

Page 31: Coding In Public

It is only by working at what you can’t do that you become an expert

Page 32: Coding In Public

Be honest about areas for improvement

Page 33: Coding In Public

Practice without attention to reflection and form will not yield the same results.

Page 34: Coding In Public

Deliberate practice is not “fun”, but it is rewarding.

Page 35: Coding In Public

Flow requires challenge or boredom results.

Page 36: Coding In Public

“If you practice with your fingers, no amount is enough. If you practice with your head, two hours is plenty.”

Violin Professor Leopold Auer

Page 37: Coding In Public

10,000 hours to mastery

• 4-6-10• 4 hours/day• 6 days/week• For 10 years!

Page 38: Coding In Public

How can we encourage greatness(or at least improvement)?

• Be supportive of efforts to improve– Allow one another to suck (with gusto!)

• Be a mentor• Catalog simulations and case studies

Page 39: Coding In Public

Provide a supportive environment

Page 40: Coding In Public

Be willing to be a mentor

Page 41: Coding In Public

Be willing to receive constructive,

unsentimental feedback

Page 42: Coding In Public

Remember the Kobayashi Maru

Page 43: Coding In Public
Page 44: Coding In Public

Simulations and Case Studies

• Code Kata• Code Dojo• Bitslingers• “Code Sparring”

Page 45: Coding In Public

Greatness is not a function of circumstances. Greatness, as it turns out, is largely a matter of conscious choice.

Jim Collins in Good to Great

Page 46: Coding In Public
Page 47: Coding In Public
Page 48: Coding In Public
Page 50: Coding In Public

In order to become an expert, you must become eccentric.

Page 51: Coding In Public

Those who know do not speak;Those who speak do not know.

Tao Te Ching, Chapter 56

Page 52: Coding In Public

Thanks For Listening!

Email/IM: [email protected]

Blog: http://netcave.org

Twitter: @alanstevens