Fight Code Rot Using Continuous Improvement

Fight Code Rot Using Continuous Improvement

1b5863cbb2d0009e78eaa85ea89fe2a6?s=128

garyfleming

August 22, 2019
Tweet

Transcript

  1. 11.

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

    Runs in a green screen terminal, ▸ Has to be emulated. @garyfleming
  2. 15.

    SYSTEM EXPERIMENT: FISHES AND TIME ▸ 10 minutes? ▸ 10

    hours? ▸ 10 days? ▸ 10000 years? @garyfleming
  3. 32.

    EXPERIMENT: DEPENDENCY UPDATE DAILY ▸ Update ▸ Build and test

    ▸ Commit/Revert ▸ Commit causes CD to happen @garyfleming
  4. 33.

    OUTCOME: DEPENDENCY UPDATE DAILY Mostly success! ▸ Some Major Version

    upgrades would need intervention, ▸ Temporary exclusions are important, @garyfleming
  5. 35.

    DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Ranges and Lock files: gem/bundler,

    most JS frameworks. >=5.4.1 3.* [3.7.1) @garyfleming
  6. 36.

    DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Possibly open: pip, some JS

    frameworks, gem some-dep a-different-dep @garyfleming
  7. 41.
  8. 43.

    INTERMEDIARY TOOLING ▸ Java -> Jabba ▸ Ruby -> RVM

    ▸ Node -> NVM ▸ Python -> Virtualenv (to some degree) @garyfleming
  9. 46.

    AVOID SNOWFLAKE SERVERS ▸ Hard to Reproduce ▸ Hard to

    Modify ▸ Require manual processes, auditing, and docs. @garyfleming
  10. 54.

    AVOIDING OBSOLESCENCE ▸ Move to new versions, ▸ Cautiously embrace

    new languages, ▸ Design language agnostic APIs @garyfleming