project reality

29
/ Controlling Complexity, Eliminating Technical Debt, & Chimera Pet-Care Illusions of Engineering Wednesday, September 16, 2009

Upload: theo-schlossnagle

Post on 22-Feb-2017

473 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Project reality

/

Controlling Complexity,Eliminating Technical Debt, &Chimera Pet-Care

Illusions of Engineering

Wednesday, September 16, 2009

Page 2: Project reality

Technical Debt

Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite.... The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise.

Ward Cunningham:

”Wednesday, September 16, 2009

Page 3: Project reality

Technical Debt Misunderstood

Interest on technical debtis time spent on

“not-quite-right”code.

Wednesday, September 16, 2009

Page 4: Project reality

Technical Debt Misunderstood

I find that many developerspoorly define

“not-quite-right”

Wednesday, September 16, 2009

Page 5: Project reality

Technical Debt: Developer’s Perspective

Lack of elegance.Lack of extensibility.

Wednesday, September 16, 2009

Page 6: Project reality

Technical Debt: Engineer’s Perspective

does not meet: functional specifications;

security requirements;performance requirements.

Wednesday, September 16, 2009

Page 7: Project reality

Technical Debt Misunderstood

Why?

Wednesday, September 16, 2009

Page 8: Project reality

Technical Debt Understood

Fixing function, security or performance issues is part of

the original projecton the original budget.

Wednesday, September 16, 2009

Page 9: Project reality

Technical Debt Understood

New functional requirements have new budgets andthe cost of refactoringexisting components

can and mustbe included.

Wednesday, September 16, 2009

Page 10: Project reality

Technical Debt Understood

Choosing to not refactorwhen needed converts

technical debt intofinancial debt.

Wednesday, September 16, 2009

Page 11: Project reality

Technical debt as a tool

Debt is a financial instrument;

Technical debt is a software engineering instrument.

Wednesday, September 16, 2009

Page 12: Project reality

Technical debt as a tool

If you do not use it,you will not keep up.

If you do not manage it,it will suffocate you.

Wednesday, September 16, 2009

Page 13: Project reality

Safe technical debt

Lack of elegance.Lack of extensibility.

Rapid prototyping. END.

Wednesday, September 16, 2009

Page 14: Project reality

Typical technical debt

Lack of documentation.Lack of optimization.

Wednesday, September 16, 2009

Page 15: Project reality

Risky technical debt

Lack of complete function.Lack of complete tests.

Lack of architectural design.

Wednesday, September 16, 2009

Page 16: Project reality

Reality

80% of elegance is useful,20% is self-indulgence.

We call this part “good engineering.”

Wednesday, September 16, 2009

Page 17: Project reality

Reality

You likely have no idea how someone (even you)

will want to extend your code.

Wednesday, September 16, 2009

Page 18: Project reality

Reality

100% of premature optimization is wasteful.

Not all optimization is premature.

Good luck.

Wednesday, September 16, 2009

Page 19: Project reality

Reality

• Implementation averaged 25% over budget [1]

• 52.7% will cost 189% of original estimates [3]

• First year supports costs were underestimated an average of 20% [1]

• 40% failed to achieve their business case within a year of launch [1]

• 75% or more blew their schedules by over 30% [2]

• 31.1% will be canceled before they ever get completed [3]

[1] The Conference Board Survey (2001)[2] The KPMG Canada Survey (1997)[3] The Chaos Report (1995)

Wednesday, September 16, 2009

Page 20: Project reality

RULE I

TODOs related tofunction or securityshall not be used.

Instead tryfunction or security.

Wednesday, September 16, 2009

Page 21: Project reality

RULE II

Observe thePrinciple of Least Surprise

Wednesday, September 16, 2009

Page 22: Project reality

RULE III

Keep

It

Simple,

Stupid

Wednesday, September 16, 2009

Page 23: Project reality

RULE IV

If your code isn’t elegantit’s worth less.

If your code doesn’t workit’s worthless.

Wednesday, September 16, 2009

Page 24: Project reality

RULE V

Write functional tests.

Wednesday, September 16, 2009

Page 25: Project reality

RULE VI

Always use best coding practices.

Wednesday, September 16, 2009

Page 26: Project reality

RULE VII

Optimize everything*

* consider the optimal approach to each problem and articulately justify using anything else in comments/documentation

Wednesday, September 16, 2009

Page 27: Project reality

The Truth

The “Truth” issoftware engineering

is a hard balance

Wednesday, September 16, 2009

Page 28: Project reality

The Truth

Technical debt must be measured along side:

financial budgets,time budgets,

opportunity costs,expected project longevity.

Wednesday, September 16, 2009

Page 29: Project reality

Parting thought

I challenge you to be abetter engineer

and align your goalswith those of the project.

Wednesday, September 16, 2009