Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fight Code Rot Using Continuous Improvement

Fight Code Rot Using Continuous Improvement

garyfleming

August 22, 2019
Tweet

More Decks by garyfleming

Other Decks in Programming

Transcript

  1. ▸ No source code (written in an older language) ▸

    Runs in a green screen terminal, ▸ Has to be emulated. @garyfleming
  2. SYSTEM EXPERIMENT: FISHES AND TIME ▸ 10 minutes? ▸ 10

    hours? ▸ 10 days? ▸ 10000 years? @garyfleming
  3. EXPERIMENT: DEPENDENCY UPDATE DAILY ▸ Update ▸ Build and test

    ▸ Commit/Revert ▸ Commit causes CD to happen @garyfleming
  4. OUTCOME: DEPENDENCY UPDATE DAILY Mostly success! ▸ Some Major Version

    upgrades would need intervention, ▸ Temporary exclusions are important, @garyfleming
  5. DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Ranges and Lock files: gem/bundler,

    most JS frameworks. >=5.4.1 3.* [3.7.1) @garyfleming
  6. DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Possibly open: pip, some JS

    frameworks, gem some-dep a-different-dep @garyfleming
  7. INTERMEDIARY TOOLING ▸ Java -> Jabba ▸ Ruby -> RVM

    ▸ Node -> NVM ▸ Python -> Virtualenv (to some degree) @garyfleming
  8. AVOID SNOWFLAKE SERVERS ▸ Hard to Reproduce ▸ Hard to

    Modify ▸ Require manual processes, auditing, and docs. @garyfleming
  9. AVOIDING OBSOLESCENCE ▸ Move to new versions, ▸ Cautiously embrace

    new languages, ▸ Design language agnostic APIs @garyfleming