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
What can programmers learn from pilots?
Search
Andrew Godwin
April 10, 2015
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
What can programmers learn from pilots?
A talk I gave at PyCon US 2015
Andrew Godwin
April 10, 2015
Transcript
40 slides
Andrew Godwin @andrewgodwin Programmers LEARN FROM WHAT CAN Pilots?
Andrew Godwin Hi, I'm Author of 1.7 Django & South
migrations Senior Software Engineer at Really likes cheese FAA & EASA PPL, working on IR
flickr.com/photos/russss/16735398019/
Learning about aviation Applying lessons to coding 1 2
Commercial flying is very safe AIRLINES GA 0.2 11.2 CARS/TRUCKS
0.53 MOTORCYCLES 15.6 Source: 2005 Nall report, 2004 NHTSA stats, 1991-2000 FAA stats, 40mph avg. road speed (fatal accidents per million hours) General aviation is still not bad
Pilot Source: 2005 Nall report Mechanical Other 76% 16% 9%
GA ACCIDENT CAUSES
COMMON CAUSES Controlled flight into terrain (CFIT) Disorientation in clouds
(VFR in IMC) Bad decision making (get-there-itis)
WHY DO I KNOW THIS? Detailed investigation of every accident
HOW DOES IT HELP US? Let's look at common problems
Soft Failure Explicit disengage signals Covering inaccurate instruments Replacing parts
at first sign of issues
Soft Failure Crash hard on any serious error Redundancy, not
single system reliability Freedom to get rid of servers whenever
Noisy Warnings Limited number of warning sounds Clear, unambiguous text
& speech No constant low-level warnings
Noisy Warnings Don't email/notify on every tiny error Choose 5
top errors, solve them first If you ignore it for a week, delete the warning
Poor Testing Every part tested to destruction Well known statistical
limits Knowing when, not if, things fail
Image: © Boeing 2010
Poor Testing Test latency, memory issues, dodgy network and other
unusual things Interactions are as important as individual units
Automation Reliance Tested without autopilot/instruments Plane usually advises, rarely controls
Easy to see what's happening and why
flickr.com/photos/wkharmon/4631001766
Automation Reliance Don't rely on magical automatic failover Regularly practice
manual recovery steps Know what your systems are doing
People Reliance Checklists for everything Warnings built around common assumptions
Reduce workload at critical times
None
People Reliance Checklists for releases/testing/onboarding Automate common tasks Reduce workload
at critical times
Bad Priorities Aviate, Navigate, Communicate Minimum Equipment Lists Mayday priority
Minimum Equipment Quiz Passenger video screens Lavatory ashtrays Air conditioning
Fuel recepticle caps Seatbelt signs Weather radar
Minimum Equipment Quiz Passenger video screens Lavatory ashtrays Air conditioning
Fuel recepticle caps Seatbelt signs Weather radar
Margaret Hamilton
Bad Priorities What are your critical features? What can you
do without? Know what you want to fix first and test most
Unclear Responsibility Single person always in command Others are always
listened to Clear, concise communication
Unclear Responsibility Single person makes key decisions Others are always
listened to Clear specifications and expectations
Blame Culture There is never a single cause of an
accident Individual problems identified and addressed Blaming someone solves nothing
Blame Culture There is never a single cause of a
problem Work back and find all of the bad factors Blaming people makes things worse
Deadlines Always carry extra fuel Always have an alternate Land
safely rather than at the destination
Deadlines Don't schedule everyone at maximum Always expect unknown problems
Ship good code rather than to a deadline
Takeaways
Checklists First step before automation
Filter unimportant errors Keep ignoring it? It's not important.
Pick your key features Don't worry about breaking minor stuff
Reward good decisions It's often not the people staying late
Ops are like pilots Boredom punctuated by moments of terror
Thanks. Andrew Godwin @andrewgodwin eventbrite.com/jobs
More Decks by Andrew Godwin
See All by Andrew Godwin
Working With Risk: Lessons From Mountain Rescue
andrewgodwin
1
35
Reconciling Everything
andrewgodwin
1
430
Django Through The Years
andrewgodwin
0
350
Writing Maintainable Software At Scale
andrewgodwin
0
560
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
450
Async, Python, and the Future
andrewgodwin
2
770
How To Break Django: With Async
andrewgodwin
1
860
Taking Django's ORM Async
andrewgodwin
0
890
The Long Road To Asynchrony
andrewgodwin
0
790
Other Decks in Programming
See All in Programming
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
350
Growing PicoRuby's Ecosystem on ESP32
yuuu
2
120
AI-Powered Domain-Driven Design
ziobrando
0
440
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.2k
protojson における文字化けの扱い
kazuki1023
0
400
はじめてのPLATEAU
nokonoko1203
1
640
LLM 101
dalinaum
0
480
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
980
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
330
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
630
小さなアプリを作って公開するまで
onozaty
0
170
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
143
7.9k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
70
69k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
610
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
620
Context Engineering - Making Every Token Count
addyosmani
9
1.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Building Adaptive Systems
keathley
44
3.3k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
520
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
980
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
830