technical debt - why should you care? (agiles buenos aires 2011)

49
Oh, no! Another session about technical debt?!?

Upload: ciampt

Post on 01-Dec-2014

2.602 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

Oh,  no!  Another  session  about  technical  debt?!?  

Page 2: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

Maybe  we  could  discuss  other  things….  

Page 3: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

before we start…!}!

what  the  hell  is  happening  with  this  project?!?  

Page 4: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

before we start…!}!

what  the  hell  is  happening  with  this  project?!?  

How  is  your  boss  here?  

Page 5: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)
Page 6: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

Technical Debt!Why should you care?!

www.ciandt.com!

{!

 Paulo  Roberto  Camara  Tech  Manager  at  Ci&T  [email protected]  @proberto98  

Page 7: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

which  opCon  would  you  go  for?  

•  the  easy  and  quick  way,  but  the  code  doesn’t  look  very  nice…  Future  will  be  dark…  

•  a  cleaner  and  more  sophisCcated  design,  but  it  will  take  longer  to  put  in  place.  No  clouds  ahead!  

Page 8: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

really?  

Page 9: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

really,  really?  

Page 10: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

ah,  ok….  

Page 11: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)
Page 12: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

“Technical  debt  is  everything  that  makes  your  code  harder  to  change.”    (Tom  Poppendiek)  

Page 13: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

such  as….  

•  no  design  •  poor  design  •  duplicated  code  •  deprecated  code  •  un-­‐tested  code  •  complex  code  •  any  kind  of  “workaround”…  

Page 14: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

the  metaphor…  

•  every  Cme  you  choose  the  first  opCon  (the  quick  and  dirt  way)  you  create  debt  (like  a  financial  debt)  –  if  it  is  a  debt,  it  incurs  interest  

•  you  may  pay  only  the  interest  •  or  you  may  pay  down  the  principal,  reducing  the  interest  in  the  future  

Page 15: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

interest?!?  

•  bugs  •  extra  effort  •  slower  development  •  delays  

Page 16: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

hTp://theagileexecuCve.com/category/technical-­‐debt/  

Page 17: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

“Every  minute  spent  on  not-­‐quite-­‐right  code  counts  as  interest    on  that  debt.  EnCre  engineering  organizaCons  can  be  brought  to  a  stand-­‐sCll  under  the  debt  load  of  

an  unconsolidated  implementaCon…”    (Ward  Cunningham,  1992)  

Page 18: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

Technical  Debt  Quadrant  (by  MarCn  Fowler  @  Agile  Brazil  2010)  

hTp://www.marCnfowler.com/bliki/TechnicalDebtQuadrant.html  

Page 19: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

why  should  you  care?  

Page 20: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

interest?!?  

•  bugs  •  extra  effort  •  slower  development  •  delays  

Page 21: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)
Page 22: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)
Page 23: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)
Page 24: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

a  liTle  context  

(before  I  show  you  what  I  am  really  talking  about)  

Page 25: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

2010

Ci&T at a glance!}!

www.ciandt.com / @ciandt!

Founded in 1995!HQ in Brazil w/ offices in the US, Japan, Europe & China!

Global Delivery Centers in Brazil, Argentina and China !Staff: 1,300+!Annual growth: 40%!Provide high performance teams to our clients!

Page 26: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

Our  Clients  }!

www.ciandt.com / @ciandt!

Page 27: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

What we do!}!

www.ciandt.com / @ciandt!

Service Offerings!

Application Development & Management!Mobile Solutions!Cloud Computing!Product Engineering!SAP!Business Intelligence!!

Page 28: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

How  we  do  it  }

www.ciandt.com / @ciandt!

Ci&T runs 100% !Agile projects!!

Page 29: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

some  sad  stories  

(and  fortunately  other  very  happy  ones!)  

Page 30: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

do you remember this chart?!}!

what  the  hell  is  happening  with  this  project?!?  

Page 31: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

it  is  a  true  project…  L  •  criCcal  Cme  to  market  milestone  •  prudent  technical  debt  (“let’s  fix  it  later!”)  •  yes!  We  met  the  milestone!  J  •  but….  a  new  “criCcal”  milestone  was  set…  •  more  reckless  technical  debt  (“refactoring  is  for  losers!”)  •  things  got  more  difficult  (extra  effort,  extra  bugs,  frustrated  

team,  unhappy  customer…)  •  we  didn’t  meet  the  second  milestone…  L  •  two  sprints  spent  on  refactoring,  almost  no  new  

funcConality  delivered…  •  a  long  Cme  to  recover  credibility.  

Page 32: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

Design  Stamina  Hypothesis  (by  MarCn  Fowler  @  Agile  Brazil  2010)  

