RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · [email protected] @martincronje...

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

Transcript of RESCUING LEGACY SOFTWARE FROM IMPENDING DOOM · [email protected] @martincronje...

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