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
320
Django Through The Years
andrewgodwin
0
210
Writing Maintainable Software At Scale
andrewgodwin
0
440
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
360
Async, Python, and the Future
andrewgodwin
2
670
How To Break Django: With Async
andrewgodwin
1
730
Taking Django's ORM Async
andrewgodwin
0
730
The Long Road To Asynchrony
andrewgodwin
0
660
The Scientist & The Engineer
andrewgodwin
1
770
Other Decks in Programming
See All in Programming
物語を動かす行動"量" #エンジニアニメ
konifar
12
3k
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
0
190
0から始めるモジュラーモノリス-クリーンなモノリスを目指して
sushi0120
0
250
大規模FlutterプロジェクトのCI実行時間を約8割削減した話
teamlab
PRO
0
450
一人でAIプロダクトを作るための工夫 〜技術選定・開発プロセス編〜 / I want AI to work harder
rkaga
6
980
JetBrainsのAI機能の紹介 #jjug
yusuke
0
190
なぜあなたのオブザーバビリティ導入は頓挫するのか
ryota_hnk
5
570
中級グラフィックス入門~効率的なメッシュレット描画~
projectasura
4
2.5k
実践 Dev Containers × Claude Code
touyu
1
140
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
230
202507_ADKで始めるエージェント開発の基本 〜デモを通じて紹介〜(奥田りさ)The Basics of Agent Development with ADK — A Demo-Focused Introduction
risatube
PRO
6
1.4k
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
41
16k
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
How to Ace a Technical Interview
jacobian
278
23k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
Adopting Sorbet at Scale
ufuk
77
9.5k
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Code Reviewing Like a Champion
maltzj
524
40k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
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