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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
garyfleming
August 22, 2019
Programming
0
880
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
99
beyond-frameworks.pdf
garyfleming
1
46
The Board Whisperer
garyfleming
0
1.2k
APIs on the Scale of Decades
garyfleming
0
130
Other Decks in Programming
See All in Programming
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
130
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
160
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
570
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
630
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
180
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
160
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1.2k
OTP を自動で入力する裏技
megabitsenmzq
0
130
Smarter Angular mit Transformers.js & Prompt API
christianliebel
PRO
1
100
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
1.4k
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
1.5k
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
4.7k
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.6k
Color Theory Basics | Prateek | Gurzu
gurzu
0
270
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
Designing Experiences People Love
moore
143
24k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Code Reviewing Like a Champion
maltzj
528
40k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Test your architecture with Archunit
thirion
1
2.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
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