A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Title One Weird Trick | |||||||||||||||||||
2 | Act 1 | |||||||||||||||||||
3 | Setting | An IDE | ||||||||||||||||||
4 | Role | A developer writing the code for a distributed system | ||||||||||||||||||
5 | Point A | Call to Action | Point B | |||||||||||||||||
6 | Distributed systems are complex because concurrency is complex, abstractions leak, and bugs are inevitable | WRITE FUCKING TESTS | Upfront design, good languages, performance and stress testing are all valuable to writing high-quality systems but testing is key and painfully overlooked | |||||||||||||||||
7 | ||||||||||||||||||||
8 | ||||||||||||||||||||
9 | Act 2 | |||||||||||||||||||
10 | Key Point (5 minutes) | Explanation (15 minutes) | Detail (45 minutes) | |||||||||||||||||
11 | The lifecycle of a piece of DS infrastructure | Design, possibly TLA+! | Formally, what are you expecting? | |||||||||||||||||
12 | Lamport | |||||||||||||||||||
13 | ||||||||||||||||||||
14 | Coding, testing, ensuring it does what you expect of it for your set of requirements | Performance testing | Giving it to users | |||||||||||||||||
15 | Stress testing | |||||||||||||||||||
16 | Human QA | |||||||||||||||||||
17 | Maintenance, growth, usage in the wild | The long tail | 80% of the cost of software is maintenance, Kay | |||||||||||||||||
18 | Bugs happen, how do you fix them? | |||||||||||||||||||
19 | Adding new features! | |||||||||||||||||||
20 | How do you think about writing tests as you're coding? | TDD | It's not about test coverage, and never was | |||||||||||||||||
21 | learning how to think, deconstruct complexity and anticipate problems | |||||||||||||||||||
22 | ||||||||||||||||||||
23 | If there's a bug, write a test before you fix it | |||||||||||||||||||
24 | ||||||||||||||||||||
25 | ||||||||||||||||||||
26 | The challenges of testing code that was written without thinking about tests | This is where those sleep statements come from | ||||||||||||||||||
27 | It's ok to leak a bit if you can get a great test out of it! | |||||||||||||||||||
28 | What to do if it's impossible | |||||||||||||||||||
29 | Examples in the wild | ZooKeeper | ||||||||||||||||||
30 | ||||||||||||||||||||
31 | ||||||||||||||||||||
32 | Other OSS | |||||||||||||||||||
33 | ||||||||||||||||||||
34 | ||||||||||||||||||||
35 | Inside of Google, etc | |||||||||||||||||||
36 | ||||||||||||||||||||
37 | ||||||||||||||||||||
38 | Act 3 | |||||||||||||||||||
39 | Point A | Call to Action | Point B | |||||||||||||||||
40 | You want to be a great developer, you want to write DSs that will stand the test of time | WRITE TESTS | Your code is a living organism, and tests are your immune system. Don't write your code in a bubble. | |||||||||||||||||
41 | ||||||||||||||||||||
42 | ||||||||||||||||||||
43 | ||||||||||||||||||||
44 | (go to File / Make a Copy to save this to your own Google Drive account) | |||||||||||||||||||
45 | ||||||||||||||||||||
46 | ||||||||||||||||||||
47 | ||||||||||||||||||||
48 | ||||||||||||||||||||
49 | ||||||||||||||||||||
50 | ||||||||||||||||||||
51 | ||||||||||||||||||||
52 | ||||||||||||||||||||
53 | ||||||||||||||||||||
54 | ||||||||||||||||||||
55 | ||||||||||||||||||||
56 | ||||||||||||||||||||
57 | ||||||||||||||||||||
58 | ||||||||||||||||||||
59 | ||||||||||||||||||||
60 | ||||||||||||||||||||
61 | ||||||||||||||||||||
62 | ||||||||||||||||||||
63 | ||||||||||||||||||||
64 | ||||||||||||||||||||
65 | ||||||||||||||||||||
66 | ||||||||||||||||||||
67 | ||||||||||||||||||||
68 | ||||||||||||||||||||
69 | ||||||||||||||||||||
70 | ||||||||||||||||||||
71 | ||||||||||||||||||||
72 | ||||||||||||||||||||
73 | ||||||||||||||||||||
74 | ||||||||||||||||||||
75 | ||||||||||||||||||||
76 | ||||||||||||||||||||
77 | ||||||||||||||||||||
78 | ||||||||||||||||||||
79 | ||||||||||||||||||||
80 | ||||||||||||||||||||
81 | ||||||||||||||||||||
82 | ||||||||||||||||||||
83 | ||||||||||||||||||||
84 | ||||||||||||||||||||
85 | ||||||||||||||||||||
86 | ||||||||||||||||||||
87 | ||||||||||||||||||||
88 | ||||||||||||||||||||
89 | ||||||||||||||||||||
90 | ||||||||||||||||||||
91 | ||||||||||||||||||||
92 | ||||||||||||||||||||
93 | ||||||||||||||||||||
94 | ||||||||||||||||||||
95 | ||||||||||||||||||||
96 | ||||||||||||||||||||
97 | ||||||||||||||||||||
98 | ||||||||||||||||||||
99 | ||||||||||||||||||||
100 |