Technical Debt (Qcon San Francisco 2011)

52
Technical Debt Why you should care www.ciandt.com { Felipe Rubim Architect and Team Lead at Ci&T [email protected] @frubim

description

 

Transcript of Technical Debt (Qcon San Francisco 2011)

Page 1: Technical Debt (Qcon San Francisco 2011)

Technical Debt!Why you should care!

www.ciandt.com!

{!

 Felipe  Rubim  Architect  and  Team  Lead  at  Ci&T  [email protected]  @frubim  

Page 2: Technical Debt (Qcon San Francisco 2011)
Page 3: Technical Debt (Qcon San Francisco 2011)

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

Page 4: Technical Debt (Qcon San Francisco 2011)

Audience survey!}!

1.  Developers  or  Architects?  

2.  Product  Owners/Project  Managers?  

3.  Involved  with  Agile  projects?  

Page 5: Technical Debt (Qcon San Francisco 2011)

Different perspectives on technical debt!}!

1.  Domain  knowledge  –  ~Sprint  3:  “Now  that  we  know  more  about  this  product,  we  should  do  something  about  that  code  we  shipped”  

2.  Prudent  design  decisions  –  Sprint  1:  “Let’s  use  this  framework  now  and  adapt  to  a  beAer  framework  on  the  next  sprints”  

3. Sacrifice  of  good  soEware  development  pracGces  –  “No  Gme  for  refactoring.  We  will  deal  with  this  later”  

Page 6: Technical Debt (Qcon San Francisco 2011)

Face  the  brutal  facts:    

It  will  happen!  

Page 7: Technical Debt (Qcon San Francisco 2011)

what  the  hell  is  happening  with  this  project?!?  

How  is  your  P.O.  here?  

Page 8: Technical Debt (Qcon San Francisco 2011)
Page 9: Technical Debt (Qcon San Francisco 2011)

which  opMon  would  you  go  for?  

1.  the  easy  and  quick  way,  but  the  code  and  soluMon  doesn’t  seem  quite  proper…    

         Future  looks  dark…  

2.  a  proper  design  and  implementaMon  along  with  refactoring,  but  it  will  take  longer  to  ship.        

           No  clouds  ahead!  

Page 10: Technical Debt (Qcon San Francisco 2011)

really?  

Page 11: Technical Debt (Qcon San Francisco 2011)

really,  really?  

Page 12: Technical Debt (Qcon San Francisco 2011)

All  right…  

Page 13: Technical Debt (Qcon San Francisco 2011)

the  metaphor  

Page 14: Technical Debt (Qcon San Francisco 2011)

the  metaphor…  

•  every  Mme  you  choose  the  first  opMon  (the  “dark  side  one”)  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 (Qcon San Francisco 2011)

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

Lean  So[ware  Development)  

Page 16: Technical Debt (Qcon San Francisco 2011)

such  as….  

•  Not  the  right  design  choices  

•  duplicated  code  •  lack  of  tests  •  “workarounds”  •  Unnecessary  complexity  

•  …    

Page 17: Technical Debt (Qcon San Francisco 2011)

interest?!?  

•  bugs  •  extra  effort  •  slower  velocity  •  milestone  delays  

Page 18: Technical Debt (Qcon San Francisco 2011)

h_p://theagileexecuMve.com/category/technical-­‐debt/  

Page 19: Technical Debt (Qcon San Francisco 2011)

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

an  unconsolidated  implementaGon…”    (Ward  Cunningham,  1992)  

Page 20: Technical Debt (Qcon San Francisco 2011)

why  you  should  care?  

Page 21: Technical Debt (Qcon San Francisco 2011)

interest?!?  

•  bugs  •  extra  effort  •  slower  velocity  •  delays  

Page 22: Technical Debt (Qcon San Francisco 2011)
Page 23: Technical Debt (Qcon San Francisco 2011)
Page 24: Technical Debt (Qcon San Francisco 2011)
Page 25: Technical Debt (Qcon San Francisco 2011)

a  li_le  context  

Page 26: Technical Debt (Qcon San Francisco 2011)

Ci&T!}!

www.ciandt.com / @ciandt!

Nearshore Software Development Outsourcing company!HQ in Brazil w/ offices in the US, Japan, Europe & China!Global Delivery Centers in Brazil, Argentina and China !Number of developers: 1,100+!100% agile projects!

Page 27: Technical Debt (Qcon San Francisco 2011)

What  do  we  deal  with  }

www.ciandt.com / @ciandt!

•  Different  plaborms/technologies/frameworks  

•  New  developers  (different  levels)  •  New  customers    •  Aggressive  Mmelines    •  One  ProducMon  System  across  the  organizaMon  

Page 28: Technical Debt (Qcon San Francisco 2011)

some  sad  stories  

(and  fortunately  other  very  happy  ones!)  

Page 29: Technical Debt (Qcon San Francisco 2011)

do you remember this chart?!}!

what  the  hell  is  happening  with  this  project?!?  

Page 30: Technical Debt (Qcon San Francisco 2011)

it  is  a  true  project…  L  •  Aggressive  Mmeline  to  ship  the  product  –  prudent  technical  debt  (“let’s  fix  it  later!”)  –  yes!  We  met  the  milestone!  J  

•  But….  a  new  “criMcal”  milestone  was  set…  –  reckless  technical  debt  –  things  got  more  difficult  (extra  effort,  extra  bugs,  frustrated  team,  unhappy  customer…)  

–  two  sprints  spent  on  refactoring,  almost  no  new  funcMonality  delivered…  

–  we  didn’t  meet  the  second  milestone…  L  –  a  long  Mme  to  recover  credibility.  

