Geek Leadershipin Deep Legacy
Michael “GeePaw” Hill
@GeePawHill on Twitter
Constraint: “Legacy”
The Code Is Old
the big ball of mud from Brian Foote
is there just entropy in all code?
The Code is Testless
definition from Mike Feathers
we don’t know what it does
The Code Isn't Ours
even moderately well-written code…
…is legacy if we don’t know its intent
Constraint: “Deep”
Old, Even Ancient3+ Yearsactive developmenthoney/molasses/underwater
Massive Shipping Pressureplanning theaternearly violent competition for resources
We Don't Shipwork begins on the emergency……hot patch the next day.
Constraint: “Geek”
Business Valuehow do we know the target?
Thrown Agencyhow do we move under radical uncertainty?
Geek Joyhow do we bring our whole selves to bear?
Three Strands of Excellence
Constraint: “Leadership”Leader != Boss
people follow you (some)“change my team” won’t work
Pillars of Coachingmodel: be the changesituate: connect the team to their contextrelease: set them freesort: apply “most important story” to selfinvite: charm them into trying it
Five TechniquesOne-Click Refactoring
Pro Pair Rotating
Blind Baby-Stepping
Lottery Lunch & Learn
Pressure Bottlenecking
Why These Five?
Needed
Concrete
Simple
Inclusive
Permissable
One-Click Reading
Learning To Refactor
Without Deep Understanding
The Need
We Need To Start Somewhere
everything’s connected to everything…
…there are no safe changes
(in another domain: depression)
Analysis-Paralysis
the fear is overwhelming
so we need ways to work around it
Mechanics
Use Your IDE, But Restrict Your Motion
actually practice this, it can be hard
allow only one click out of your target file
The Code In Front Of You *Is* The Code
only need to know that called code …
…has no side effects
(another reason to hate globals)
Outcomes
Permission To Moveno side effects is much easier to provefocus refactoring towards it
Support For Baby-Steppinglarger refactorings emergefocus first on revealing the awful
Team Builds Most Basic Skill50 to 1 reading to writingcontributes to sense of progress
Blind Baby Stepping
Refactor In Small Steps
Before We Know Where It Ends
The Need
We Are Going There Right Now
profluence – the sense of progress
support – the sense of mutuality
Closely Related To One-Click Need
start somewhere, dodge paralysis
play through the fear to the joy
Mechanics
One Pure Refactor A Day
what can you do in fifteen minutes
make some days targeted
Add Question At Standup
“today I renamed variables in class X.”
“i extracted three methods for X->Y.”
“we now have an alternate constructor.”
OutcomesCreation Of A Long View
took time getting in, takes time to get outmeanwhile, stop diggingmake progress every single day
Specific Targets Give Specific Progresspractice sharingpractice self-drivingpractice succeedingpractice celebrating
Lottery Learning
Help Your Team
Lead Themselves
To Excellence
The Need
Effective Standards Needednot just rules or a house coding standarda genuine shared vision
Skills Transferstyletechniqueapproachessolutions
Geek Joy Transferwhat better than spending time?
MechanicsA Gathering Of Code-Changers
call in lunch, use *best* projector room
only allow code-changers
With No Prep Time, Choose A Winner
name out of a hat
or rig the game in the beginning
Winner Chooses Any Code
talk, argue, laugh, explain, help, consider
defend, concede, laugh, blush, critique, laugh
Outcomes
Massive Creation Of Energyenergy to considerjuice for change(random is important, here)
The Incredible Ever-Rising Standardyou simply won’t believe itthey’ll make a standardthey’ll improve it every meetingall you have to do is watch and play
Pro Pair Rotating
WAIT!!!
Just Wait!
You Haven’t Heard Me Yet
The Need
Skill Transfers Neededwe have great goto geeks……but they know “too much”……and we need to break up their silos
High Speed Neededbut classes are too expensive……documents are too outdated……and surfing throws up more q’s than a’s
Mechanics
Make Pairing Stationsroughly one per-goto geekoptimize them for real-world pairing
Build Senior’s Pairing Skillsno driving allowed, use talk & sketchesremind and reward *teaching* goals
Rotate Rapidlytwo two-hour sessions per dayeach with random other juniors
A Good Pairing Station
King Stays vs. Jack Stays
When rotating, pairs split up, while the task is still a whole. Who stays on the task?
King Stays
senior geek keeps the task
best when the silos are few and tall
Jack Stays
junior geek keeps the task
best when seniors are “all round” skilled
Outcomes
Fastest Possible Knowledge Transferif seniors get their targets straightjuniors will be inhaling skill
Great Way To Learn Coachinggot would-be coaches?“hand-sit pairing” is a fount of practice
Validated Team Assessmentslearn exactly where juniors arediscover FAQ’s and answer them
Pressure Bottlenecking
Use Your Influence
To Limit Work In Progress
At The Source
The Need
Alternatives To Death Marchcollossal waste planning theaterendless overtimemental and physical exhaustion
Unanimous Grasp Of Priority & Limiteveryone knows the problem……but no one can quite face the solution
Mechanics
Radically Limit Work In Progresspure pull systemworry most about “rows per column”
Create Strong Information Radiatorkanban boards are potent *and* trendyuse a whiteboard, not a computer
Adopt Standups & Core Hoursmeeting discipline is urgent
A Kanban Radiator
Rows Vs. Columns
Outcomes
Pressure Will Drop
this is not rational
fortunately, neither are people
Managers Will Get It
especially grandbosses and up
over time, you’ll be *required* to do it
Five Techniques ReduxOne-Click Refactoring
Pro Pair Rotating
Blind Baby-Stepping
Lottery Lunch & Learn
Pressure Bottlenecking