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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
生成AI時代にこそ求められるSRE / SRE for Gen AI era
ymotongpoo
5
3.1k
Azure Durable Functions で作った NL2SQL Agent の精度向上に取り組んだ話/jat08
thara0402
0
180
Context Engineeringの取り組み
nutslove
0
340
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
210
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
590
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
140
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
130
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
140
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
190
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
110
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
220
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
700
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
64
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
99
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
300
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
730
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.6k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The SEO Collaboration Effect
kristinabergwall1
0
350
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
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