Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Fight Code Rot Using Continuous Improvement
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
garyfleming
August 22, 2019
Programming
0
860
Fight Code Rot Using Continuous Improvement
garyfleming
August 22, 2019
Tweet
Share
More Decks by garyfleming
See All by garyfleming
User Story Mapping Workshop
garyfleming
1
45
TDD for Testers
garyfleming
1
110
TDD Is My Shame
garyfleming
0
310
Continuous Testing
garyfleming
0
85
Better User Stories Through Example Mapping
garyfleming
0
100
Fighting Continuous Entropy
garyfleming
0
95
beyond-frameworks.pdf
garyfleming
1
44
The Board Whisperer
garyfleming
0
1.1k
APIs on the Scale of Decades
garyfleming
0
120
Other Decks in Programming
See All in Programming
2026年 エンジニアリング自己学習法
yumechi
0
130
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
130
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
680
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
390
今から始めるClaude Code超入門
448jp
8
8.6k
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
CSC307 Lecture 03
javiergs
PRO
1
490
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.8k
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
720
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
「ブロックテーマでは再現できない」は本当か?
inc2734
0
960
Featured
See All Featured
New Earth Scene 8
popppiees
1
1.5k
Skip the Path - Find Your Career Trail
mkilby
0
54
Prompt Engineering for Job Search
mfonobong
0
160
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Claude Code のすすめ
schroneko
67
210k
Making Projects Easy
brettharned
120
6.6k
First, design no harm
axbom
PRO
2
1.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Agile that works and the tools we love
rasmusluckow
331
21k
Thoughts on Productivity
jonyablonski
74
5k
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Transcript
FIGHTING CODE ROT USING CONTINUOUS IMPROVEMENT 1995 @garyfleming
1995 @garyfleming
1995 @garyfleming
1995 @garyfleming
1995 @garyfleming
! @garyfleming
NOVEMBER FIFTEEN, NINETEEN NINETY-FIVE @garyfleming
SIXTEEN => SOXTEEN @garyfleming
SIXTEEN => SOXTEEN @garyfleming
TWO THOUSAND SOXTEEN @garyfleming
▸ No source code (written in an older language) ▸
Runs in a green screen terminal, ▸ Has to be emulated. @garyfleming
FIGHT CODE ROT USING CONTINUOUS IMPROVEMENT @GARYFLEMING @garyfleming
WHAT IS CODE ROT? @garyfleming
SYSTEM EXPERIMENT: @garyfleming
SYSTEM EXPERIMENT: FISHES AND TIME ▸ 10 minutes? ▸ 10
hours? ▸ 10 days? ▸ 10000 years? @garyfleming
ROT IN SOFTWARE @garyfleming
! @garyfleming
MULTI-FACETED @garyfleming
Problem KNOWING WHETHER YOUR SOFTWARE IS DEPLOYABLE @garyfleming
BRIEF INTRO TO CI/CD @garyfleming
CONTINUOUS INTEGRATION All developers/testers merge their code to a shared
mainline at least once a day. @garyfleming
CONTINUOUS INTEGRATION Related: ▸ Trunk-Based Development ▸ Feature Toggles @garyfleming
IF IT HURTS, DO IT MORE OFTEN. @garyfleming
CONTINUOUS DEPLOYMENT All changes go to production; safely, quickly, and
sustainably. @garyfleming
CONTINUOUS DEPLOYMENT Related: Blue-Green releases. @garyfleming
@garyfleming
Problem DEPENDENCY UPDATES @garyfleming
IF IT HURTS, DO IT MORE OFTEN. @garyfleming
IDEA UPDATE DEPENDENCIES DAILY @garyfleming
CONTINUOUS REGENERATION @garyfleming
CONTINUOUS REJUVENATION @garyfleming
EXPERIMENT: DEPENDENCY UPDATE DAILY ▸ Update ▸ Build and test
▸ Commit/Revert ▸ Commit causes CD to happen @garyfleming
OUTCOME: DEPENDENCY UPDATE DAILY Mostly success! ▸ Some Major Version
upgrades would need intervention, ▸ Temporary exclusions are important, @garyfleming
DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Single versioned: Maven, Gradle, packages.config
e.g 5.4.1 3.0-ALPHA 1.3.2 @garyfleming
DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Ranges and Lock files: gem/bundler,
most JS frameworks. >=5.4.1 3.* [3.7.1) @garyfleming
DEPENDENCY UPDATES: OTHER LANGUAGES ▸ Possibly open: pip, some JS
frameworks, gem some-dep a-different-dep @garyfleming
ALWAYS USE A LOCK FILE! Avoid "It works on my
machine" @garyfleming
RECENT DEVELOPMENTS ▸ Dependabot ▸ Atomist @garyfleming
GOOD TESTS ARE ESSENTIAL! @garyfleming
Problem RUNTIME ROT @garyfleming
ROT WILL SET IN ▸ JVM ▸ .NET ▸ NPM
version @garyfleming
THE CONTINUOUS NOW @garyfleming
INTERMEDIARY TOOLING ▸ Java -> Jabba ▸ Ruby -> RVM
▸ Node -> NVM ▸ Python -> Virtualenv (to some degree) @garyfleming
Problem STANDING SERVERS @garyfleming
Problem STANDING SERVERS @garyfleming
AVOID SNOWFLAKE SERVERS ▸ Hard to Reproduce ▸ Hard to
Modify ▸ Require manual processes, auditing, and docs. @garyfleming
IF IT HURTS, DO IT MORE OFTEN. @garyfleming
INFRASTRUCTURE AS CODE ▸ Chef/Puppet/Ansible ▸ Terraform ▸ Containerisation ▸
Various cloud toolkits @garyfleming
ENGINEERING PRACTICE ▸ Daily Deletion ▸ Chaos Engineering ▸ Dev
Laptop Wipes @garyfleming
CAUTION: TAKE THE UPDATES @garyfleming
Problem LANGUISHING LANGUAGES @garyfleming
Problem LANGUISHING LANGUAGES @garyfleming
@garyfleming
AVOIDING OBSOLESCENCE ▸ Move to new versions, ▸ Cautiously embrace
new languages, ▸ Design language agnostic APIs @garyfleming
DESTROY YOUR MICROSERVICES @garyfleming
Problem PEOPLE COME AND GO. @garyfleming
Problem PEOPLE COME AND GO. @garyfleming
IF IT HURTS, DO IT MORE OFTEN. @garyfleming
People Prepping RETROS @garyfleming
People Prepping DOMAIN KNOWLEDGE ▸ User Story Maps ▸ Example
mapping @garyfleming
People Prepping STAFF LIQUIDITY MATRICES @garyfleming
@garyfleming
People Prepping BIGGER CHANGES @garyfleming
EVERYTHING IS ROTTING... @garyfleming
...YOU CAN GET BETTER @garyfleming
THANK YOU @GARYFLEMING @garyfleming