Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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
You’ve finished this document.
Download and read it offline.
Upcoming SlideShare
Programação simultânea em pares
Next
Upcoming SlideShare
Programação simultânea em pares
Next
Download to read offline and view in fullscreen.

35

Share

Old Code, New Tricks

Download to read offline

Slides from my Agile 2015 presentation, "Old Code, New Tricks".

https://agile2015.sched.org/event/c43203024d8f7d3fe307028911a57033

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Old Code, New Tricks

  1. OLD CODE, NEW TRICKSOR, HOW I LEARNED TO LOVE LEGACY CODE AND YOU CAN, TOO. By M. Scott Ford Founder, Corgibytes @mscottford
  2. @mscottford WHY WAS THIS MY FAVORITE PROJECT?
  3. @mscottford DISSATISFIED? WHY WAS I SO • Product vs. Services? • Desktop vs. Web? • Startup vs. Enterprise? • Hacker vs. Craftsman? • Self Employed?
  4. @mscottford PRODUCT LIFE CYCLE INTRODUCTION GROWTH MATURITY DEVELOPMENT
  5. @mscottford PRODUCT LIFE CYCLE INTRODUCTION GROWTH MATURITY DEVELOPMENT OBSCURITY DECLINE
  6. @mscottford PRODUCT LIFE CYCLE INTRODUCTION GROWTH MATURITY DEVELOPMENT OBSCURITY DECLINE MAKING
  7. @mscottford PRODUCT LIFE CYCLE INTRODUCTION GROWTH MATURITY DEVELOPMENT OBSCURITY DECLINE MAKING ????
  8. @mscottford PRODUCT LIFE CYCLE INTRODUCTION GROWTH MATURITY DEVELOPMENT OBSCURITY DECLINE MAKING MENDING
  9. MAKERS VS MENDERS @mscottford
  10. @mscottford MAKERS • Speed to Market • Rapid Prototyping • Minimum Viable Product • Likes Experimenting • Energized by Big Launch
  11. @mscottford MENDERS • Repair Technical Debt • Reduce Entropy • Bug Fixes & Integrations • Likes Stable & Steady • Energized by Small Wins
  12. @mscottford DEVELOPER LANDSCAPE HACKER CRAFTSMAN
  13. @mscottford DEVELOPER LANDSCAPE HACKER CRAFTSMAN MAKING MENDING
  14. @mscottford DEVELOPER LANDSCAPE HACKER CRAFTSMAN RAPID PROTOTYPING MAKING MENDING
  15. @mscottford DEVELOPER LANDSCAPE HACKER CRAFTSMAN RAPID PROTOTYPING SOLID MAKING MENDING
  16. @mscottford DEVELOPER LANDSCAPE HACKER CRAFTSMAN RAPID PROTOTYPING SOLID FIRE 
 FIGHTING MAKING MENDING
  17. @mscottford DEVELOPER LANDSCAPE HACKER CRAFTSMAN RAPID PROTOTYPING SOLID FIRE 
 FIGHTING ???? MAKING MENDING
  18. @mscottford DEVELOPER LANDSCAPE HACKER CRAFTSMAN RAPID PROTOTYPING SOLID FIRE 
 FIGHTING SOFTWARE
 REMODELING MAKING MENDING
  19. SOFTWARE REMODELING @mscottford
  20. SOFTWARE REMODELING @mscottford activities that reduce software entropy
  21. @mscottford SOFTWARE ENTROPY
  22. @mscottford Modification increases complexity, unless a conscious effort is made. Using software means continuous modification.1 2 Lehman,  M.  M.;  Belady,  L.A.  (1985),  Program  evolu=on:  processes  of  soCware  change,  Academic  Press  Professional,  Inc.,  San  Diego,  CA SOFTWARE ENTROPY
  23. @mscottford The longer it’s been since the last time a program has been modified, the more expensive it will be to make the next modification.
  24. BULLDOZE VS REMODEL @mscottford
  25. @mscottford WHEN TO REMODEL?
  26. @mscottford WHEN TO REMODEL? FEATURES 
 YOU HAVE
  27. @mscottford WHEN TO REMODEL? FEATURES 
 YOU HAVE FEATURES 
 YOU NEED
  28. @mscottford WHEN TO REMODEL? FEATURES 
 YOU HAVE FEATURES 
 YOU NEED REMODELING
 JUSTIFICATION
  29. @mscottford REMODELING PRINCIPLES
  30. @mscottford REMODELING PRINCIPLES Language
 Matters
  31. project? How do you describe a LEGACY @mscottford
  32. @mscottford WHAT COLOR IS YOUR FIELD?
  33. • Talking positively about our work helps us feel good about it. • Consider the following: @mscottford LANGUAGE MATTERS NEGATIVE POSITIVE Legacy Brownfield Rescue Spaghetti Code Antiquated Existing Code Restore Remodel Revitalize Vintage/Classic
  34. • Some terms used by the Agile community begin to break down when talking about existing projects. • Consider the following: – Sprint vs. Iteration – Estimate vs. Forecast @mscottford LANGUAGE MATTERS
  35. @mscottford Modern 
 Techniques REMODELING PRINCIPLES Language
 Matters
  36. • Would a doctor treat you using only medical knowledge available in the year you were born? • When working on an old house, would you limit yourself to only tools available the year it was built? • You DO NOT have to limit yourself to old tools and techniques. @mscottford USE MODERN TECHNIQUES
  37. @mscottford Modern 
 Techniques REMODELING PRINCIPLES Language
 Matters Respect
 The Past
  38. • Look at work as a form of software archaeology. • Practice giving and receiving critiques. • Retrospective Prime Directive becomes invaluable. Reserve judgement. 
 “Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand.” @mscottford RESPECT THE PAST
  39. • How to give a good critique: –Critique the code: never the author. –Call attention to the good things, 
 as well as opportunities for improvement. –Make it clear that you are stating opinion and not fact. • Practice at http://exercism.io • git blame @mscottford RESPECT THE PAST
  40. @mscottford Modern 
 Techniques Systems, 
 Not Goals REMODELING PRINCIPLES Language
 Matters Respect
 The Past
  41. • Goals work great for initial launch, not so well for maintenance. – Ex: Better to establish system where tests are added with every commit than set a “goal” of 100% test coverage. – Continuous Integration – Continuous Deployment – Automated Code Review @mscottford SYSTEMS, NOT GOALS
  42. • Some of our favorite tools for creating maintenance systems: – Style Cops (rubocop, FxCop) – Linters (jslint, csslint, xmllint) – Quality (Code Climate, BitHound) – Continuous Monitoring (Honeybadger, Airbrake, New Relic) – Continuous Deployment & Integration (CodeShip, Jenkins, Travis CI, Circle CI) – Chat-Ops (Slack, Gitter, HipChat) @mscottford SYSTEMS, NOT GOALS
  43. QUESTIONS? @mscottford
  44. @mscottford Contact Info @mscottford corgibytes.com
  • powerirs

    Sep. 2, 2021
  • 2muni

    May. 16, 2019
  • VikashKumar1344

    Nov. 23, 2018
  • JusticeBajeri

    Nov. 5, 2017
  • MikeHewitson

    May. 10, 2017
  • ChristianArtnerYanni

    Oct. 11, 2016
  • kixkixson

    Sep. 8, 2016
  • jhadfield

    Aug. 1, 2016
  • vershatrivedi

    Apr. 12, 2016
  • JedidjaBourgeois

    Jan. 8, 2016
  • virajs

    Dec. 3, 2015
  • MarcioApF

    Nov. 5, 2015
  • liverpool456

    Sep. 11, 2015
  • LucileClaud

    Sep. 7, 2015
  • AkitoTanikado

    Aug. 27, 2015
  • LunatikFIvesixx

    Aug. 16, 2015
  • unixcoder

    Aug. 13, 2015
  • TimGreene6

    Aug. 12, 2015
  • ssuserd6ca61

    Aug. 11, 2015
  • omaruriel

    Aug. 10, 2015

Slides from my Agile 2015 presentation, "Old Code, New Tricks". https://agile2015.sched.org/event/c43203024d8f7d3fe307028911a57033

Views

Total views

12,010

On Slideshare

0

From embeds

0

Number of embeds

374

Actions

Downloads

58

Shares

0

Comments

0

Likes

35

×