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
93
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
300
Better Is The Only Way Forward
alanstevens
1
120
Does your code tell a story?
alanstevens
2
300
Other Decks in Technology
See All in Technology
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
340
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
2
430
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
270
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
0
240
FDEの心得
noriakioji
5
6.1k
MulticaとPi Coding Agentで、小規模OSSを30本同時運用した流れ
eiei114
0
130
MIRU 2026 チュートリアル
keisuke198619
0
960
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
6k
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.4k
ラジオの科学
frievea
0
330
システム思考で問題に対処する
yussak
0
310
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.2k
The untapped power of vector embeddings
frankvandijk
2
1.8k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Unsuck your backbone
ammeep
672
58k
Designing for humans not robots
tammielis
254
26k
What's in a price? How to price your products and services
michaelherold
247
13k
Raft: Consensus for Rubyists
vanstee
141
7.6k
HDC tutorial
michielstock
2
790
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
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