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
Agile Design
Search
Rick Liu
March 25, 2016
Technology
0
78
Agile Design
Requirements change and softwares rot.
We can write code more resilient to changes.
Rick Liu
March 25, 2016
Tweet
Share
More Decks by Rick Liu
See All by Rick Liu
Functional Programming Concepts
rickliu
0
220
You Don't Need a JavaScript Framework
rickliu
0
130
Safe Navigation in Ruby 2.3
rickliu
0
62
Active Job in Rails 4.2
rickliu
0
57
Other Decks in Technology
See All in Technology
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
0
870
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.1k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
210
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
530
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
230
20260204_Midosuji_Tech
takuyay0ne
1
140
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
Agile Leadership Summit Keynote 2026
m_seki
1
570
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
370
Digitization部 紹介資料
sansan33
PRO
1
6.8k
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
200
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
820
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
49
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
51
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Accessibility Awareness
sabderemane
0
51
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
[SF Ruby Conf 2025] Rails X
palkan
1
740
Documentation Writing (for coders)
carmenintech
77
5.2k
Transcript
Agile Design
Softwares rot • Difficult to change • Fragile • Dependencies
• Needless Complexity • Needless Repetition • Difficult to understand
The COPY Program
Requirements Write a program that copies characters from the keyboard
to the printer.
The initial design Copy Read Keyboard Write Printer char char
Version 1 of Copy program 1 def copy 2 while
c = Keyboard.read do 3 Printer.write(c) 4 end 5 end
Change requirements The Copy program should also be able to
read from paper tape reader.
First modification of Copy program 1 pt_flag = false 2
3 def copy 4 while c = (pt_flag ? PaperTape.read : Keyboard.read) do 5 Printer.write(c) 6 end 7 end
Give ‘em an inch The customers would sometimes like the
Copy program to output to the paper tape punch.
Second modification of Copy program 1 pt_flag = false 2
punch_flag = false 3 4 def copy 5 while c = (pt_flag ? PaperTape.read : Keyboard.read) do 6 punch_flag ? Punch.write(c) : Printer.write(c) 7 end 8 end
Responding to change 1 class KeyboardReader 2 def read 3
Keyboard.read 4 end 5 end 6 7 8 def copy(reader=DefaultReader) 9 while c = reader.read do 10 Printer.write(c) 11 end 12 end
Agile Design A process, not an event Continuous improvement Principles,
patterns, practices Keeping the design clean
Books • Agile Software Development, Principles, Patterns, and Practices, by
Robert C. Martin • Working Effectively with Legacy Code, by Michael Feathers