Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Software Is A Mess And I Feel Fine
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Alan Stevens
October 09, 2015
Technology
96
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
99
Leveling Up: Assuming Technical Leadership
alanstevens
0
300
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
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
190
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
510
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
140
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
180
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
270
GitHub Agentic Workflows を触ってみる
htkym
2
920
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
770
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
190
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
580
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
140
プラットフォームを「作る」、 チームに「入り込む」
sansantech
PRO
0
630
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
560
Featured
See All Featured
Paper Plane
katiecoart
PRO
4
53k
RailsConf 2023
tenderlove
30
1.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Making Projects Easy
brettharned
120
6.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
GitHub's CSS Performance
jonrohan
1033
470k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
430
Claude Code のすすめ
schroneko
67
230k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Tell your own story through comics
letsgokoyo
1
1.1k
Between Models and Reality
mayunak
4
480
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