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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Alan Stevens
October 09, 2015
Technology
92
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
130
My Creed
alanstevens
0
96
Leveling Up: Assuming Technical Leadership
alanstevens
0
280
Seven Lessons in Personal Marketing I Learned From Pickup Artists
alanstevens
0
1.2k
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のゲート化と地政学リスク
nagatsu
0
110
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
190
やさしいA2A入門
minorun365
PRO
11
1.7k
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
240
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
380
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
9.7k
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
370
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
200
Agentic ERPをどう設計するか ー 受発注エージェントを動かす、現場の知見と設計思想ー
recerqainc
1
2.2k
protovalidate-es を導入してみた
bengo4com
0
170
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
900
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
380
Building Applications with DynamoDB
mza
96
7.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
390
Utilizing Notion as your number one productivity tool
mfonobong
4
320
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
580
Paper Plane (Part 1)
katiecoart
PRO
0
8.8k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
RailsConf 2023
tenderlove
30
1.5k
Visualization
eitanlees
152
17k
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