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
The Perils Of Software Engineering
Search
Andrew Godwin
June 19, 2015
Programming
0
140
The Perils Of Software Engineering
My keynote from PyCon SG 2015.
Andrew Godwin
June 19, 2015
Tweet
Share
More Decks by Andrew Godwin
See All by Andrew Godwin
Reconciling Everything
andrewgodwin
1
260
Django Through The Years
andrewgodwin
0
160
Writing Maintainable Software At Scale
andrewgodwin
0
400
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
310
Async, Python, and the Future
andrewgodwin
2
610
How To Break Django: With Async
andrewgodwin
1
670
Taking Django's ORM Async
andrewgodwin
0
680
The Long Road To Asynchrony
andrewgodwin
0
590
The Scientist & The Engineer
andrewgodwin
1
700
Other Decks in Programming
See All in Programming
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
300
.NETでOBS Studio操作してみたけど…… / Operating OBS Studio by .NET
skasweb
0
120
Flatt Security XSS Challenge 解答・解説
flatt_security
0
710
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
8
1.9k
선언형 UI에서의 상태관리
l2hyunwoo
0
270
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
180
はてなにおけるfujiwara-wareの活用やecspressoのCI/CD構成 / Fujiwara Tech Conference 2025
cohalz
2
2.5k
AIレシート読み取り機能をRuby on Rails on AWSで実現するLLMにまつわるアレコレ / AI-based receipt reading function powered by LLM on Ruby on Rails on AWS
moznion
3
120
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
290
VisionProで部屋の明るさを反映させるシェーダーを作った話
segur
0
100
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
280
chibiccをCILに移植した結果 (NGK2025S版)
kekyo
PRO
0
110
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
460
33k
How GitHub (no longer) Works
holman
312
140k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
98
18k
Typedesign – Prime Four
hannesfritz
40
2.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Transcript
Andrew Godwin @andrewgodwin PERILS OF THE SOFTWARE ENGINEERING
Andrew Godwin Hi, I'm Django Core Developer Senior Engineer at
Far too many hobbies
"Perils"
Computer Science ≠ Software Engineering
Engineering Mechanical Civil Software Chemical Materials
Mechanical Engineering https://www.flickr.com/photos/mariaeklind/
Nondeterministic
Cost of Entry
Civil Engineering
Timescales
Cost of Failure
Aerospace Software Engineering
Cost of Failure
Failure: When, not if
Margaret Hamilton, 1969
Apollo 11 LM, "Eagle"
Web/App Software Engineering
Quick to build and test
Minimal equipment costs
Well-paid
Well-paid
Explicit is better than Implicit
Code Indirection
class MyView(View): def get(self, request): return self.render(request, "template.html")
class MyView(FormView, AuditMixin, OtherMixin): def get(self, request): return self.render(request, "template.html")
class AuditMixin(BaseAuditor, AdditionalStuff): ... class OtherMixin(MyObject, SomethingElse): ...
Async Uncertainty
def async_handler(): with open("my_file.txt", "r") as fh: write_socket(1, fh.read()) redis.incr("key1",
2)
Schemas
{ "id": 342, "name": "David", "weight": 74, } { "id":
342, "name": "Ellie", "weight": "85kg", } { "id": 342, "nom": "Frankie", "weight": 77, } { "id": 342, "name": "Frankie", "weight": -67, }
Clever code is bad Maintainable code is good
xs = [number for inner in nested if len(inner) >
2 for number in inner]
for inner in nested: if len(inner) > 2: for number
in inner: xs.append(number)
Explore and Discard
There is no perfect solution
Throwing everything away rarely works
Backwards compatability is your friend
Nobody is a genius; we're all mediocre
Argue over code, not over ideas
Well-paid
10 years? 100 years? 1000 years?
Who will access it?
What format will it be?
Is it even important?
Over thousands of years, the machine memories have been filled
with programs that can help “ “ A Deepness In The Sky Vernor Vinge
Engineering is collaborative
Build well.
Thanks. Andrew Godwin @andrewgodwin