Technical Debt (Qcon San Francisco 2011)
-
Upload
ciampt -
Category
Technology
-
view
2.031 -
download
1
description
Transcript of Technical Debt (Qcon San Francisco 2011)
![Page 1: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/1.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/2.jpg)
![Page 3: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/3.jpg)
Oh, no! Another session about technical debt?!?
![Page 4: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/4.jpg)
Audience survey!}!
1. Developers or Architects?
2. Product Owners/Project Managers?
3. Involved with Agile projects?
![Page 5: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/5.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/6.jpg)
Face the brutal facts:
It will happen!
![Page 7: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/7.jpg)
what the hell is happening with this project?!?
How is your P.O. here?
![Page 8: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/8.jpg)
![Page 9: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/9.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/10.jpg)
really?
![Page 11: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/11.jpg)
really, really?
![Page 12: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/12.jpg)
All right…
![Page 13: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/13.jpg)
the metaphor
![Page 14: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/14.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/15.jpg)
“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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/16.jpg)
such as….
• Not the right design choices
• duplicated code • lack of tests • “workarounds” • Unnecessary complexity
• …
![Page 17: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/17.jpg)
interest?!?
• bugs • extra effort • slower velocity • milestone delays
![Page 18: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/18.jpg)
h_p://theagileexecuMve.com/category/technical-‐debt/
![Page 19: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/19.jpg)
“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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/20.jpg)
why you should care?
![Page 21: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/21.jpg)
interest?!?
• bugs • extra effort • slower velocity • delays
![Page 22: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/22.jpg)
![Page 23: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/23.jpg)
![Page 24: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/24.jpg)
![Page 25: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/25.jpg)
a li_le context
![Page 26: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/26.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/27.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/28.jpg)
some sad stories
(and fortunately other very happy ones!)
![Page 29: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/29.jpg)
do you remember this chart?!}!
what the hell is happening with this project?!?
![Page 30: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/30.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/31.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/32.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/33.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/34.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/35.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/36.jpg)
how to pay the debt?
![Page 37: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/37.jpg)
1 – register
![Page 38: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/38.jpg)
2 – evaluate and prioriGze
![Page 39: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/39.jpg)
3 – do not accumulate
![Page 40: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/40.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/41.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/42.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/43.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/44.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/45.jpg)
and how about the product owner?
(because it seems he is somehow important, doesn’t it? )
![Page 46: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/46.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/47.jpg)
but he is the one who will have to pay for the debt eventually!
![Page 48: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/48.jpg)
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)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/49.jpg)
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 51: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/51.jpg)
?
![Page 52: Technical Debt (Qcon San Francisco 2011)](https://reader034.fdocuments.net/reader034/viewer/2022042713/547c3454b479599d508b4612/html5/thumbnails/52.jpg)
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.