what scrum masters and product owners should know about software quality and technical debt

31
What scrum masters and product owners should know about software quality and technical debt. [email protected]

Upload: stx-next

Post on 18-Jan-2017

114 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: What scrum masters and product owners should know about software quality and technical debt

What scrum masters and product owners

should know about software quality

and technical debt.

[email protected]

Page 3: What scrum masters and product owners should know about software quality and technical debt

What is Technical Debt and where does

it come from?

Page 4: What scrum masters and product owners should know about software quality and technical debt

planning

daily stand-ups

release to PROD

restart

feature freeze

regression tests

feature request

FEATURE REQUEST

quick & dirty solution

clean & smart solution

Page 5: What scrum masters and product owners should know about software quality and technical debt

ILLUSION OF “everything is ok”

“we will refactor

it later”“there is no time

for testing”

SPRINT 12SPRINT 10 SPRINT 11

quick & dirty solution

Page 6: What scrum masters and product owners should know about software quality and technical debt

CARRYING OVER TECH. DEBT

quick & dirty solution

“we will refactor

it later”

quick & dirty solution

“we will refactor

it later”“there is no time

for testing”

SPRINT 12SPRINT 10 SPRINT 11

quick & dirty solution

Page 7: What scrum masters and product owners should know about software quality and technical debt

What is TECHNICAL DEBT?

Technical debt is the difference between what was promised and what was actually delivered.

Tom Poppendieck defines technical debt as everything that makes your code harder to change.

Consequence of cutting corners throughout software development. Technical Debt are all of those things you choose not to do now and after some time you still leave them undone.

Figure 1: Technical debt grid quadranthttp://martinfowler.com/bliki/TechnicalDebtQuadrant.html

lekkomyślny brawurowy

rozważnyroztropny

nieumyślny

celowy

Page 8: What scrum masters and product owners should know about software quality and technical debt

Classifying technical debt

Figure 1: Technical debt grid quadranthttp://martinfowler.com/bliki/TechnicalDebtQuadrant.html

Entry into a new market – first to market may mean that lower quality or features with more workarounds might be acceptable.

This is a natural occurrence. Teams would like to improve upon whatever has been done after gaining experience and relevant knowledge.

This happens typically to programmers who are incompetent and unaware of the implications of

adding/removing a piece of code, thus incurring a huge technical

debt.

Pushing the project through because the client wants it on a set date, and no one has built a relationship with the client to discuss the details, nor has the client been informed of the

effect on quality if the delivery is rushed.

Page 9: What scrum masters and product owners should know about software quality and technical debt

TIME REVEALS THE TRUTH

“we will refactor

it later”

quick & dirty solution

“there is no time for testing”

SPRINT 12SPRINT 10 SPRINT 11

quick & dirty solution

“we will refactor

it later”

few months

quick & dirty solution

SPRINT 31

more bugs

unreadable code

code duplication

slower development

postponed releases

heavy manual testing

Page 10: What scrum masters and product owners should know about software quality and technical debt

What would I need to do in order to calculate technical debt for a

software project?You cannot improve what you don’t measure.

What you don’t measure, you cannot prove.

Page 11: What scrum masters and product owners should know about software quality and technical debt

SOFTWARE METRICS

CODECOVERAGE

NESTEDCODE

CODELEFTOVERS

CODECOMPLEXITY

CODEDUPLICATION

Page 12: What scrum masters and product owners should know about software quality and technical debt

SOFTWARE METRICS

CODECOMPLEXITY

● Indicator of where the logic is stored and how the logic is distributed.

● Files with high value of Mcc most of the time are responsible for too many things at the same time. Refactoring of such files can be reflected in more granular logic distributionin project.

Page 13: What scrum masters and product owners should know about software quality and technical debt

SOFTWARE METRICS

NESTEDCODE

● Code in deep nesting levels is very difficult to understand.

● Developers spend overly much time “thinking and searching” before they modify it.

● Higher risk of introducing changes.

● Nearly impossible to be tested completely.

Page 14: What scrum masters and product owners should know about software quality and technical debt

SOFTWARE METRICS

CODELEFTOVERS

● Code is only commented not deleted.

● An indicator that developers are unsure about their code changes.

● Understanding mixed real-and-commented code is slow, because the commented code is probably relevant and also needs to be understood.

Page 15: What scrum masters and product owners should know about software quality and technical debt

How much technical debt is too much

technical debt?

Page 16: What scrum masters and product owners should know about software quality and technical debt
Page 17: What scrum masters and product owners should know about software quality and technical debt
Page 18: What scrum masters and product owners should know about software quality and technical debt

Helicopter view

Page 19: What scrum masters and product owners should know about software quality and technical debt

Hotspots view

Page 20: What scrum masters and product owners should know about software quality and technical debt

Issues view

Page 21: What scrum masters and product owners should know about software quality and technical debt

File detailed view

Page 22: What scrum masters and product owners should know about software quality and technical debt

File detailed view with issue explanation

Page 23: What scrum masters and product owners should know about software quality and technical debt

Quality gates

Page 24: What scrum masters and product owners should know about software quality and technical debt
Page 25: What scrum masters and product owners should know about software quality and technical debt

Monitoring & steering dashboard

Page 26: What scrum masters and product owners should know about software quality and technical debt

Productivity view

Page 27: What scrum masters and product owners should know about software quality and technical debt

Landscape overview

Page 28: What scrum masters and product owners should know about software quality and technical debt

What are the most effective ways to manage technical debt in a software project

(agile approach)?

Page 29: What scrum masters and product owners should know about software quality and technical debt

managing technical debt

DEBTbacklog

makeupstories (chores)

technicalretrospective

build relationship

on transparency

make risk prominent, use

numbers

educate on true cost of technical

debt

test often

automate tests

invest in CI strong DOD

build awareness at the management level of the

hidden cost behind the quality

cleanup releases / warranty phase

inspect & adapt software development cycle

agile >> scrum just make it work for you

inject best practices

build quality culture

encourage knowledge

sharing

Page 30: What scrum masters and product owners should know about software quality and technical debt

TECHNICAL DEBT COMES FROM

DECISIONSNOT CODE

Page 31: What scrum masters and product owners should know about software quality and technical debt

TECHNICAL DEBT IS #1 IMPEDIMENT FOR TEAMS TO

BE AGILE