4- managing technical debt in agile teams - Alireza maddah

22
Managing Technical Debt In Agile Teams @Alireza_Maddah Technical Leader Simplicity, an Agile Team

description

 

Transcript of 4- managing technical debt in agile teams - Alireza maddah

Page 1: 4- managing technical debt in agile teams - Alireza maddah

Managing Technical Debt In Agile Teams

@Alireza_MaddahTechnical LeaderSimplicity, an Agile Team

Page 2: 4- managing technical debt in agile teams - Alireza maddah

The Purpose of Agile Methods

1. Create High-Quality Software2. Deliver ContinuouslyWhich results in:3. Costs Reduction4. Catching up with the market

Page 3: 4- managing technical debt in agile teams - Alireza maddah
Page 4: 4- managing technical debt in agile teams - Alireza maddah

The Story of Two Failures

Once upon a day; there were two agile teams that were going to work on the same project separately and independently…

Feature

Page 5: 4- managing technical debt in agile teams - Alireza maddah

So each of the two teams hired the same consultant to help them find their way to the

success of the project…

Page 6: 4- managing technical debt in agile teams - Alireza maddah

The Story of Two Failures

Feature

Page 7: 4- managing technical debt in agile teams - Alireza maddah

• FeatureGuys Team• The team is focusing on

building more and more features without paying attention to the quality and re-architecturing costs that would be imposed on the project later.

• InfrastructureGuys Team• The Team is focusing on

developing all the required infrastructures first and then creating features. They produce a high-quality software with just a few features.

Page 8: 4- managing technical debt in agile teams - Alireza maddah

The Story of Two Failures

The two were all doing it wrong…Actually they failed…

Feature

Page 9: 4- managing technical debt in agile teams - Alireza maddah
Page 10: 4- managing technical debt in agile teams - Alireza maddah

The Problem of FeatureGuys Team

• They sacrificed the quality for continuous delivery.

• The team could catch up with the market early…

• The Product Owner was happy…• But because of the crappy-codes, poor

designs and incomplete architecture, the project failed in a few sprints later…

• Actually, the project was not maintainable at all…

Page 11: 4- managing technical debt in agile teams - Alireza maddah

The Problem of InfrastructureGuys Team

• They sacrificed the continuous delivery for quality.

• They couldn’t release the product to market soon.

• They lost the market…• Developers were happy because they had

created a high-quality software…• Actually, they created a low-feature, high-

quality software with no customer…

Page 12: 4- managing technical debt in agile teams - Alireza maddah

The Story of Two Failures

Let’s do a flash-back…What had the consultant advised to the

teams?Was the consultant wrong?

Or the teams had misunderstood his mean?Feature

Page 13: 4- managing technical debt in agile teams - Alireza maddah

Technical Debt

The consultant tried to introduce the concept of technical debt to the teams; but

they didn’t comprehend it well…

Page 14: 4- managing technical debt in agile teams - Alireza maddah

What is Technical Debt?

• It is a term coined by Ward Cunninghum in 1992.

• The metaphor highlights the compromises between short-term gain of getting software out the door faster, and long-term viability of the software system.

Page 15: 4- managing technical debt in agile teams - Alireza maddah

Technical Debt Quadrant (Martin Fowler)

Page 16: 4- managing technical debt in agile teams - Alireza maddah

Technical Debt Types

• Technical Debt comes in various forms:• Design Debt• Architectural Debt• Test Debt• Documentation Debt

• Actually, as Henrik Kniberg suggests; anything in the process of software development life-cycle which slows you down is referred to as technical debt.

Page 17: 4- managing technical debt in agile teams - Alireza maddah

Is Crappy Code a type of Technical Debt?

• Ward Cunninghum and Uncle Bob suggest that messy code should not be considered as technical debt; but some people argue that once unclean code is in your system; the effects are identical to technical debt.

Page 18: 4- managing technical debt in agile teams - Alireza maddah

What did the two teams do wrong?

• FeatureGuys Team:• They took advantage of

technical debt in order to push software into the market; but they ignored the fact that technical debt needs to be paid off as soon as possible.

• InfrastructureGuys Team• The fear of inability to paying

off the technical debt and willingness to stay in the safe side caused the team to ignore the fact that the product needs a customer.

Page 19: 4- managing technical debt in agile teams - Alireza maddah

Is Technical Debt Good Or Bad?

• Just as financial debt; technical debt is not bad; but you need to pay down technical debt; otherwise it would create real problems.

• Actually; all teams of any kind deal with some sort of technical debt.

Page 20: 4- managing technical debt in agile teams - Alireza maddah

How can we manage Technical Debt?• Explain the importance of writing clean code to developers.• Dedicate a part of each sprint to paying back technical debts.

(Technical Debt board)• Negotiate with the product owner about the effects of technical

debt on the future of the project. • Try to groom the product backlog to decrease the size of each

story to a degree which could be finished in one day.• Incorporate code-refactoring into the software development life-

cycle- Use Static Code Analysis Tools to find the defects.• When the product owner creates a backlog item; ask him to clarify

the roadmap of that feature.• Clarify the notion of definition of done to developers.

Page 21: 4- managing technical debt in agile teams - Alireza maddah

The Final Word

A Clean code stems from a clean design and a clean design comes from a clean thought.

Page 22: 4- managing technical debt in agile teams - Alireza maddah

References

• Henrik Kniberg: “The Solution to Technical Debt”

• http://blog.crisp.se/2013/07/12/henrikkniberg/the-solution-to-technical-debt

• Martin Fowler: “Technical Debt Quadrant”• http://martinfowler.com/bliki/TechnicalDebtQuadrant.html

• Dr. Dobb’s Interview with Ward Cunningham

• http://www.ontechnicaldebt.com/blog/dr-dobbs-interview-with-ward-cunningham/

• Philippe Krutchen talk on Technical Debt• http://philippe.kruchten.com/talks/

• http://www.continuousdelivery.com