Software debt slowly creeps into software assets if left unnoticed and can slow down delivery in ways that seemed faster initially. Fortunately, modern tools, frameworks, and software development approaches help us manage software debt effectively at a reasonable cost to implement. This program will show ways to recognize software debt in five debt areas so that you can start to manage it.
2. Chris
Sterling
Co-‐founder
of
Agile
Advantage
and
VP
of
Engineering
(www.AgileAdvantage.com)
Author
of
Book
“Managing
SoAware
Debt:
Building
for
Inevitable
Change”
Consults
on
soAware
technology,
Agile
technical
pracKces,
Scrum,
and
effecKve
management
techniques
CerKfied
Scrum
Trainer
Email:
chris@agileadvantage.com
InnovaKon
Games®
Trained
Facilitator Web:
h3p://www.agileadvantage.com
Follow
me
on
Twi0er:
@csterwa
Open
Source
Developer Blog:
h3p://www.ge8ngagile.com
Hashtag
for
presenta:on:
#swdebt
2
Wednesday, November 30, 2011
3. Go
to
ImpedimentMonkey.com!!!
Send
an
email
to
Louie@impedimentmonkey.com
to
get
invited
with
your
first
impediment
now!!! 3
Wednesday, November 30, 2011
4. Agenda
Managing
SoAware
Debt • ConKnuous
IntegraKon
• An
Overview • Quality
Dashboards
Types
of
SoAware
Debt Release
Management
• Technical • The
Power
of
2
Scripts:
• Quality Deploy
and
Rollback
• ConfiguraKon
Management • ConKnuous
IntegraKon
• Design • Automated
PromoKon
• PlaUorm
Experience • Turn
On/Off
Features
Balancing
Signal
to
Noise Exercise
• DefiniKon
of
Done • SoAware
Debt
Management
Strategy
• Source
Control
Management
4
Wednesday, November 30, 2011
6. THE
DISECONOMIES
OF
SCALE
IN
SOFTWARE
DEVELOPMENT*
Project
size
is
easily
the
most
significant
determinant
of
effort,
cost
and
schedule
[for
a
soIware
project].
*
“SoIware
Es:ma:on:
Demys:fying
the
Black
Art
“
–
Steve
McConnell
Wednesday, November 30, 2011
7. Big
Ball
of
Mud
“A
Big
Ball
of
Mud
is
a
haphazardly
structured,
sprawling,
sloppy,
duct-‐tape-‐and-‐baling-‐wire,
spagheZ-‐code
jungle.
These
systems
show
unmistakable
signs
of
unregulated
growth,
and
repeated,
expedient
repair.
Informa:on
is
shared
promiscuously
among
distant
elements
of
the
system,
oIen
to
the
point
where
nearly
all
the
important
informa:on
becomes
global
or
duplicated.
The
overall
structure
of
the
system
may
never
have
been
well
defined.
If
it
was,
it
may
have
eroded
beyond
recogni:on.
Programmers
with
a
shred
of
architectural
sensibility
shun
these
quagmires.
Only
those
who
are
unconcerned
about
architecture,
and,
perhaps,
are
comfortable
with
the
iner:a
of
the
day-‐to-‐day
chore
of
patching
the
holes
in
these
failing
dikes,
are
content
to
work
on
such
systems.”
*
*
Brian
Foote
and
Joseph
Yoder,
Big
Ball
of
Mud.
Fourth
Conference
on
Pa0erns
Languages
of
Programs
(PLoP
'97/EuroPLoP
'97)
Mon:cello,
Illinois,
September
1997
Wednesday, November 30, 2011
11. Why
not
just
call
it
all
“ Technical
Debt”
Technical
debt
tended
to
focus
more
on
programming
aspects
of
soIware
delivery
and
leI
out
full
soIware
development
life
cycle
Each
type
of
soIware
debt
can
be
managed
and
monitored
using
different
tools
and
approaches
Focusing
on
managing
each
type
of
soIware
debt
simplifies
crea:on
of
an
overall
strategy
that
promotes
holis:c
perspec:ve
11
Wednesday, November 30, 2011
12. Types
of
SoIware
Debt
Technical
Debt:
These
are
the
ac:vi:es
that
a
team
or
team
members
do
not
to
do
well
now
that
will
impede
future
development
if
leI
as
is.
Quality
Debt:
There
is
a
diminishing
ability
to
verify
the
func:onal
and
technical
quality
of
soIware:
the
“Break/Fix”
mentality.
ConfiguraHon
Management
Debt:
Integra:on
and
release
management
become
more
risky,
complex,
and
error-‐prone.
Design
Debt:
The
cost
of
adding
features
is
increasing
toward
the
point
where
it
is
more
than
the
cost
of
wri:ng
from
scratch.
PlaJorm
Experience
Debt:
The
availability
and
alignment
of
people
to
business
objec:ves
that
involve
soIware
changes
is
becoming
more
limited
or
cost-‐prohibi:ve.
8
Wednesday, November 30, 2011
13. Principle:
No
maOer
what,
the
cost
of
addressing
so+ware
debt
increases
with
Hme.
Wednesday, November 30, 2011
15. Balancing
Signal
Indicators
Value
Quality Constraints
Source:
Jim
Highsmith (Schedule,
Cost,
Scope)
15
Wednesday, November 30, 2011
16. DefiniMon
of
Done
-‐
Assert
Quality
Acceptance defined criteria for each Code checked in with reference to
user story US#/Task#
Unit tests written and passed Tested on FE
Code compiles with no errors and no Integration test written & passes
warnings
Test code reviewed
New code doesn’t break existing code
Environment requirements documented
Test case review (Dev to review test
Interface document updated/added
case written)
and checked in to SVN
Architectural impact assessed and
Acceptance criteria verified complete
artifacts updated if necessary
All P1-P3 bugs for the story are
Comments in code
closed
Error codes added
Test approves user story
Code reviewed by peer
Story demonstrated to product owner
and accepted on Target Platform
16
Wednesday, November 30, 2011
17. Release
DefiniMon
of
Done
Every
release
should
have
clear
quality
criteria
With
a
“Release
Defini:on
of
Done”
you
can
understand
targets
be0er
Measure
the
gap
between
the
teams’
Defini:on
of
Done
and
a
Release
Defini:on
of
Done.
• This
gap
is
a
source
of
quality
issues
and
represents
significant
risk
to
schedule
Wednesday, November 30, 2011
18. Release
DefiniMon
of
Done
Every
release
should
have
clear
quality
criteria
With
a
“Release
Defini:on
of
Done”
you
can
understand
targets
be0er
Measure
the
gap
between
the
teams’
Defini:on
of
Done
and
a
Release
Defini:on
of
Done.
• This
gap
is
a
source
of
quality
issues
and
represents
significant
risk
to
schedule
Wednesday, November 30, 2011
21. TradiMonal
Source
Control
Management
Code
Complete
Version
1 Integrate
for
Branch Version
2
Main
Branch
18
Wednesday, November 30, 2011
22. TradiMonal
Source
Control
Management
Code
Complete
Version
1 Integrate
for
Branch Version
2
Debt Main
Branch
Death
March
18
Wednesday, November 30, 2011
23. TradiMonal
Source
Control
Management
Code
Complete
Version
1 Integrate
for
Branch Version
2
Debt Main
Branch
Death
March
{
Debt
accrues
quickly
within
stabilizaHon
periods
18
Wednesday, November 30, 2011
27. Flexible
Source
Control
Management
Version 1 Version 2
Main Branch
19
Wednesday, November 30, 2011
28. Flexible
Source
Control
Management
Version 1 Version 2
Main Branch
{
Not Easy! Must have proper infrastructure to do this.
19
Wednesday, November 30, 2011
34. Early
Warning
Signs
Early
Warnings:
•Broken
Builds
•Broken
Automated
Tests
•Broken
Custom
Thresholds
25
Wednesday, November 30, 2011
35. Early
Warning
on
Quality
Dashboard
Early
Warnings:
•Design
Debt
in
Duplica:on
(DRY)
•Technical
Debt
in
Code
Complexity
•Quality
Debt
in
Bug
DB
(Break/Fix)
•Other
Custom
Thresholds
26
Wednesday, November 30, 2011
37. “If
releases
are
like
giving
birth,
then
you
must
be
doing
something
wrong.”
-‐
Robert
Benefield
Wednesday, November 30, 2011
38. Case
Study:
Enterprise
Agile
AdopMon
180+
person
“Web
2.0”
product
organiza:on
Waterfall
SDLC
that
development
uses
to
deliver
in
6
month
release
cycles
Want
to
use
Agile
methods
to
be
more
responsive
to
users
and
keep
up
with
other
“Web
2.0”
companies
Transi:oned
to
Agile
methods
on
15
teams
in
3
months
Changed
release
management
strategy,
added
XP
technical
prac:ces,
and
implemented
Scrum
product
development
framework
for
scaled
coordina:on
Able
to
release
every
week
to
users
within
4
months
Used
streamlined
deployment
environment
process
to
validate
product
changes
daily
using
Con:nuous
Integra:on
and
automated
promo:ons
29
Wednesday, November 30, 2011
39. The
Power
of
2
Scripts:
Deploy
&
Rollback
30
Wednesday, November 30, 2011
42. The
value
of
technical
aspects
in
an
applica:on
or
its
surrounding
infrastructure
is
the
cost
of
not
addressing
them.
29
Wednesday, November 30, 2011
43. Describe
as
Abuse
User
Stories
Implement Security
for User Information
*
From
“User
Stories
Applied”
presented
by
Mike
Cohn
Agile
2006
30
Wednesday, November 30, 2011
44. Describe
as
Abuse
User
Stories
Implement Security As a Malicious Hacker I
want to steal credit card
for User Information
information so that I can
make fraudulent charges
*
From
“User
Stories
Applied”
presented
by
Mike
Cohn
Agile
2006
30
Wednesday, November 30, 2011
45. Some
PotenMal
Abusers
• Malicious
Hacker
• Mass
of
users
• SQL
injector
• Disgruntled
employee
• Naïve
API
user
• ImpaBent
clicker
• Denial-‐of-‐service
(DoS)
aFacker
• Sleazy
user
31
Wednesday, November 30, 2011
48. Put
SoIware
Debt
on
Product
Roadmap
*
Image
from
Dean
Leffingwell’s
blog
-‐
h0p://scalingsoIwareagility.wordpress.com/
34 38
Wednesday, November 30, 2011