Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
The Perils Of Software Engineering
Andrew Godwin
June 19, 2015
Programming
0
110
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
A Newcomer's Guide To Airflow's Architecture
andrewgodwin
0
87
Async, Python, and the Future
andrewgodwin
1
360
How To Break Django: With Async
andrewgodwin
1
280
Taking Django's ORM Async
andrewgodwin
0
330
The Long Road To Asynchrony
andrewgodwin
0
380
The Scientist & The Engineer
andrewgodwin
1
370
Pioneering Real-Time
andrewgodwin
0
150
Just Add Await: Retrofitting Async Into Django
andrewgodwin
2
1.1k
Terrain, Art, Python and LiDAR
andrewgodwin
1
230
Other Decks in Programming
See All in Programming
競プロへの誘 -いざな-
u76ner
0
330
From Java 11 to 17 and beyond
josepaumard
0
290
Explore Java 17 and beyond
josepaumard
3
630
Micro Frontends with Module Federation: Beyond the Basics @jax2022
manfredsteyer
PRO
0
280
質とスピード(2022春版、質疑応答用資料付き) / Quality and Speed 2022 Spring Edition
twada
PRO
27
17k
Loom is Blooming
josepaumard
3
520
Milestoner
bkuhlmann
1
200
Testing, how hard can it be? (Droidcon Lisbon 2022)
dpreussler
3
200
확장 가능한 테라폼 코드 관리 (Scalable Terraform Code Management)
posquit0
1
310
Becoming an Android Librarian
skydoves
3
420
TechFeed Conference 2022 - Kotlin Experimental
jmatsu
0
560
A technique to implement DSL in Ruby
okuramasafumi
0
530
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
343
17k
Imperfection Machines: The Place of Print at Facebook
scottboms
253
11k
The Power of CSS Pseudo Elements
geoffreycrofte
46
3.9k
Debugging Ruby Performance
tmm1
65
10k
Producing Creativity
orderedlist
PRO
333
37k
The Invisible Side of Design
smashingmag
289
48k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
103
16k
Put a Button on it: Removing Barriers to Going Fast.
kastner
56
2.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
WebSockets: Embracing the real-time Web
robhawkes
57
5k
Documentation Writing (for coders)
carmenhchung
48
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