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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
680
OpenShiftでllm-dを動かそう!
jpishikawa
0
100
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.8k
配列に見る bash と zsh の違い
kazzpapa3
1
140
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
170
MCPでつなぐElasticsearchとLLM - 深夜の障害対応を楽にしたい / Bridging Elasticsearch and LLMs with MCP
sashimimochi
0
160
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
920
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.3k
Cosmos World Foundation Model Platform for Physical AI
takmin
0
850
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
5.2k
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
150
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
430
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
Visualization
eitanlees
150
17k
Prompt Engineering for Job Search
mfonobong
0
160
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Practical Orchestrator
shlominoach
191
11k
GraphQLとの向き合い方2022年版
quramy
50
14k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
53
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
[SF Ruby Conf 2025] Rails X
palkan
1
750
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
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