'

Old Code, New Tricks: How to Love Legacy Code

Понравилась презентация – покажи это...





Слайд 0

OLD CODE, NEW TRICKS OR, HOW I LEARNED TO LOVE LEGACY CODE AND YOU CAN, TOO. By M. Scott Ford Founder, Corgibytes @mscottford


Слайд 1

WHY WAS THIS MY FAVORITE PROJECT? @mscottford


Слайд 2

WHY WAS I SO DISSATISFIED? • Product vs. Services? • Desktop vs. Web? • Startup vs. Enterprise? • Hacker vs. Craftsman? • Self Employed? @mscottford


Слайд 3

PRODUCT LIFE CYCLE ION UCT ROD D INT ELO EV ENT PM URIT MAT Y TH OW GR @mscottford


Слайд 4

PRODUCT LIFE CYCLE D ION UCT ROD ELO EV INT DECLINE ENT PM URIT MAT Y TH OW GR OBSCURITY @mscottford


Слайд 5

PRODUCT LIFE CYCLE ELO EV UCT ROD D INT DECLINE ENT PM ION MAKING URIT MAT Y TH OW GR OBSCURITY @mscottford


Слайд 6

PRODUCT LIFE CYCLE ELO EV UCT ROD D INT DECLINE ENT PM ION MAKING TH OW Y URIT MAT ???? GR OBSCURITY @mscottford


Слайд 7

PRODUCT LIFE CYCLE ELO EV UCT ROD D INT DECLINE ENT PM ION MAKING TH OW Y URIT MAT MENDING GR OBSCURITY @mscottford


Слайд 8

MAKERS VS MENDERS @mscottford


Слайд 9

MAKERS • Speed to Market • Rapid Prototyping • Minimum Viable Product • Likes Experimenting • Energized by Big Launch @mscottford


Слайд 10

MENDERS • Repair Technical Debt • Reduce Entropy • Bug Fixes & Integrations • Likes Stable & Steady • Energized by Small Wins @mscottford


Слайд 11

DEVELOPER LANDSCAPE HACKER CRAFTSMAN @mscottford


Слайд 12

DEVELOPER LANDSCAPE MAKING HACKER CRAFTSMAN MENDING @mscottford


Слайд 13

DEVELOPER LANDSCAPE MAKING RAPID PROTOTYPING HACKER CRAFTSMAN MENDING @mscottford


Слайд 14

DEVELOPER LANDSCAPE MAKING RAPID PROTOTYPING HACKER SOLID CRAFTSMAN MENDING @mscottford


Слайд 15

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


Слайд 16

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


Слайд 17

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


Слайд 18

SOFTWARE REMODELING @mscottford


Слайд 19

SOFTWARE REMODELING activities that reduce software entropy @mscottford


Слайд 20

SOFTWARE ENTROPY @mscottford


Слайд 21

SOFTWARE ENTROPY 1 2 Using software means continuous modification. Modification increases complexity, unless a conscious effort is made. Lehman,  M.  M.;  Belady,  L.A.  (1985),  Program  evolu=on:  processes  of  soCware  change,  Academic  Press  Professional,  Inc.,  San  Diego,  CA @mscottford


Слайд 22

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. @mscottford


Слайд 23

BULLDOZE VS REMODEL @mscottford


Слайд 24

WHEN TO REMODEL? @mscottford


Слайд 25

WHEN TO REMODEL? FEATURES 
 YOU HAVE @mscottford


Слайд 26

WHEN TO REMODEL? FEATURES 
 YOU HAVE FEATURES 
 YOU NEED @mscottford


Слайд 27

WHEN TO REMODEL? FEATURES 
 YOU HAVE REMODELING
 JUSTIFICATION FEATURES 
 YOU NEED @mscottford


Слайд 28

REMODELING PRINCIPLES @mscottford


Слайд 29

REMODELING PRINCIPLES Language
 Matters @mscottford


Слайд 30

How do you describe a LEGACY project? @mscottford


Слайд 31

WHAT COLOR IS YOUR FIELD? @mscottford


Слайд 32

LANGUAGE MATTERS • Talking positively about our work helps us feel good about it. • Consider the following: NEGATIVE POSITIVE Legacy Brownfield Rescue Spaghetti Code Antiquated Existing Code Restore Remodel Revitalize Vintage/Classic @mscottford


Слайд 33

LANGUAGE MATTERS • 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


Слайд 34

REMODELING PRINCIPLES Language
 Matters Modern 
 Techniques @mscottford


Слайд 35

USE MODERN TECHNIQUES • 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


Слайд 36

REMODELING PRINCIPLES Language
 Matters Modern 
 Techniques Respect
 The Past @mscottford


Слайд 37

RESPECT THE PAST • 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


Слайд 38

RESPECT THE PAST • 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


Слайд 39

REMODELING PRINCIPLES Language
 Matters Modern 
 Techniques Respect
 The Past Systems, 
 Not Goals @mscottford


Слайд 40

SYSTEMS, NOT GOALS • 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


Слайд 41

SYSTEMS, NOT GOALS • 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


Слайд 42

QUESTIONS? @mscottford


Слайд 43

Contact Info @mscottford corgibytes.com @mscottford


Слайд 44


×

HTML:





Ссылка: