54
RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM [email protected] @martincronje [email protected] @jacdevos

RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · [email protected] @martincronje [email protected] @jacdevos. Created Date: 20160615074106Z

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

RESCUING LEGACY SOFTWAREFROM IMPENDING DOOM

[email protected]@martincronje

[email protected]@jacdevos

Page 2: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Why this talk?

Page 3: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Legacy code kills agility

Page 4: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Refactoring is hard

Page 5: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Refactoring storiesfrom the trenches

Page 6: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Why and when, but not how

Page 7: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Credits• Kent Beck on Small, Safe Steps and TDD

• Robert C. Martin on Clean Code

• Martin Fowler on Refactoring Techniques

• Ward Cunningham on Technical Debt

• Michael Feathers on Starting with a Mess

• J.B. Rainsberger relating it to Accidental Complication

Page 8: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

What is legacy code?

What is the value in fixing legacy code?

How do we speak to Product Owners about it?

Should you rewrite?

What is refactoring?

When should we refactor?

Page 9: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

What is legacy code?

Page 10: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Legacy code has a negative perception.

Page 11: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

• Any code in production

• Ancient code

• Unsupported technology

• Not up to standard

• Code smells

You may have heard…

Page 12: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

- J.B. Rainsbergercode that we feel afraid toLegacy code is valuable

change.

Page 13: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Summary: Legacy Code?Legacy code is risky and expensive to change

Page 14: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Why fix legacy code?

Page 15: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

• If it ain't broken, don't fix it

• Make it easier to work with

• For our future happiness

• Good craftsmanship

You may have heard…

Page 16: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Professionalism

Page 17: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Quality culture

Page 18: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Return on investment

Page 19: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Increasing the future value

Page 20: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

…a trade-off against present value

Page 21: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

In summaryImprove the code to reduce maintenance costs

Page 22: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Do POs understand the value in fixing legacy code?

Page 23: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

• Not enough time

• We cannot afford it

• Business will close-down

• Just one more feature

• They allow us to recover

You may have heard…

Page 24: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Developers vs ProductOwners

Page 25: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Do they really say that?

Page 26: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

How do we explain it to them?

Page 27: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Risk to business continuity

Page 28: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Unpredictable timelines

Page 29: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

In summaryLearn how to communicate the impact of legacy code to Product Owners

Page 30: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Should we rewrite?

Page 31: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

• No. Rather the devil you know

• No. It’s too expensive

• Yes. Use latest technologies

• Yes. Learnt from mistakes!

You may have heard…

Page 32: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Big bang rewrite

Page 33: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Lesson #1:Unpredictable timelines

Page 34: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Lesson #2:Puts your business at risk

Page 35: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Lesson #3:Always harder than you think

Page 36: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

In summaryResist the temptation to rewrite.

Page 37: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

What is the alternative?

Page 38: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Refactoring is a safer bet

Page 39: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

- Refactoring, Martin Fowler

and cheaper to modify without…make it easier to understand

behavior.changing its observable

Page 40: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Increase ease of change, while decreasing risk of change

Page 41: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Small incrementalimprovements into production

Page 42: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Cast safety nets as you progress

Page 43: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Start with lowest impactimprovement

Page 44: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

In summaryImprove design without changing observable behaviour

Page 45: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

When do we refactor?

Page 46: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Construction Refactoring

Page 47: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

New code Code changes Solution wideTDD Refactoring Litter-Pickup Refactoring

Comprehension RefactoringPreparatory Refactoring

Planned RefactoringLong-Term Refactoring

Refactoring workflows

Page 48: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Cleaning up as we go

Page 49: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Shanty Towncampsite?

What if this is the

Page 50: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

problemsHandling major

Page 51: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

refactoringTracer bullet

Page 52: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

In summaryClean up as you go, and escalate when there is an impending crisis

Page 53: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

Code that we’re afraid to change.

Invest in making change easier and less risky.

Talk to Product Owners about return on investment.

Avoid rewrites, favour refactoring.

Many, small improvements without changing behaviour.

Keep it clean and escalate when crisis is imminent.

Page 54: RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · martin.cronje@myob.com @martincronje jacques@nreality.com @jacdevos. Created Date: 20160615074106Z

HOW ARE YOU GOINGTO MAKE IT HAPPEN?

[email protected]@martincronje

[email protected]@jacdevos