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
I am bad at my job.
Search
Matt Robenolt
September 28, 2017
Technology
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
I am bad at my job.
App Academy - September 28th 2017
Matt Robenolt
September 28, 2017
More Decks by Matt Robenolt
See All by Matt Robenolt
Everything is broken and I don't know why.
mattrobenolt
0
44
Everything is broken, and I don't know why. Python edition.
mattrobenolt
1
240
Everything is broken, and I don't know why. Python edition.
mattrobenolt
2
640
Varnish: How We Do It
mattrobenolt
1
240
Everything is broken, and I don't know why.
mattrobenolt
7
1.6k
Cheating Your Way to Webscale
mattrobenolt
13
1.4k
HTTP for Great Good
mattrobenolt
85
200k
Caching is Hard: Varnish @ Disqus
mattrobenolt
52
2.1M
Developing & Deploying "Large" Scale Web Applications
mattrobenolt
25
1.3k
Other Decks in Technology
See All in Technology
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
250
kaonavi Tech Night#1
kaonavi
0
110
発表と総括 / Presentations and Summary
ks91
PRO
0
140
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
480
タスクの複雑さでモデルを選ぶ ── Thompson Samplingで動かす“トークン/コスト最適化
satohy0323
0
570
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
430
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
570
Network Firewallやっていき!
news_it_enj
0
170
GoでCコンパイラを作った話
repunit
0
130
公式ドキュメントの歩き方etc
coco_se
1
120
DatabricksにおけるMCPソリューション
taka_aki
1
280
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
A Soul's Torment
seathinner
6
3.1k
The Limits of Empathy - UXLibs8
cassininazir
1
510
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Fireside Chat
paigeccino
42
4k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Deep Space Network (abreviated)
tonyrice
0
230
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Transcript
I am bad at my job. App Academy September 28th
2017 Matt Robenolt Matt
hello @mattrobenolt
Principal Software Engineer
This computer stuff is really hard.
None
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; }
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } $ ./program
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } $ ./program 10 20 619512036
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } $ ./program 10 20 619512036 $ ./program 10 20 369033241
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 0x0004 4 bytes 0x0008 0x000C 0xFFFF
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 0x0004 4 bytes 0x0008 0x000C 0xFFFF 0x0000 (0)
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 0x0004 4 bytes 0x0008 0x000C 0xFFFF 0x000A (10) 0x0014 (20) 0x0000 (0)
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 4 bytes 0x0008 0x000C 0xFFFF 0x000A (10) 0x0014 (20) 0x0000 (0) 0x0004
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 4 bytes 0x0008 0x000C 0xFFFF 0x000A (10) 0x0014 (20) 0x0000 (0) 0x0004 “address of things” + (i * sizeof(int))
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 4 bytes 0x0008 0x000C 0xFFFF 0x000A (10) 0x0014 (20) 0x0000 (0) 0x0004 0x0004 + (0 * 4) == 0x0004 &0x0004 == 0x000A (10)
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 4 bytes 0x0008 0x000C 0xFFFF 0x000A (10) 0x0014 (20) 0x0001 (1) 0x0004
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 4 bytes 0x0008 0x000C 0xFFFF 0x000A (10) 0x0014 (20) 0x0001 (1) 0x0004 0x0004 + (1 * 4) == 0x0008 &0x0008 == 0x0014 (20)
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 4 bytes 0x0008 0x000C 0xFFFF 0x000A (10) 0x0014 (20) 0x0002 (2) 0x0004
#include <stdio.h> int main() { int i = 0; int
things[] = {10, 20}; for (; i < 3; i++) { printf("%d\n", things[i]); } return 0; } Physical Memory Chip 0x0000 4 bytes 0x0008 0x000C 0xFFFF 0x000A (10) 0x0014 (20) 0x0002 (2) 0x0004 0x0004 + (2 * 4) == 0x000C &0x000C == ???? ????
JavaScript is especially hard.
sentry $ find node_modules -type f | wc -l 36882
sentry $ du -hs node_modules 308M node_modules
function multiply() { var rv = 1; for (var i
= 0; i < arguments.length; i++) rv += arguments[i]; return rv; } > multiply(2, 2) <- 4
test('multiply 2 * 2 to equal 4', () => {
expect(multiply(2, 2)).toBe(4); }); 100% test coverage btw
> multiply(2, 2) <- 4
> multiply(2, 2) <- 4 > multiply() <- 1
> multiply(2, 2) <- 4 > multiply() <- 1 >
multiply(1, 1) <- 3
> multiply(2, 2) <- 4 > multiply() <- 1 >
multiply(1, 1) <- 3 > multiply(1, {}) <- "2[object Object]"
Shipping code is the worst.
window.Notification.requestPermission().then(function() { new Notification("I see you."); });
Yas, I did it!
I think my computer is broken.
Step 1:
Step 1: Acceptance
This is hard. But that’s ok.
Step 2:
Step 2: Self-awareness
You won’t know everything. You will make mistakes. But that’s
OK.
Step 3:
Step 3: Do your best
Learn from mistakes. assume the worst.
How to deal with production.
Bug-free code is very rare.
Respond quickly when things are broken.
Monitoring is good.
Meet Sentry.
Error reporting
window.Notification.requestPermission().then(function() { new Notification("I see you."); });
None
None
Context is good.
Questions? I may or may not have answers. @mattrobenolt github.com/mattrobenolt
sentry.io github.com/getsentry/sentry