hTp://www.marCnfowler.com/bliki/DesignStaminaHypothesis.html  

Page 33: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

let’s  look  another  example…  

almost  40%  of  the  total  sprint  capacity  

and  quality  has  became  an  issue…  

what  a  hell  is  happening  with  this  project?!?  

Page 34: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

lack  of  automated  tests,  coCnuos  integraCon!  •  complex  billing  system  for  an  Insurance  company  •  lots  of  integraCons  with  legacy  systems  •  automated  tests  were  not  easy  to  be  created  (and  kept  

working  later!)  •  and  the  Product  Owner  didn’t  accept  to  spend  sprint  

capacity  with  “no  useful  code”  •  aber  a  lot  of  conversaCon  –  and  problems  –  team  was  able  

to  create  a  minimal  test  suite  (one  enCre  sprint  spent  on  that!)  

•  keep  this  tesCng  code  up  and  running  had  become  part  of  the  definiCon  of  done  

•  in  the  following  sprint,  regression  tests  effort  dropped  half  as  well  as  the  bugs  found  by  the  PO!  J  

Page 35: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

a  good  reference  now!  

•  a  large  building  company  

•  an  18  months  project  •  high  technical  and  business  complexity  

•  company  board  as  the  main  stakeholders  

•  Ci&T’s  team:  12  people  •  monthly  deliveries  •  currently  at  sprint  12  

Page 36: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

technical  debt  under  control!  •  code  standards  /  design  /  code  reviews  /  frequent  refactoring  –  cost  to  add  new  features  is  almost  the  same  since  sprint  3  

•  conCnuous  integraCon  /  automated  tests  –  daily  builds  deployed  on  customer  environment  –  completely  automated  deploy  process  – merge  Cme  reduced  to  zero  

•  quality  –  from  0,1  bugs  /  KLOC  to  0,06  bugs  /  KLOC  on  producCon  

but  how?!?  

Page 37: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

how  to  pay  the  debt?  

Page 38: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

1  –  register  

Page 39: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

2  –  evaluate  

Page 40: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

3  –  do  not  accumulate  

   

Page 41: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

conCnuous  integraCon    

TDD    

code  reviews    

refactoring    

...  

4  –  pay  

Page 42: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

and  how  about  the  product  owner?  

(because  it  seems  he  is  somehow  important,  doesn’t  it?  J  )  

Page 43: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

you  may  see  him  as  the  bad  guy…  

Ø pushing  the  team  very  hard  

Ø adding  unnecessary  complexity  

Ø not  opened  to  technical  arguments  

Page 44: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

but  he  is  the  one  who  will  have  to  pay  for  the  debt  eventually!  

Page 45: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

it  is  all  about  communicaCon  •  The  product  owner  –  usually  -­‐  does  not  know  what  is  refactoring,  code  review,  TDD,  etc  – And  he  does  not  need  to  know!  

•  But  he  needs  to  know  what  is  the  size  of  the  debt  and  make  conscious  decisions  about  when  and  how  to  pay  it  –  Keeping  him  in  the  loop  is  a  team  responsibility!  

Page 46: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

final  words  

(if  you  have  just  waken  up)  

Page 47: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

Paulo  Camara  [email protected]  

hTp://www.linkedin.com/in/proberto  

proberto98  

this  deck:  h\p://bit.ly/mWmqan  

Page 48: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

?

Page 49: Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)

good  references  Sites  •  Being  Agile  –  blog  interno  da  Ci&T  •  hTp://www.controlchaos.com/  •  hTp://www.mountaingoatsobware.com/scrum  •  hTp://jeffsutherland.com/scrum/  •  hTp://www.scrumalliance.org/arCcles  •  hTp://www.agilechronicles.com/  

Books  •  Agile  Project  Management  with  Scrum  -­‐  by  Ken  

Schwaber  •  Lean  Sobware  Development:  An  Agile  Toolkit  -­‐  By  

Mary  Poppendieck,  Tom  Poppendieck    •  Agile  and  IteraCve  Development:  A  Manager's  

Guide  -­‐  By  Craig  Larman    •  Agile  Sobware  Development  -­‐  by  Alistair  Cockburn  

 

   

ArCcles  •  CMMI®  or  Agile:  Why  Not  Embrace  Both!  –  by  Hillel  

Glazer,  Jeff  Dalton,  David  Anderson,  Mike  Konrad  and  Sandy  Shrum  

•  PracCcal  Roadmap  To  Great  Scrum  -­‐  Jeff  Sutherland,  Ph.D.,  October  20,  2009  

•  Scrum  and  CMMI  -­‐  Going  from  Good  to  Great,  Carsten  Ruseng  Jakobsen,  Jeff  Sutherland,  Ph.D.