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
81
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Agile Design
Requirements change and softwares rot.
We can write code more resilient to changes.
Rick Liu
March 25, 2016
More Decks by Rick Liu
See All by Rick Liu
Functional Programming Concepts
rickliu
0
230
You Don't Need a JavaScript Framework
rickliu
0
130
Safe Navigation in Ruby 2.3
rickliu
0
71
Active Job in Rails 4.2
rickliu
0
63
Other Decks in Technology
See All in Technology
AI駆動開発におけるQAエンジニアの役割事例 〜AI駆動開発の現場から〜
kobayashiyorimitsu
0
290
知見・人・API・DB・予算 ─ ナイナイ尽くしだった人事データ整備 with dbt、5年間の学び
ken6377
1
140
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
330
ループエンジニアリングでE2Eテストを実践
noriyukitakei
0
240
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.3k
AIエージェントとPhysical AIが拓く製造業の変革(ハノーバーメッセリキャップ)
iotcomjpadmin
0
210
技術・能力を向上する原理原則 #きのこセッションa #きのこ2026
bash0c7
0
200
はてなのサービス基盤を支える Kubernetes《足腰》
masayoshimaezawa
0
430
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
1
690
CVE-2026-20833_脆弱性対応とAES 化について
jukishiya
0
350
スタートアップにおけるアジャイルの実践について #shibuyagile
murabayashi
3
2k
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
1
460
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
The World Runs on Bad Software
bkeepers
PRO
72
12k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
A designer walks into a library…
pauljervisheath
211
24k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Thoughts on Productivity
jonyablonski
76
5.2k
We Have a Design System, Now What?
morganepeng
55
8.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