OLD CODE, NEW TRICKSOR, HOW I LEARNED TO LOVE LEGACY CODE AND YOU CAN, TOO.
By M. Scott Ford
Founder, Corgibytes @mscottfo...
@mscottford
WHY WAS THIS MY FAVORITE PROJECT?
@mscottford
DISSATISFIED?
WHY WAS I SO
• Product vs. Services?
• Desktop vs. Web?
• Startup vs. Enterprise?
• Hacker vs. C...
@mscottford
PRODUCT LIFE CYCLE
INTRODUCTION
GROWTH
MATURITY
DEVELOPMENT
@mscottford
PRODUCT LIFE CYCLE
INTRODUCTION
GROWTH
MATURITY
DEVELOPMENT
OBSCURITY
DECLINE
@mscottford
PRODUCT LIFE CYCLE
INTRODUCTION
GROWTH
MATURITY
DEVELOPMENT
OBSCURITY
DECLINE
MAKING
@mscottford
PRODUCT LIFE CYCLE
INTRODUCTION
GROWTH
MATURITY
DEVELOPMENT
OBSCURITY
DECLINE
MAKING
????
@mscottford
PRODUCT LIFE CYCLE
INTRODUCTION
GROWTH
MATURITY
DEVELOPMENT
OBSCURITY
DECLINE
MAKING
MENDING
MAKERS VS MENDERS
@mscottford
@mscottford
MAKERS
• Speed to Market
• Rapid Prototyping
• Minimum Viable Product
• Likes Experimenting
• Energized by Big...
@mscottford
MENDERS
• Repair Technical Debt
• Reduce Entropy
• Bug Fixes & Integrations
• Likes Stable & Steady
• Energize...
@mscottford
DEVELOPER LANDSCAPE
HACKER CRAFTSMAN
@mscottford
DEVELOPER LANDSCAPE
HACKER CRAFTSMAN
MAKING
MENDING
@mscottford
DEVELOPER LANDSCAPE
HACKER CRAFTSMAN
RAPID
PROTOTYPING
MAKING
MENDING
@mscottford
DEVELOPER LANDSCAPE
HACKER CRAFTSMAN
RAPID
PROTOTYPING
SOLID
MAKING
MENDING
@mscottford
DEVELOPER LANDSCAPE
HACKER CRAFTSMAN
RAPID
PROTOTYPING
SOLID
FIRE 

FIGHTING
MAKING
MENDING
@mscottford
DEVELOPER LANDSCAPE
HACKER CRAFTSMAN
RAPID
PROTOTYPING
SOLID
FIRE 

FIGHTING
????
MAKING
MENDING
@mscottford
DEVELOPER LANDSCAPE
HACKER CRAFTSMAN
RAPID
PROTOTYPING
SOLID
FIRE 

FIGHTING
SOFTWARE

REMODELING
MAKING
MENDI...
SOFTWARE REMODELING
@mscottford
SOFTWARE REMODELING
@mscottford
activities that reduce software entropy
@mscottford
SOFTWARE ENTROPY
@mscottford
Modification increases complexity,
unless a conscious effort is made.
Using software means
continuous modifica...
@mscottford
The longer it’s been
since the last time a
program has been
modified, the more
expensive it will be
to make th...
BULLDOZE VS REMODEL
@mscottford
@mscottford
WHEN TO REMODEL?
@mscottford
WHEN TO REMODEL?
FEATURES 

YOU HAVE
@mscottford
WHEN TO REMODEL?
FEATURES 

YOU HAVE
FEATURES 

YOU NEED
@mscottford
WHEN TO REMODEL?
FEATURES 

YOU HAVE
FEATURES 

YOU NEED
REMODELING

JUSTIFICATION
@mscottford
REMODELING PRINCIPLES
@mscottford
REMODELING PRINCIPLES
Language

Matters
project?
How do you describe a
LEGACY
@mscottford
@mscottford
WHAT COLOR IS YOUR FIELD?
• Talking positively about our work helps us feel good about it.
• Consider the following:
@mscottford
LANGUAGE MATTERS
NE...
• Some terms used by the Agile community begin to break down
when talking about existing projects.
• Consider the followin...
@mscottford
Modern 

Techniques
REMODELING PRINCIPLES
Language

Matters
• Would a doctor treat you using only medical knowledge
available in the year you were born?
• When working on an old hous...
@mscottford
Modern 

Techniques
REMODELING PRINCIPLES
Language

Matters
Respect

The Past
• Look at work as a form of software archaeology.
• Practice giving and receiving critiques.
• Retrospective Prime Directi...
• How to give a good critique:
–Critique the code: never the author.
–Call attention to the good things, 

as well as oppo...
@mscottford
Modern 

Techniques
Systems, 

Not Goals
REMODELING PRINCIPLES
Language

Matters
Respect

The Past
• Goals work great for initial launch, not so well for maintenance.
– Ex: Better to establish system where tests are added...
• Some of our favorite tools for creating maintenance systems:
– Style Cops (rubocop, FxCop)
– Linters (jslint, csslint, x...
QUESTIONS?
@mscottford
@mscottford
Contact Info
@mscottford
corgibytes.com
Prochain SlideShare
Chargement dans…5
×

@mscottford Contact Info @mscottford corgibytes.com Old Code, New Tricks

7 635 vues

Publié le

@mscottford
Contact Info
@mscottford
corgibytes.com

Publié dans : Logiciels

×