Page 31: Technical Debt (Qcon San Francisco 2011)

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

h_p://www.marMnfowler.com/bliki/DesignStaminaHypothesis.html  

Page 32: Technical Debt (Qcon San Francisco 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 33: Technical Debt (Qcon San Francisco 2011)

lack  of  automated  tests  and  conMnuous  integraMon!  •  complex  billing  system  for  an  insurance  company  

–  several  integraMons  with  legacy  systems  –  automated  tests  were  not  easy  to  be  created  (and  kept  working  later!)  à  not  prioriMzed  

–  Product  Owner  wouldn’t  accept  to  spend  sprint  capacity  with  what  he  saw  as  “no  value”  

•  a[er  some  Mme  (and  PO  not  so  happy)  team  was  able  to  create  a  minimal  test  suite  (one  enMre  sprint  spent  on  that!)  –  keep  this  tesMng  code  up  and  running  had  become  part  of  the  definiMon  of  done  (as  it  should  have  been  since  day  0)  

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

Page 34: Technical Debt (Qcon San Francisco 2011)

a  good  reference  now!  

•  a  large  construcMon  company  

•  18  months  project  •  High  business  complexity  

•  company  board  as  the  main  stakeholders  (even  PO)  

•  Ci&T  team:  12  people  •  monthly  shipping  

Page 35: Technical Debt (Qcon San Francisco 2011)

technical  debt  under  control!  

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

•  conMnuous  integraMon  /  automated  tests  – daily  builds  deployed  on  customer  environment  – completely  automated  deploy  process  

but  how?!?  

Page 36: Technical Debt (Qcon San Francisco 2011)

how  to  pay  the  debt?  

Page 37: Technical Debt (Qcon San Francisco 2011)

1  –  register  

Page 38: Technical Debt (Qcon San Francisco 2011)

2  –  evaluate  and  prioriGze  

Page 39: Technical Debt (Qcon San Francisco 2011)

3  –  do  not  accumulate  

   

Page 40: Technical Debt (Qcon San Francisco 2011)

conMnuous  integraMon    

 TDD    

 code  reviews    

 Refactoring  (including  reflecMng  your  new  knowledge  about  business  domain)    Review  your  design  decisons  and  refactor  to  reflect  them      

4  –  pay  

Page 41: Technical Debt (Qcon San Francisco 2011)

e.g.:  part  of    ConMnuous  IntegraMon,    DefiniMon  of  done,  Daily  reviews  RetrospecMves,  …  

And  then  add  it  to  your  so[ware  development  process  as  a  technical  

debt  reducMon  framework  

h_p://theagileexecuMve.com/category/technical-­‐debt/  

Page 42: Technical Debt (Qcon San Francisco 2011)

Measure  it  

Sprints  

0  

2  

4  

6  

8  

10  

12  

14  

16  

18  

1   2   3   4   5   6   7   8  

Total  Technical  Debt  Created  

Total  Technical  Debt  Created  

Page 43: Technical Debt (Qcon San Francisco 2011)

Measure  it  

Sprints  

0  

2  

4  

6  

8  

10  

12  

14  

16  

18  

1   2   3   4   5   6   7   8  

Total  Technical  Debt  Created  Total  Technical  Debt  "Burned"  

Page 44: Technical Debt (Qcon San Francisco 2011)

Measure  and  try  and  correlate  it  

Sprints  

0  

2  

4  

6  

8  

10  

12  

14  

16  

18  

1   2   3   4   5   6   7   8  

Total  Technical  Debt  Created  

Total  Technical  Debt  "Burned"  

Total  Value  AcMvaMon  

Page 45: Technical Debt (Qcon San Francisco 2011)

and  how  about  the  product  owner?  

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

Page 46: Technical Debt (Qcon San Francisco 2011)

you  may  see  him  as  the  bad  guy…  

Ø pushing  the  team  extremely  hard  

Ø adding  unnecessary  complexity  

Ø not  opened  to  technical  arguments  

Page 47: Technical Debt (Qcon San Francisco 2011)

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

Page 48: Technical Debt (Qcon San Francisco 2011)

it  is  all  about  communicaMon  and  transparency  

•  The  product  owner  –  usually  -­‐  does  not  know  what  is  refactoring,  code  review,  TDD,  etc  

•  He/she  needs  to  know  what  is  the  size  of  the  debt  and  make  conscious  decisions  about  when  and  how  to  pay  it  

Page 49: Technical Debt (Qcon San Francisco 2011)

Technical  Debt  –  To  summarize:  

•  It’s  expensive  to  fix,  but  much  more  expensive  to  ignore  

•  SMck  it  to  everyone’s  mind,  from  developers,  managers  to  P.Os.  The  metaphor  is  fantasMc  

to  any  level  in  the  organizaMon  

•  Establish  a  technical  debt  reducMon  framework  –  Measure,  correlate  and  act  

Page 50: Technical Debt (Qcon San Francisco 2011)

Felipe  Rubim  [email protected]  

frubim  

Thanks!  

Page 51: Technical Debt (Qcon San Francisco 2011)

?

Page 52: Technical Debt (Qcon San Francisco 2011)

references  Sites  •  h_p://www.controlchaos.com/  •  h_p://www.mountaingoatso[ware.com/scrum  •  h_p://jeffsutherland.com/scrum/  •  h_p://www.scrumalliance.org/arMcles  •  h_p://www.agilechronicles.com/  

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

Schwaber  •  Lean  So[ware  Development:  An  Agile  Toolkit  -­‐  By  

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

Guide  -­‐  By  Craig  Larman    •  Agile  So[ware  Development  -­‐  by  Alistair  Cockburn  

 

   

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

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

•  PracMcal  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.