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
130
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
230
Django Through The Years
andrewgodwin
0
110
Writing Maintainable Software At Scale
andrewgodwin
0
350
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
270
Async, Python, and the Future
andrewgodwin
2
560
How To Break Django: With Async
andrewgodwin
1
610
Taking Django's ORM Async
andrewgodwin
0
620
The Long Road To Asynchrony
andrewgodwin
0
540
The Scientist & The Engineer
andrewgodwin
1
630
Other Decks in Programming
See All in Programming
社内 LT 会を発足し、アウトプット文化を醸成させるために考えたこと・やったこと / Starting internal LT meetings and fostering an output culture
mackey0225
3
120
CSC307 Lecture 10
javiergs
PRO
0
310
Android開発者のための Kotlin Multiplatform入門
ntaro
0
190
Async Await: Mastering Python's Time-Bending Tricks - EuroPython2024
yanbo
1
290
12年前の『型システム入門』翻訳の思い出話
mame
11
1.2k
Composing an API the *right* way (Droidcon Berlin 2024)
zsmb
1
450
スクラムマスターって孤独じゃないですか?
yoshitaroyoyo
1
140
小さな開発会社を作った理由
polidog
0
1.9k
今こそ始める、CDKコンストラクトライブラリ開発 ― 入門から実践まで
tmokmss
1
930
[After Kotlin Fest 2024 LT Night @ Sansan] もっともっとKotlinを好きになる!K2 Compiler Pluginで遊んでみよう!
kitakkun
2
260
初心者がおさえておきたいAWS CDKのベストプラクティス 2024
konokenj
15
7.3k
MIERUNE BBQにおけるユーザー中心設計()
mierune
PRO
1
110
Featured
See All Featured
BBQ
matthewcrist
82
9k
How to Think Like a Performance Engineer
csswizardry
4
590
The Invisible Customer
myddelton
117
13k
From Idea to $5000 a Month in 5 Months
shpigford
377
46k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
78
15k
Making the Leap to Tech Lead
cromwellryan
127
8.7k
4 Signs Your Business is Dying
shpigford
178
21k
GitHub's CSS Performance
jonrohan
1026
450k
The World Runs on Bad Software
bkeepers
PRO
63
11k
5 minutes of I Can Smell Your CMS
philhawksworth
200
19k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
Infographics Made Easy
chrislema
238
18k
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