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

Technical Excellence Doesn't Just Happen – Igniting a ...agileindy.org/wp-content/uploads/2016/04/Pollard-Technical... · Technical Excellence Doesn't Just Happen – Igniting a

  • Upload
    dinhanh

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

TechnicalExcellenceDoesn'tJustHappen–IgnitingaCraftsmanshipCultureByAllisonPollardandMikeRieser

INTRODUCTIONSThisisus!

AllisonPollard•  AgileProcessCoachandConsultant

•  FirmBelieverinCon=nuousImprovement

•  DFWScrumUserGroupleaderandDallasAgileLeadershipNetworkboardmember

•  Glasseswearer

MikeRieser(ree-sir)• AgileCoachandConsultant

•  TechnicalPrac=cesCoach

•  “Programmershirt”wearer

TECHNICALEXCELLENCE

“Inanagileproject,technicalexcellenceismeasuredbybothcapacitytodelivercustomervaluetodayandcreateanadaptableproductfortomorrow.”

–JimHighsmith

Who’sproblemisit?

Howmanyprogrammersdoesittaketochangea

lightbulb?

6hUps://www.flickr.com/photos/belobaba/6058142799/

Who’sproblemisit?

Whoshouldbeconcernedwiththelong-termviabilityof

thecodebase?

7hUps://www.flickr.com/photos/f-oxymoron/5005673112/

Agile:buildtherightthingandbuilditright.

•  Buildingitrightmeansithasasimpledesign,andismaintainableandflexible.

•  Successfulsocwareneedstobeabletoevolvetomeetexpandingneeds.PhotobyYann,hUps://en.wikipedia.org/wiki/File:Taj_Mahal_(Edited).jpeg

ExcellenceIsaHabit!

Con.nuousa1en.ontotechnicalexcellence

andgooddesignenhancesagility.

(9thPrincipleoftheAgileManifesto)

hUps://www.flickr.com/photos/ikoka/16843413711/

GROUPACTIVITY

DiscussAnyonehaveananecdoteofanextremeintechnicalexcellence?Either•  “toomuch”•  or“notenough”Thatyoucansharein30-60seconds.

KINDLINGCRAFTSMANSHIPWhatwillsparkyourculturechange?

Process&TechnicalPractices

“PeoplehavetoldmethattheyseeScrumasthemanagementapproachtoagiledevelopmentand

XPastheengineeringprac3cesthatmakeiteffec.ve,bothbondedtogetherbycomplimentary

prac.cesandgoals.”–KenSchwaber,co-creatorofScrum

FlaccidScrum–MartinFowler,2009•  Theywanttouseanagileprocess,andpickScrum•  TheyadoptScrumprac=ces,andmaybeeventheprinciples•  Acerawhileprogressisslowbecausethecodebaseisamess

FiveYearsLater…2014Myadvices.llstands-ensureyoutaketechnicalprac.cesseriouslywhenintroducingScrum(orindeedanyagileapproach).–Mar=nFowler

FromFlaccidtoAwesome!InternalQuality

(DeveloperFacing)ExternalQuality(CustomerFacing) Advice

High High You’reawesome!

High Low GetCustomer-focused!

Low High Itwon’tLast.Refactornow!

Low Low RefactorversusRewrite?!

AgileRequiresQualityWaterfall Agile

0

20

40

60

80

100

120

0 18 36 54

QualityoverTime

0

20

40

60

80

100

120

0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60

QualityoverTime

ProcessDependencies

18

Waterfall

Upfront Requirements

Upfront Design

Agile

EvoluConary Design

Refactoring

Automated Developer Tests

TestFirst

TestADer

SoftwareCosts!

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

Cost!"#"$%&'"() ≪ Cost!"#$%&$"$'&! (2)!

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

!

HowDoesTechnicalDebtOccur?IT’s

“Done”Business“Accepts” Result

True True ✔

True False Communica=onProblem

False True TechnicalDebt

False False ✔

HowDoesTechnicalDebtOccur?•  ComplexRequirements–producingoverlycomplicatedimplementa=ons,unreducedcomplexity

•  OverEngineering–developersbuildingmoresophis=catedcodethanisnecessary(Specula=veDevelopment).[GoldPla=ng]

•  BusinessSoluConing–dicta=ngtechnicalsolu=onsratherthanbringingproblemstobesolved.

•  Ignorance–anincompleteunderstandingofhowthesystemworks•  UndoneWork–deciding“wri=ngautomatedtestsslowsusdown”•  Goodcode/wrongplace•  CuQngCorners–“quickanddirty”

FasterisSlower

We’ll“fixitlater.”

Whenislater?

(Thereisnolater!)

hUps://www.flickr.com/photos/9266144@N02/1074851879

TheBusinessMadeMeDoIt!WhataTechLeadsaystohisProductOwner:

“Todoitrightwilltake2Itera.ons.Ifwedoitthisotherway,wecandoitin2days,butthedeveloperswillbeforeverburdenedwithfragilecodeanditwillimpactourdeliveryoneveryprojectinthefuture.”

WhattheProductOwnerhears:

“Youcanhaveitin2days!”

Moral:Besureyoucanlivewiththeop.onsyoupresent.

Enhances.Really?Compare

“Con.nuousa1en.ontotechnicalexcellenceandgooddesignenhancesagility.”–9thPrinciple,AgileManifesto

with“Speedisalong-termside-effectofproducingcodewiththehighestpossibleinternalquality.”–AgileTes.ngbyLisaCrispin,JanetGregory

perhapsCon3nuousaAen3ontotechnicalexcellenceandgooddesignsustainsagility.

