keeping code agile

53
Keeping Code Agile Agile Manchester 11 th May 2016

Upload: david-legge

Post on 16-Apr-2017

212 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Keeping Code Agile

Keeping Code Agile

Agile Manchester

11th May 2016

Page 2: Keeping Code Agile

#AgileManc

#KeepingCodeAgile

David Legge

@TheCodeCleaner

Page 3: Keeping Code Agile

Working effectively with Legacy Code Michael Feathers

“I never wrote any

other sort”

- my dad

Page 4: Keeping Code Agile

Working Effectively with Legacy Code Michael Feathers

Invaluable toolbox

● How to isolate for testing

● Create a test harness

● Baselines and documents current behaviour

● Allows further development with confidence

Page 5: Keeping Code Agile

#KeepingCodeAgile

Page 6: Keeping Code Agile

Why?

Page 7: Keeping Code Agile

Entropy happens

Page 8: Keeping Code Agile

Imagine yourself

3am on the day of release

Page 9: Keeping Code Agile

Who?

Page 10: Keeping Code Agile

Everyone

Needs support from business

Page 11: Keeping Code Agile

When?

Page 12: Keeping Code Agile

All the time

Small deferments possible

Page 13: Keeping Code Agile

What?

Page 14: Keeping Code Agile

Changable

Maintainable

Readable

No Dragons

Page 15: Keeping Code Agile

What isn't Agile Code?

Page 16: Keeping Code Agile

Greenfield to Legacy

In 6 months

Page 17: Keeping Code Agile

Swimming in Treacle

Page 18: Keeping Code Agile

Spaghetti Code

Page 19: Keeping Code Agile

Weak groupings

Big Buckets

Page 20: Keeping Code Agile

Scared to Commit

Page 21: Keeping Code Agile

Code Wars

“Don't touch my code”

Page 22: Keeping Code Agile

Here be Dragons

Page 23: Keeping Code Agile

Here be Dragons

Well go slay them

Page 24: Keeping Code Agile

Learn the code by changing it

Page 25: Keeping Code Agile

Build momentum

Page 26: Keeping Code Agile

It's

software

not

stoneware

Page 27: Keeping Code Agile

Make it work

Then make it better

Page 28: Keeping Code Agile

You're not 'Done'

Until you've refactored

Page 29: Keeping Code Agile

Integrating more than a days work is risky

Page 30: Keeping Code Agile

Work In Progress

=

Work At Risk

Page 31: Keeping Code Agile

Small change

Smaller risk

Page 32: Keeping Code Agile

“Software has diseconomies of scale”

@allenkellynet

Page 33: Keeping Code Agile

Bank your work

Use git/hg's local repo

Page 34: Keeping Code Agile

Minimal branching

Page 35: Keeping Code Agile

Manage the risk

Evolve it

Page 36: Keeping Code Agile

Manage the risk

Prototype it

Page 37: Keeping Code Agile

Manage the risk

Frontload it

Page 38: Keeping Code Agile

There's only

one

source of truth in the codebase

Page 39: Keeping Code Agile

And its not the comments

Page 40: Keeping Code Agile

Clean Code – 'Uncle Bob' Martin

My bible

Key concepts:

● Abstraction

● Don't repeat yourself

● Naming

● Commenting

Page 41: Keeping Code Agile

Need tests you can be confident in

Page 42: Keeping Code Agile

Don't be strangled by tests

Page 43: Keeping Code Agile

Not enough

Too many

Too fragile

Too slow

Page 44: Keeping Code Agile

Pyramid of Tests

Page 45: Keeping Code Agile

Christmas Tree of Tests

UI

Rest API

Page 46: Keeping Code Agile

Lean build

Page 47: Keeping Code Agile

Art of Agile Development – Warden & Shore

Key Concepts:● 10 minute build● Collective Code

Ownership

Page 48: Keeping Code Agile

Move analysis offline

Page 49: Keeping Code Agile

It's a Learning Opportunity

Page 50: Keeping Code Agile

Look after the

Goose that lays the Golden Egg

Page 51: Keeping Code Agile

Be Proactive

Page 52: Keeping Code Agile

Manual decision

Single-click deploy

Page 53: Keeping Code Agile

#KeepingCodeAgile

David Legge

@TheCodeCleaner