Old Code, New Tricks

6 800 vues

Publié le

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

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

Publié dans : Logiciels

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

×