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
Software Is A Mess And I Feel Fine
Search
Alan Stevens
October 09, 2015
Technology
95
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Software Is A Mess And I Feel Fine
Alan Stevens
October 09, 2015
More Decks by Alan Stevens
See All by Alan Stevens
Values Drive Development
alanstevens
1
180
My Prayer As I Leave You
alanstevens
1
120
Distributed Version Control: A Guide For the Perplexed
alanstevens
1
140
My Creed
alanstevens
0
97
Leveling Up: Assuming Technical Leadership
alanstevens
0
290
Seven Lessons in Personal Marketing I Learned From Pickup Artists
alanstevens
0
1.3k
Manage Complexity With Agility
alanstevens
3
310
Better Is The Only Way Forward
alanstevens
1
130
Does your code tell a story?
alanstevens
2
310
Other Decks in Technology
See All in Technology
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
190
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
3
990
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
620
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
110
動画配信アプリでの Engage SDK 導入 — TVer Android が Play ストアにコンテンツを届けるまで
techtver
PRO
0
140
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/6 - 2026/8
oracle4engineer
PRO
0
120
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
170
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
7
7.4k
module Synths; end
asonas
1
120
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
120
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
300
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
0
140
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
340
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
AI: The stuff that nobody shows you
jnunemaker
PRO
9
980
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
Facilitating Awesome Meetings
lara
57
7.1k
Accessibility Awareness
sabderemane
1
200
Bash Introduction
62gerente
615
220k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.5k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Done Done
chrislema
186
16k
Transcript
Software Is A Mess And I Feel Fine H. Alan
Stevens
Beauty is the ultimate defense against complexity. David Gelernter
The vast majority of production code is a mess.
The production code that is not a mess is akin
to a statistical anomaly or a rounding error.
Messy code is: Code that is difficult to change in
unexpected ways
Clean code is: Code that can change in unexpected ways
with minimal effort
Technical Debt?
There is no such thing as legacy code.
There are two kinds of code: 0. Production Code 1.
Abandoned Code
Successful software: 0. Delights Users 1. Makes money
Building the right thing matters more than building it right.
It doesn’t matter how well you build the wrong thing.
BACKGROUND
All Projects 1 mess 2 mess 3 mess 4 clean
5 mess 6 clean 7 mess 8 mess 9 mess 10 clean 11 mess 12 clean 13 clean 14 mess 15 clean 16 mess 17 clean 18 mess 19 mess 20 mess 21 clean 22 mess 23 clean
Messy Projects vs. CleanProjects 61% 39%
1 mess existing 2 mess existing 3 mess existing 4
clean new 5 mess existing 6 clean new 7 mess existing 8 mess existing 9 mess existing 10 clean new 11 mess existing 12 clean new 13 clean new 14 mess existing 15 clean new 16 mess existing 17 clean new 18 mess existing 19 mess existing 20 mess existing 21 clean new 22 mess existing 23 clean new All Projects With Status
Existing projects that were a mess. 100%
Most production code is a mess.
Messy code is the rule, not the exception
Code is a mess and I feel fine.
CAUSES
Messy code is a failure of design.
Where should this code go?
Failure to ask this question leads directly to a mess.
Don’t Repeat Yourself & Separation of Concerns
Separation of Concerns
None
None
D RY Don’t Repeat Yourself
See it once: do it See it twice: notice it
See it a third time: Abstract It! The Rule of Three
Is the descent into a mess inevitable?
Good enough?
Skill is not enough.
Lack of skill is no crime.
Compassion
COPING
When you find yourself stuck in a hole, stop digging.
Embrace the suck!
Don’t rewrite anything, at least not yet.
Things You Should Never Do Part I bit.ly/1dhQr8g
Compromise?
Compromise is not capitulation. Chris Christie
Optimalist
Our goal is progress, not perfection.
The Boy Scout Principle: Leave things better than you found
them.
Rabbit Hunting
That way lies madness.
CORRECTION
Gartner Hype Cycle Source: Jeremy Kemp
The real goal of the methodologies is to sell books,
not to actually solve anybody's problem. Joel Spolsky
Crazy pills!
“You’re process is batshit insane!”
Squeeze the code!
1. Shorten the release cycle
2. Continuous Integration
3. Pair Programming
4. Unit Testing
Go rogue!
CONCLUSION
You’re code is a mess. So is mine. So what?
Mastery is not the goal. Mastery is the process.
Messy code is a failure of design.
Beauty is the ultimate defense against complexity. David Gelernter