Coding In PublicAlan Stevensor If You’re Gonna’ Suck, Do It With Gusto!
Who is Alan Stevens?Microsoft Most Valuable ProfessionalASP InsiderOccasional Blogger http://netcave.orgAn Enthusiast NOT an expert!
June 26th – 27th 2009Knoxville, 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/CodeStockDevLinkAugust 13-15, 2009 Nashville, TNwww.devlink.net
I am a failed educator.
“I never stopped trying to become qualified for the job.”Darwin Smith, CEO of Kimberly Clark
Dreyfus Stages of Skill AcquisitionNoviceAdvanced BeginnerCompetentProficientExpert
NoviceRigid adherence to taught rules or plansLittle situational perceptionNo discretionary judgment
Advanced BeginnerGuidelines for action based on attributes or aspectsSituational perception is still limitedAll attributes and aspects are treated separately and given equal importance
CompetentSees action at least partially in terms of longer-term goalsConscious, deliberate planningStandardized and routinized proceduresPlan guides performance as situation evolves
ProficientSees situation holistically rather than in terms of aspectsSees what is most important in a situationPerceives deviations from the normal patternUses maxims, whose meanings vary according to the situation, for guidanceSituational factors guide performance as situation evolves
ExpertNo longer relies on rules, guidelines, or maximsIntuitive grasp of situations based on deep tacit understandingIntuitive recognition of appropriate decision or action Analytic approaches used only in novel situations or when problems occur
Where We StandExpertProficientCompetentAdvanced BeginnerNoviceSource: Hackos & Stevens, 1997 via the Pragmatic Programmers
"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
You can write COBOL in any language.
Everybody works, but not everybody improves.WHY?
The Mastery Curve
The Dabbler
The Obsessive
The “Hacker”
After moving up a level, things always get worse.
Zones of Comfort
Comfort ZonePeople stay hereMinds often closed to learningVery little change
Learning ZoneLots of UncertaintyFeels uncomfortableand challengingLots of learning opportunities
Panic ZonePeople close upThey freezeThey don’t learnVery little focus on change and improvement – it’s all about survival
The Fast Horse?
What is expertise?Performance consistently superior to peersProduces concrete resultsCan be replicated
Recipe For GreatnessIntensive practiceDevoted teachersEnthusiastic support
Deliberate Practice is Designed
Deliberate practice focuses on tasks beyond your current level of competence and comfort.
It is only by working at what you can’t do that you become an expert
Observe results and make adjustments
Assess mistakes and figure out how to correct them
Be honest about areas for improvement
Practice without attention to reflection and form will not yield the same results.
Deliberate practice is not “fun”, but it is rewarding.
Flow requires challenge or boredom results.
“If you practice with your fingers, no amount is enough. If you practice with your head, two hours is plenty.”Violin Professor Leopold Auer
10,000 hours to mastery4-6-104 hours/day6 days/weekFor 10 years!
How can we encourage greatness(or at least improvement)?Be supportive of efforts to improveAllow one another to suck (with gusto!)Be a mentorCatalog simulations and case studies
Provide a supportive environment
Be willing to be a mentor
Be willing to receive constructive, unsentimental feedback
Remember the Kobayashi Maru
Simulations and Case StudiesCode KataCode DojoBitslingers“Code Sparring”

Coding In Public