technical)excellence)doesn't)just) happen)–)igniting)a ...files.meetup.com/1508927/technical...
TRANSCRIPT
7/22/15&
1&
Technical)Excellence)Doesn't)Just)Happen)–)Igniting)a)Craftsmanship)Culture))By&Allison&Pollard&and&Mike&Rieser&
INTRODUCTIONS)This&is&us!&
7/22/15&
2&
Allison)Pollard)• Agile&“Process”&Coach&and&Consultant&
• Firm&Believer&in&
ConDnuous&Improvement&
• DFW&Scrum&User&Group&
leader&
• Glasses&wearer&
Mike)Rieser)(reeGsir))• Agile&Coach&and&Consultant&
• Technical&PracDces&Coach&
• “Programmer&shirt”&
wearer&
7/22/15&
3&
TECHNICAL)EXCELLENCE)
“In&an&agile&project,&technical&excellence&is&measured&by&both&capacity&to&deliver&customer&value&today&and&create&an&adaptable&product&for&tomorrow.”&&
–&Jim&Highsmith&
Whose)problem)is)it?)
How&many&programmers&
does&it&take&to&change&a&
light&bulb?&
6&
7/22/15&
4&
Whose)problem)is)it?)
Who&should&be&
concerned&with&the&
longZterm&viability&of&
the&codebase?&
7&
The)9th)Agile)Principle))Con$nuous'a)en$on'to'technical'excellence'and'good'design'enhances'agility.'
7/22/15&
5&
Agile:)build)the)right)thing)and)build)it)right.)
• Building'it'right'means&it&has&a&simple&design,&and&is&maintainable&and&flexible.&
• Successful&so\ware&needs&to&be&able&to&evolve&to&meet&expanding&needs.&
GROUP)ACTIVITY)
7/22/15&
6&
Discuss)• In&small&groups:&
• Come&up&with&at&least&1&anecdote&of&an&extreme&in&technical&
excellence.&Either&“too&much”&or&“not&enough”&that&you&can&share&
in&30Z60&seconds.&
• We’ll&try&to&hear&from&1&or&2&of&the&groups&a\erward.&
&
&
&
KINDLING)CRAFTSMANSHIP)What&will&spark&your&culture&change?&
7/22/15&
7&
Flaccid)Scrum)–)Martin)Fowler)• They&want&to&use&an&agile&process,&and&pick&Scrum&
• They&adopt&Scrum&pracDces,&and&maybe&even&the&principles&
• A\er&a&while&progress&is&slow&because&the&code&base&is&a&mess&
Five)Years)of)Flaccid)Scrum)My'advice's$ll'stands'9'ensure'you'take'technical'prac$ces'seriously'when'introducing'Scrum'(or'indeed'any'agile'approach).'–&MarDn&Fowler:&29&Jan&2014&
From)Flaccid)to)Awesome!)Internal(Quality(
(Developer(Facing)(
External(Quality(
(Customer(Facing)(Advice(
High& High& You’re&awesome!&
High& Low& Get&CustomerZfocused!&
Low& High& It&won’t&Last.&Refactor&now!&
Low& Low& Refactor&versus&Rewrite?!&
7/22/15&
8&
Agile)Requires)Quality)Waterfall( Agile(
0&
20&
40&
60&
80&
100&
120&
0& 18& 36& 54&
Quality(over(Time(
0&
20&
40&
60&
80&
100&
120&
0& 4& 8& 12& 16& 20& 24& 28& 32& 36& 40& 44& 48& 52& 56& 60&
Quality(over(Time(
Process)Dependencies)
16&
Waterfall
Upfront Requirements
Upfront Design
Agile
Evolutionary Design
Refactoring
Automated Developer Tests
Test First
Test After
7/22/15&
9&
Software)Costs)!!"#$!"#$%&'( = !"#$!"#"$%&'"() + !"#$!"#$%&$"$'& + !"#$!"#$%&'()*! (1)!
!"#$!"#"$%&'"() ≪ !"#$!"#$%&$"$'&! (2)!!"#$!"#$%&$"$'& = !"#$!"#$%&'("# + !"#$!"#$%& + !"#$!"#$! (3)!
!!
What)is)Technical)Debt?)
7/22/15&
10&
How)Does)Technical)Debt)Occur?)• Ignorance&–&an&incomplete&understanding&of&how&the&system&works&
• Complex(Requirements(–&producing&overly&complicated&
implementaDons&
• Over(Engineering(–&developers&building&more&sophisDcated&code&
than&is&necessary&(SpeculaDve&Development).&[Gold&PlaDng]&
• Undone(Work(–&deciding&“wriDng&automated&tests&slows&us&down”&
• Good(code(/(wrong(place(• CuHng(Corners(–&“quick&and&dirty”&&
Faster)is)Slower)
We’ll&“fix&it&later.”&
7/22/15&
11&
The)Business)Made)Me)Do)It!)What&a&TL&says&to&his&PO:&&
“To'do'it'right'will'take'2'Itera$ons.'If'we'do'it'this'other'way,'we'can'do'it'in'2'days,'but'the'developers'will'be'forever'burdened'with'fragile'code'and'it'will'impact'our'delivery'on'every'project'in'the'future.”'
&
What&the&PO&hears:&
“You'can'have'it'in'2'days!”''
Moral&
Be'sure'you'can'live'with'the'op$ons'you'present.'
Enhances.)Really?)Compare''
“Con$nuous'a)en$on'to'technical'excellence'and'good'design'enhances'agility.”'
'–'9th'Principle,'Agile'Manifesto'with&
“Speed'is'a'long9term'side9effect'of'producing'code'with'the'highest'possible'internal'quality.”'
–&Agile&TesDng&by&Lisa&Crispin,&Janet&Gregory'perhaps&
Con$nuous'a)en$on'to'technical'excellence'and'good'design'sustains'agility.''
7/22/15&
12&
WHAT)WE)TRIED)And&now&for&something&completely&different.&
• “Working'Effec$vely'With'Legacy'Code”&• Provides&real&examples&of&“gemng&out&of”&a&legacy&codebase,&
organized&by&“reason&it&can’t&be&done”…&
• “Legacy&Code”&is&code&wripen&without&tests.&Establishes&a&common&
language&across&the&technical&team&for&the&daily&problems&they’ll&face&&
• Outcome&
• Some&read&it&(especially&those&in&the&book&club).&
• Some&did¬.&
• Was&nice&to&be&able&to&say,&“go&read&Chapter&15”&
in&the&book.&
Free)Book)
7/22/15&
13&
Book)Club)• Engage&people&in&discussion&about&the&contents&of&the&book,&create&community&‘buzz’&about&the&concepts&in&the&book.&
• No&real&disagreements&have&been&encountered!&&
• Outcome&
• Book&club&started&very&successfully,&we&finished&Legacy&Code&and&Clean&Code.&
• ObservaDon:&Millennials&don’t&read&books.&
• Third&Book&–&folks&lost&interest.&Will&do&a&reboot.&
Code)Ninjas)• CreaDng&a&community&where&conDnuing&educaDon&is&the&
goal…&This&is¬&intended&to&be&a&oneZman&show…&any&and&all&
are&welcome&to&bring&interesDng&topics.&
• Low&ceremony!&&
• PowerPoint&okay,&Code&preferred.&
• Outcome&
• Seen&as&an&“output”&device,&a&way&to&get&a&message&out.&
• Not&good&as&an&“input”&device&for&determining&direcDon.&
7/22/15&
14&
TDD)Training)• Introduces&the&art&of&Test&Driven&Development&
• Refreshers&welcome&&
• ‘ignites&the&spark’&around&Test&Driven&Development&and&why&
we&need&it&
• Outcomes&
• Shoot&for&“TestZInfected,”&coach&the&rest.&• 18,000&Unit&Tests&with&100%&pass&rate&every&build.&• Tasks&for&“Unit&Tests”&have&disappeared.&
Maturity)Model)for)TDD)
33
SHU)(Follow)'
HA (Break Free)
RI)(Transcend)'
! SDll&learning,&follows&but&may¬&know&why.&
! “New(code(comes(with(
new(tests.”(
! “Changed(code(comes(
with(tests(around(the(
changes.”(
! Internalized&pracDce,&but&sDll&needs&a&coach.&
! Understands&pros&&&cons.&
! “All(code(is(wriNen(testOfirst”(
! No&longer&need&a&coach,&mentor&or&training&
! Able&to&make&changes&to&
what&has&been&taught&&
! “Creates(a(unit(tesQng(framework(because(they(
needed(one(and(it(didn’t(
exist.”(
7/22/15&
15&
Code)Clinics)• A&nonZjudgmental&place&where&developers&can&bring&their&
coding&issues&to&look&for&feedback&or&work&collaboraDvely&on&
soluDons,&watch&and&help&others,&get&mentoring&if&needed,&
idenDfy&how&to&apply&concepts&from&the&book&or&get&some&
code&under&test.&
• Outcome&
• SomeDmes&repurposed&into&“Code&Review”&
• A&few&dedicated&“Lurkers”&• As&delivery&pressure&increases,&apendance&decreases&• Found&“classroom&exercises”&this&way&
Transferring)Code)Ownership)Devs:&“This&is&horrible!&They&ought&to&do&something&about&this!”&
Coach:&
• Management&wants&you&to&have&a&nice&code&base&to&work&in,&but&they&aren’t&in&the&code&every&day.&
• This&is&where&you&work&every&day.&&• If&you&want&a&nice&place&to&work,&you’re&going&to&have&to&clean&it&up.&• “You”&are&“they.”&
• Outcome&
• “Don’t'touch'that!”'replaced&with&“Why'didn’t'you'clean'that'up?”'
7/22/15&
16&
“What”)is)Negotiable,)Not)“How”)• There&is&an&‘N’&in&INVEST,&but&that&is&concerned&with&scope.&• Don’t&let&the&Product&Owner&and&the&Developers&get&into&a&negoDaDon&around&whether&certain&pracDces&will&or&will¬&be&followed.&&
• Outcome&
• Have&a&clear&OrganizaDonal&DefiniDon&of&Done&which&specifies&standards.&
• Business¬&happy,&but&…&• Avoid&technicalZonly&projects. &&
Tech)Lead)Interview)Process)• RecruiDng&Tech&Leads&that&are&evangelists&and&mentors&for&the&
concepts&we&care&about&(TDD,&Quality,&Refactoring,&OO&Design).&
• Interview&includes:&a&coding&problem,&a&code&review&problem,&a&nonZ
technicalZsoluDon&problem.&
• Allowed&no&excepDons&(new&hires).&
• Outcome&
• “New&DNA”&rejecDng&“Old&DNA.”&• Hit&most&on:&Senior&Devs&looking&for&their&next&level.&
• “AdminZstyle”&Tech&Lead&did¬&do&well.&
7/22/15&
17&
Code)Reviews)• Originally&no&definiDon&of&“ProducDon&Worthy.”&
• Code&is&conDnually&‘assessed’&(every&iteraDon)&and&feedback&given&to&ensure&we&conDnue&to&steer&away&from&the&addiDon&of&debt&to&the&codebase.&&
• The&more&frequent&the&code&reviews,&the&more&likely&we&are&to&avoid&piwalls&at&the&end&of&a&project.&
• Outcome&
• Reviews&with&different&teams&were&at&different&levels.&
• Smell:&signZoff&became&“required.”&
• Now&community&owned.&
Refactoring)Stream)• Providing&a&place&for&development&teams&to&fastZtrack&characterizaDon&tests,&safe&code&refactors&/&improvements&to&all&teams&early,&outside&of&a&release&cycle.&&
• Refactoring&code&in&this&stream&gives&fellow&teams&the&benefits&of&refactored&code&and&debt&reducDon&without&waiDng&for&a&given&project&to&‘go&live’.&
• Outcome&
• Before&this&code&cleanup&had&a&reverse&&incenDve&due&to&custodianship.&
• Every&team&has&used&it&at&least&once.&
• A&few&stars&are&huge&contributors.&
7/22/15&
18&
Birds)of)a)Feather)(BoF))• Spontaneously&grew&organically&out&of&need&for&decisions&and&convenDons.&
• Technology&related:&“How&do&we&use&SpringMVC?”&
• Not&formally&created.&
• Outcome&
• Email&distribuDon&lists&were&created&for&each&interest.&
• Encourage&and&nurture&this&type&of&selfZorganizing&soluDon&process.&
Practices)&)Process))• NoDce&the&upper&right&(highly&rated&
on&pracDces&and&
on&process).&
• Focus&on&process&and&pracDces&and&
you’ll&get&delivery!&
• Where&would&
focusing&only&on&
delivery&get&you?&
7/22/15&
19&
READY,)SET,)WORKSHEET!)
WRAP)UP!)
7/22/15&
20&
Invest)in)your)people)&
CFO:&What'if'we'train'them,'and'they'leave?'COO:&What'if'we'don’t,'and'they'stay?'
Create)a)Safe)Environment)“IniDaDve&is&punishable.”&
&–&Russian&Proverb&
• If&you&want&teams&to&take&iniDaDve,&you&must&allow&for&failure.&
• Mistakes&are&an&indicator&of&trying&something&new.&
• Teams&require&autonomy&to&achieve&excellence.&
7/22/15&
21&
Fan)the)Flame!)• There&really&is&no&subsDtute&for&a&developer&that&has&a&spark&to&make&it&right.&
• When&you&see&the&spark,&encourage&the&flame!&
Perfect)(v.)))• ConDnuous&Improvement&requires&conDnuous&learning&–&
encourage&a&learning&environment.&
• Problems&are&one&of&the&first&signs&that&something&needs&
changed.&
• Get&to&the&root&cause,&and&fix&it.&The&symptoms&will&go&
away.&
7/22/15&
22&
Long%Term%Viability%Requires%Discipline%“Just&put&it&anywhere”&only&works&for&a&short&Dme!&
THE)END)
7/22/15&
23&
• Releases&every&2&weeks,&80&defects&per&release.&• Fixing&10Z15&defects&per&month.&
• 2,600&defects&down&to&less&500.&• No&code&reviews.&• Discovered&work,&tasks,&kind&of&like&an&“WTF”&moments&
• Discussions&about&all&the&reasons&we&can’t.&• You’ll&get&what&you&ask&for.&
Scrum)&)Extreme)Programming)(XP))
#57&
“People'have'told'me'that'they'see'Scrum'as'the'management'approach'to'agile'development'and'XP'as'the'engineering'prac$ces'that'make'it'effec$ve,'both'bonded'together'by'complimentary'prac$ces'and'goals.”''
–&Ken&Schwaber&&
7/22/15&
24&
Scrum)&)Extreme)Programming)(XP))
#58&
From: Kent Beck To: Jeff Sutherland <jsutherland> Reply: [email protected] Date: Mon, 15 May 1995 18:01:15 -0400 (EDT) Subj: HBR paper _____________________________________________________&
Is&there&a&good&place&to&get&reprints&of&the&SCRUM&paper&from&
HBR?&&I've&wripen&paperns&for&something&very&similar&and&I&want&
to&make&sure&I&steal&as&many&ideas&as&possible.&&
Kent&
Best)Measure)of)Code)Quality)• Hard&to&game.&