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
310
Django Through The Years
andrewgodwin
0
200
Writing Maintainable Software At Scale
andrewgodwin
0
430
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
350
Async, Python, and the Future
andrewgodwin
2
650
How To Break Django: With Async
andrewgodwin
1
720
Taking Django's ORM Async
andrewgodwin
0
720
The Long Road To Asynchrony
andrewgodwin
0
650
The Scientist & The Engineer
andrewgodwin
1
750
Other Decks in Programming
See All in Programming
Javaに鉄道指向プログラミング (Railway Oriented Pro gramming) のエッセンスを取り入れる/Bringing the Essence of Railway-Oriented Programming to Java
cocet33000
2
520
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
200
SODA - FACT BOOK
sodainc
1
780
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
330
複数アプリケーションを育てていくための共通化戦略
irof
10
3.7k
try-catchを使わないエラーハンドリング!? PHPでResult型の考え方を取り入れてみよう
kajitack
3
490
Gleamという選択肢
comamoca
6
670
Perlで痩せる
yuukis
1
680
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'"
philipschwarz
PRO
0
180
事業戦略を理解してソフトウェアを設計する
masuda220
PRO
21
5.8k
從零到一:搭建你的第一個 Observability 平台
blueswen
1
810
社内での開発コミュニティ活動とモジュラーモノリス標準化事例のご紹介/xPalette and Introduction of Modular monolith standardization
m4maruyama
0
110
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Optimizing for Happiness
mojombo
379
70k
Designing Experiences People Love
moore
142
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
180
53k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Git: the NoSQL Database
bkeepers
PRO
430
65k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
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