technical)excellence)doesn't)just) happen)–)igniting)a ...files.meetup.com/1508927/technical...

24
7/22/15 1 Technical Excellence Doesn't Just Happen – Igniting a Craftsmanship Culture By Allison Pollard and Mike Rieser INTRODUCTIONS This is us!

Upload: others

Post on 20-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

7/22/15&

1&

Technical)Excellence)Doesn't)Just)Happen)–)Igniting)a)Craftsmanship)Culture))By&Allison&Pollard&and&Mike&Rieser&

INTRODUCTIONS)This&is&us!&

Page 2: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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&

Page 3: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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&

Page 4: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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.'

Page 5: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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)

Page 6: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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?&

Page 7: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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?!&

Page 8: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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

Page 9: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

7/22/15&

9&

Software)Costs)!!"#$!"#$%&'( = !"#$!"#"$%&'"() + !"#$!"#$%&$"$'& + !"#$!"#$%&'()*! (1)!

!"#$!"#"$%&'"() ≪ !"#$!"#$%&$"$'&! (2)!!"#$!"#$%&$"$'& = !"#$!"#$%&'("# + !"#$!"#$%& + !"#$!"#$! (3)!

!!

What)is)Technical)Debt?)

Page 10: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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.”&

Page 11: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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.''

Page 12: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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&not.&

•  Was&nice&to&be&able&to&say,&“go&read&Chapter&15”&

in&the&book.&

Free)Book)

Page 13: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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&not&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.&

Page 14: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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&not&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.”(

Page 15: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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?”'

Page 16: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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&not&be&followed.&&

•  Outcome&

•  Have&a&clear&OrganizaDonal&DefiniDon&of&Done&which&specifies&standards.&

•  Business&not&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&not&do&well.&

Page 17: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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.&

Page 18: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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?&

Page 19: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

7/22/15&

19&

READY,)SET,)WORKSHEET!)

WRAP)UP!)

Page 20: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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.&

Page 21: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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.&

Page 22: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

7/22/15&

22&

Long%Term%Viability%Requires%Discipline%“Just&put&it&anywhere”&only&works&for&a&short&Dme!&

THE)END)

Page 23: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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&&

Page 24: Technical)Excellence)Doesn't)Just) Happen)–)Igniting)a ...files.meetup.com/1508927/Technical Excellence - How to Help-2.pdf · Agile)Requires)Quality) Waterfall( Agile(0& 20& 40&

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.&