Technical Excellence Doesn't Just Happen – Igniting a...
Transcript of Technical Excellence Doesn't Just Happen – Igniting a...
AllisonPollard• AgileProcessCoachandConsultant
• FirmBelieverinCon=nuousImprovement
• DFWScrumUserGroupleaderandDallasAgileLeadershipNetworkboardmember
• Glasseswearer
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/
DiscussAnyonehaveananecdoteofanextremeintechnicalexcellence?Either• “toomuch”• or“notenough”Thatyoucansharein30-60seconds.
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/
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
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)