Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Credit Crunch Code<br />Paying Back the Technical Debt<br />By Gary Short<br />1<br />
Agenda<br />Defining Technical Debt<br />Why Managing Technical Debt is Important<br />Quantifying Technical Debt<br />Tec...
Defining Technical Debt #1<br />Term coined by Ward Cunningham in 1992<br />Analogous to financial debt<br />Financial deb...
Defining Technical Debt #2<br />With financial debt<br />“Virtual debt” by not having the best interest rate<br />With Tec...
Is There Interest On Technical Debt?<br />Just as there is interest on financial debt...<br />So there is interest on tech...
Just As Not All Financial Debt Is Bad<br />6<br />
Nor Is All Technical Debt<br />7<br />
But Financial Debt Can Be Dangerous<br />8<br />
And So Can Technical Debt<br />9<br />
Why Is Managing Technical Debt Important?<br />10<br />
Reduce Effort by Keeping it Under Control<br />11<br />
Quantifying Technical Debt<br />12<br />
Basic Formula To Get You Started<br />Where:<br />T = Total number of employees involved in paying back the debt<br />i = ...
Rate Card<br />Project Manager = 32 Euros / hour<br />Architect = 33 Euros / hour<br />Lead Developer = 30 Euros / hour<br...
Case Study #1<br />The Anti-Pattern: Waterfall Methodology<br />15<br />
The Main Weakness of Waterfall<br />16<br />
Where Does Change Come From?<br />17<br />
Why is Change So Costly?<br />18<br />
Why Is This Technical Debt?<br />Borrow time now, repay later<br />Take advantages now<br />Ease in analysing potential ch...
Quantify the Technical Debt: Agile<br />Assume a small error caught during the “paper prototype” phase of an iteration<br ...
Quantify the Technical Debt: BDUF<br />Now the same error found in waterfall...<br />Resources deployed<br />Architect 1 h...
Potential Cost Per Project<br />So the TD / defect = 148 Euros<br />The av. number of defects / project = 283*<br />Potent...
Fixing The Technical Debt<br />I’m not saying prefer Agile over Waterfall<br />I am saying:<br />Be aware of the impact th...
Case Study #2<br />The Anti – Pattern: Not Invented Here<br />24<br />
Symptoms<br />Development team spend time developing software which is not core the problem they are trying to solve<br />...
Concrete Example<br />Developers for a national bank are tasked with creating a new MIS tool<br />They dedicate 1 develope...
Why Is This Technical Debt?<br />Savings against time not made<br />Chose to develop a component<br />Should have bought f...
Quantifying The Technical Debt<br />The component was bought in the end:<br />Disregard the cost of the component<br />And...
Fixing The Technical Debt<br />Identify non core functional aspects of project<br />For each of those:<br />Can a componen...
Case Study #3<br />Anti-Pattern: Code that plays together stays together<br />30<br />
Symptoms<br />Let’s imagine a “Car” object<br />What properties should it have?<br />Make<br />Model<br />Colour<br />What...
What Is The Problem?<br />32<br />
Example of Class Pollution<br />Credit: Phil Winstanley (http://weblogs.asp.net/Plip/)<br />33<br />
Why Is This Technical Debt?<br />Borrow time now, repay later<br />Borrowed time now<br />Simpler object graph<br />Repay ...
Concrete Example<br />Online provider wants to be first to market<br />Ships service with monolithic object graph<br />Eff...
Quantifying the Technical Debt<br />1 monthly iteration to fix this debt<br />Resources deployed:<br />5 X Developers<br /...
Fixing The Technical Debt<br />Understand that<br />Monolithic object graph has a limited lifespan<br />Prefer separation ...
Case Study #4<br />The Anti-Pattern: Sensitive Tests<br />38<br />
Symptoms<br />Test which are sensitive to<br />Context<br />Interface<br />Data<br />Pass in one iteration<br />Fail in th...
Why Is This Technical Debt?<br />Borrow time now, repay later<br />Borrowed time in the form of easy to write tests<br />R...
Concrete Example<br />Tester testing code which uses data from development database<br />Developer adds new functionality<...
Quantifying the Technical Debt<br />Take previous 283 defects per project<br />Assume 10% of tests for those defects are d...
Fixing The Technical Debt<br />Test must use independent data<br />Don’t run tests against development data<br />Either<br...
How Do We Spot Technical Debt?<br />44<br />
We Are Used to Charting Progress<br />45<br />
Time Budget Failures Are Obvious<br />46<br />
Effect #1 – Loss of Productivity<br />47<br />
Effect #1 – Loss of Productivity<br />48<br />
Effect #2 – Increase In Testing<br />49<br />
Effect #2 – Increase In Testing<br />50<br />
Effect #3 – Decrease In Morale<br />51<br />
Effect #3 – Decrease In Morale<br />52<br />
Summary<br />In this presentation you learned:<br />What technical debt is<br />That it is important to manage technical d...
Take Away<br />If you only take away one thing<br />Know that technical debt is<br />the silent killer that stalks all pro...
Further Reading<br />http://c2.com/cgi/wiki?WardExplainsDebtMetaphor<br />http://c2.com/cgi/wiki?TechnicalDebt<br />http:/...
Questions?<br />There wasn’t time for my question<br />Where can I contact you?<br />gary@garyshort.org<br />www.garyshort...
Próxima SlideShare
Cargando en…5
×

Quantifying Technical Debt<br />12<br /> Technical Debt

17.534 visualizaciones

Publicado el

Quantifying Technical Debt12

  • Sé el primero en comentar

×