hUps://www.flickr.com/photos/mr_t_in_dc/2322412546/

WHATWETRIEDAndnowforsomethingcompletelydifferent.

TDDTraining•  Introducestheprac=ceofTest-DrivenDevelopment•  Refresherswelcome•  ‘Ignitesthespark’aroundTest-DrivenDevelopmentandwhyweneedit

Outcomes•  Shootfor“Test-Infected,”coachtherest•  18,000UnitTestswith100%passrateeverybuild•  Tasksfor“UnitTests”havedisappeared

Red

GreenRefactor

MaturityModelforTDD

36

SHU(Follow)

HA (Break Free)

RI(Transcend)

§  S=lllearning,followsbutmaynotknowwhy.

§  Newcodecomeswithnewtests.

§  Changedcodecomeswithtestsaroundthechanges.

§  Internalizedprac=ce,buts=llneedsacoach.

§  Understandsprosandcons.

§  AllcodeiswriTentest-first.

§  Abletogobeyondwhathasbeentaught

§  CreatesaunittesCngframeworkbecausetheyneededoneanditdidn’texist.

CodeClinics•  Anon-judgmentalplacewheredeveloperscanbringtheircodingissuestolookforfeedbackorworkcollabora=velyonsolu=ons,watchandhelpothers,getmentoringifneeded,iden=fyhowtoapplyconceptsfromthebookorgetsomecodeundertest.

Outcome•  Some=mesrepurposedinto“CodeReview”•  Afewdedicated“Lurkers”•  Asdeliverypressureincreases,aUendancedecreases•  Found“classroomexercises”thisway hUps://www.flickr.com/photos/lloyds-

screenies/2696378369/

TransferringCodeOwnershipDevs:

Thisishorrible!Theyoughttodosomethingaboutthis!Coach:

Managementwantsyoutohaveanicecodebasetoworkin,buttheyaren’tinthecodeeveryday.Thisiswhereyouworkeveryday.Ifyouwantaniceplacetowork,you’regoingtohavetocleanitup.“You”are“they.”

Outcome“Don’ttouchthat!”replacedwith“Whydidn’tyoucleanthatup?”

TechLeadInterviewProcess•  Recrui=ngTechLeadsthatareevangelistsandmentorsfortheconceptswecareabout(TDD,Quality,Refactoring,OODesign)

•  Interviewincludes:acodingproblem,acodereviewproblem,anon-technical-solu=onproblem

•  Allowednoexcep=onsforfolkshiredintoaTechLeadrole

Outcome•  “NewDNA”rejec=ng“OldDNA”•  “Supervisor”TechLeadsdidnotdowell•  Hitmoston:SeniorDevslookingfortheirnextlevelhUp://disney.wikia.com/wiki/

File:Star_wars_movies_darth_maul_obi-wan_wars_hd-wallpaper-481469.jpg

CodeReviews•  Originallynodefini=onof“Produc=onWorthy”•  Codeiscon=nually‘assessed’(everyitera=on)andfeedbackgiventoensurewecon=nuetosteerawayfromtheaddi=onofdebttothecodebase

•  Themorefrequentthecodereviews,themorelikelywearetoavoidpivallsattheendofaproject

Outcome•  Reviewswithdifferentteamswereatdifferentlevels

•  Smell:sign-offbecame“required”•  Nowcommunityowned

hUps://www.flickr.com/photos/ericvaughn/9728829199

hUps://www.flickr.com/photos/dmcdevit/1143743631

hUps://www.flickr.com/photos/26116471@N03/6788264645

AdditionalCoachingItems•  DirecCve–leavethingsbeUerthanyoufoundit•  FreeBook–WorkingwithLegacyCodebyFeathers•  BookClub–meetoverlunchtodiscussabookonsocwarecracsmanship

•  CommunityofPracCce–arecurringmee=ngfordeveloperstocommunicateacrossteamsonsuccessfulsolu=onsanduseful=psandtechniquesappliedtothecodebase

•  ConCnuousIntegraCon–reducesdeploycostsandfast-trackscodeimprovementstoteams

Practices&Process

Wherewouldfocusingonlyondeliverygetyou?

Process

TechnicalExcellence

WRAPUP!

Perfect(v.)•  Con=nuousImprovementrequirescon=nuouslearning–encouragealearningenvironment.

•  Problemsareoneofthefirstsignsthatsomethingneedschanged.

•  Gettotherootcause,andfixit.Thesymptomswillgoaway.

hUps://pixabay.com/en/learn-note-sign-directory-64058/

InvestinyourpeopleCFO:Whatifwetrainthem,andtheyleave?COO:Whatifwedon’t,andtheystay?

Copyright:DavidFranklin/ShuUerstock

FantheFlame!•  Therereallyisnosubs=tuteforadeveloperthathasasparktomakeitright.

• Whenyouseethespark,encouragetheflame!PhotobyBillyHathorn,hUps://commons.wikimedia.org/wiki/

File:Kindling_for_star=ng_a_campfire_IMG_2454.JPG

CreateaSafeEnvironment“Ini=a=veispunishable.”

–RussianProverb

•  Ifyouwantteamstotakeini=a=ve,youmustallowforfailure.

•  Mistakesareanindicatoroftryingsomethingnew.

•  Teamsrequireautonomytoachieveexcellence.

LongTermViabilityRequiresDiscipline“Justputitanywhere”onlyworksforashort=me!

ImagefromRaidersoftheLostArk

THEEND

AllisonPollard [email protected] @allison_pollard(TwiUer)

MikeRieser [email protected]

@MichaelRieser(TwiUer)

BestMeasureofCodeQualityHardtogame.