-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplaybook-in-practice.html
More file actions
826 lines (718 loc) · 32 KB
/
playbook-in-practice.html
File metadata and controls
826 lines (718 loc) · 32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Playbook in Practice</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
background: #fafafa;
padding: 48px 24px;
color: #1a1a1a;
line-height: 1.6;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.container {
max-width: 920px;
margin: 0 auto;
background: white;
border-radius: 8px;
box-shadow: 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.08);
padding: 64px 72px;
}
.header {
border-bottom: 1px solid #e8e8e8;
padding-bottom: 32px;
margin-bottom: 48px;
}
.header h1 {
font-size: 32px;
font-weight: 600;
color: #1a1a1a;
letter-spacing: -0.02em;
margin-bottom: 12px;
}
.header .subtitle {
font-size: 16px;
color: #6b6b6b;
font-weight: 400;
letter-spacing: -0.01em;
}
.story {
margin-bottom: 64px;
padding-bottom: 64px;
border-bottom: 1px solid #f0f0f0;
}
.story:last-child {
margin-bottom: 0;
padding-bottom: 0;
border-bottom: none;
}
.story-header {
margin-bottom: 24px;
}
.story-number {
font-size: 13px;
font-weight: 600;
color: #a0a0a0;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 12px;
}
.story-title {
font-size: 24px;
font-weight: 600;
color: #1a1a1a;
letter-spacing: -0.02em;
margin-bottom: 16px;
}
.story-section {
margin-bottom: 28px;
}
.story-section:last-child {
margin-bottom: 0;
}
.section-label {
font-size: 13px;
font-weight: 600;
color: #6b6b6b;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 12px;
}
.section-content {
font-size: 15px;
color: #4a4a4a;
line-height: 1.7;
}
.section-content p {
margin-bottom: 12px;
}
.section-content p:last-child {
margin-bottom: 0;
}
.section-content ul {
list-style: none;
padding-left: 0;
}
.section-content li {
padding: 6px 0;
padding-left: 20px;
position: relative;
}
.section-content li::before {
content: '';
position: absolute;
left: 0;
top: 14px;
width: 6px;
height: 6px;
background: #d0d0d0;
border-radius: 50%;
}
.highlight-box {
background: #fafafa;
border-left: 3px solid #1a1a1a;
padding: 20px 24px;
margin: 20px 0;
border-radius: 0 6px 6px 0;
}
.highlight-box-label {
font-size: 13px;
font-weight: 600;
color: #1a1a1a;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 8px;
}
.highlight-box-content {
font-size: 14px;
color: #4a4a4a;
line-height: 1.6;
}
.outcome-box {
background: #f0f9f4;
border: 1px solid #d4edda;
border-radius: 6px;
padding: 20px 24px;
margin: 20px 0;
}
.outcome-label {
font-size: 13px;
font-weight: 600;
color: #2d7a4f;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 12px;
}
.outcome-content {
font-size: 14px;
color: #4a4a4a;
line-height: 1.6;
}
.outcome-content ul {
list-style: none;
padding-left: 0;
}
.outcome-content li {
padding: 6px 0;
padding-left: 20px;
position: relative;
}
.outcome-content li::before {
content: '';
position: absolute;
left: 0;
top: 14px;
width: 6px;
height: 6px;
background: #2d7a4f;
border-radius: 50%;
}
.lesson-box {
background: #f9f9f9;
border: 1px solid #e8e8e8;
border-radius: 6px;
padding: 20px 24px;
margin: 20px 0;
}
.lesson-label {
font-size: 13px;
font-weight: 600;
color: #1a1a1a;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 8px;
}
.lesson-content {
font-size: 15px;
color: #1a1a1a;
line-height: 1.6;
font-weight: 500;
}
.principle-reference {
background: #fafafa;
border: 1px solid #f0f0f0;
border-radius: 6px;
padding: 16px 20px;
margin: 20px 0;
font-size: 14px;
color: #6b6b6b;
font-style: italic;
}
.application-section {
background: #f9f9f9;
border: 1px solid #e8e8e8;
border-radius: 8px;
padding: 32px;
margin-top: 48px;
}
.application-title {
font-size: 20px;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 20px;
letter-spacing: -0.02em;
}
.application-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
margin-bottom: 24px;
}
.application-card {
background: white;
border: 1px solid #e8e8e8;
border-radius: 6px;
padding: 20px;
}
.application-card-title {
font-size: 14px;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 8px;
}
.application-card-content {
font-size: 13px;
color: #6b6b6b;
line-height: 1.5;
}
.contribution-box {
background: white;
border: 1px solid #e8e8e8;
border-radius: 6px;
padding: 24px;
margin-top: 24px;
}
.contribution-title {
font-size: 16px;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 12px;
}
.contribution-content {
font-size: 14px;
color: #6b6b6b;
line-height: 1.6;
margin-bottom: 16px;
}
.contribution-steps {
list-style: none;
padding-left: 0;
}
.contribution-steps li {
padding: 8px 0;
padding-left: 24px;
position: relative;
font-size: 14px;
color: #4a4a4a;
}
.contribution-steps li::before {
content: '';
position: absolute;
left: 0;
top: 16px;
width: 18px;
height: 18px;
border: 1.5px solid #d0d0d0;
border-radius: 3px;
}
.reference-section {
margin-top: 48px;
padding-top: 32px;
border-top: 1px solid #e8e8e8;
}
.reference-link {
display: inline-block;
font-size: 14px;
color: #5a5a5a;
text-decoration: none;
padding: 8px 16px;
border: 1px solid #e0e0e0;
border-radius: 4px;
margin-right: 12px;
margin-bottom: 12px;
transition: all 0.15s ease;
}
.reference-link:hover {
background: #fafafa;
border-color: #d0d0d0;
}
@media (max-width: 768px) {
.container {
padding: 40px 32px;
}
.story-title {
font-size: 20px;
}
.application-grid {
grid-template-columns: 1fr;
}
.header h1 {
font-size: 28px;
}
}
@media print {
body {
background: white;
padding: 0;
}
.container {
box-shadow: none;
padding: 32px;
}
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>Playbook in Practice</h1>
<p class="subtitle">Real stories from Orcta Engineering. Learn from what went well and what didn't.</p>
</div>
<div class="story">
<div class="story-header">
<div class="story-number">Story One</div>
<h2 class="story-title">The Minimum Lovable Product That Launched in Two Weeks</h2>
</div>
<div class="story-section">
<div class="section-label">Context</div>
<div class="section-content">
<p>Product requested a comprehensive user dashboard with fifteen distinct features. The initial timeline was set for one month of development work. The team needed to deliver value quickly while managing scope.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What We Did</div>
<div class="section-content">
<ul>
<li>Asked the fundamental question: what is the one thing users need most?</li>
<li>Shipped just the critical metrics view in the first week</li>
<li>Gathered real user feedback on actual usage patterns</li>
<li>Added three more features in week two based on observed behavior</li>
<li>Delivered a complete, usable product on schedule</li>
</ul>
</div>
</div>
<div class="outcome-box">
<div class="outcome-label">Outcome</div>
<div class="outcome-content">
<ul>
<li>Users engaged heavily with the initial release</li>
<li>Data showed 60% of originally planned features were unnecessary</li>
<li>Saved three weeks of engineering time</li>
<li>Delivered higher-quality features informed by real usage</li>
</ul>
</div>
</div>
<div class="lesson-box">
<div class="lesson-label">Key Lesson</div>
<div class="lesson-content">
Start with why and validate with real users before building everything. Assumptions about user needs are often wrong until tested.
</div>
</div>
<div class="principle-reference">
Engineering Philosophy: Minimum Lovable Product — Build the smallest version users can love
</div>
</div>
<div class="story">
<div class="story-header">
<div class="story-number">Story Two</div>
<h2 class="story-title">The Code Review That Prevented a Critical Bug</h2>
</div>
<div class="story-section">
<div class="section-label">Context</div>
<div class="section-content">
<p>A pull request introduced payment processing functionality. All tests passed. The implementation appeared sound on first inspection. The PR was ready for approval.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What Happened</div>
<div class="section-content">
<p>During review, an engineer noticed missing error handling for network failures. They asked a simple question: what happens if the payment API times out?</p>
<p>The author realized users would be charged but orders wouldn't be recorded in our system. A critical data integrity issue that would have caused significant problems in production.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What We Did</div>
<div class="section-content">
<ul>
<li>Added retry logic with exponential backoff for transient failures</li>
<li>Implemented transaction rollback on payment confirmation failure</li>
<li>Created integration tests specifically for timeout scenarios</li>
<li>Documented the edge case for future reference</li>
</ul>
</div>
</div>
<div class="outcome-box">
<div class="outcome-label">Outcome</div>
<div class="outcome-content">
<ul>
<li>Caught a critical bug before it reached production</li>
<li>Prevented potential revenue loss and customer trust issues</li>
<li>Improved the payment system's overall reliability</li>
<li>Created reusable patterns for similar integrations</li>
</ul>
</div>
</div>
<div class="lesson-box">
<div class="lesson-label">Key Lesson</div>
<div class="lesson-content">
Code reviews aren't about finding typos. They're about protecting users and the business by thinking through edge cases together.
</div>
</div>
<div class="principle-reference">
Engineering Playbook, Section 5: Code reviews are sacred — feedback must be kind, clear, and focused on improvement
</div>
</div>
<div class="story">
<div class="story-header">
<div class="story-number">Story Three</div>
<h2 class="story-title">When We Ignored Refactor as You Go</h2>
</div>
<div class="story-section">
<div class="section-label">Context</div>
<div class="section-content">
<p>While building a new API endpoint, an engineer noticed duplicated authentication logic across five different controllers. The code worked, but the duplication was obvious.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What We Did Wrong</div>
<div class="section-content">
<p>The team decided to ship quickly with a note: we'll refactor later when we have time. The authentication code was copied one more time. Development continued.</p>
<p>Three months passed. A security vulnerability was discovered in the authentication logic. The fix needed to be applied in six different places across the codebase.</p>
</div>
</div>
<div class="highlight-box">
<div class="highlight-box-label">The Incident</div>
<div class="highlight-box-content">
Two instances of the duplicated code were missed during the fix. Production experienced a two-hour outage when those endpoints were exploited. Customer data was not compromised, but trust was shaken.
</div>
</div>
<div class="story-section">
<div class="section-label">What We Should Have Done</div>
<div class="section-content">
<p>Invested thirty minutes to extract the authentication logic into a reusable middleware component. Fixed it once, used it everywhere. The vulnerability would have required one change in one place.</p>
</div>
</div>
<div class="outcome-box">
<div class="outcome-label">Outcome</div>
<div class="outcome-content">
<ul>
<li>Two-hour production outage affecting all users</li>
<li>Emergency incident response requiring all-hands effort</li>
<li>Blameless postmortem conducted within 48 hours</li>
<li>New team agreement: refactor duplicated code immediately</li>
</ul>
</div>
</div>
<div class="lesson-box">
<div class="lesson-label">Key Lesson</div>
<div class="lesson-content">
Later usually means never. Technical debt compounds. What takes thirty minutes today costs ten times that in three months, plus the cost of the incident.
</div>
</div>
<div class="principle-reference">
Engineering Philosophy, Section 3: Refactor as you go — Don't postpone improvements
</div>
</div>
<div class="story">
<div class="story-header">
<div class="story-number">Story Four</div>
<h2 class="story-title">The Documentation That Unblocked Three Teams</h2>
</div>
<div class="story-section">
<div class="section-label">Context</div>
<div class="section-content">
<p>A new internal API for user permissions was built and deployed. No formal documentation was written. Information was shared through Slack messages and verbal explanations.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What Happened</div>
<div class="section-content">
<p>Over the next month, three different teams needed to integrate with the permissions API. Each team reached out with similar questions about authentication, endpoint structure, and error handling.</p>
<p>The original author spent over six hours answering repetitive questions in Slack DMs and ad-hoc meetings. Integration took each team longer than necessary due to missing context.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What We Did to Fix It</div>
<div class="section-content">
<p>Invested fifteen minutes writing a clear README with essential information:</p>
<ul>
<li>What the API does and why it exists</li>
<li>How to authenticate and handle tokens</li>
<li>Three common use cases with code examples</li>
<li>Known limitations and error scenarios</li>
<li>Inline code comments for complex logic</li>
</ul>
</div>
</div>
<div class="outcome-box">
<div class="outcome-label">Outcome</div>
<div class="outcome-content">
<ul>
<li>Repetitive questions stopped immediately</li>
<li>Teams integrated independently without blocking the author</li>
<li>README was referenced over forty times in two months</li>
<li>Onboarding new engineers to the system became trivial</li>
</ul>
</div>
</div>
<div class="lesson-box">
<div class="lesson-label">Key Lesson</div>
<div class="lesson-content">
Fifteen minutes of documentation saves ten hours of interruptions. Documentation is generosity to your teammates and your future self.
</div>
</div>
<div class="principle-reference">
Engineering Philosophy, Section 2: Document to scale — Documentation is an act of generosity
</div>
</div>
<div class="story">
<div class="story-header">
<div class="story-number">Story Five</div>
<h2 class="story-title">The Postmortem That Made Us Better</h2>
</div>
<div class="story-section">
<div class="section-label">Context</div>
<div class="section-content">
<p>Production database ran out of connections during peak traffic. The site went down for forty-five minutes. Users couldn't access the application. Support tickets flooded in.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What We Did</div>
<div class="section-content">
<p>Held a blameless postmortem within forty-eight hours of resolution. The team asked five whys to understand root causes:</p>
</div>
</div>
<div class="highlight-box">
<div class="highlight-box-label">Five Whys Analysis</div>
<div class="highlight-box-content">
<p><strong>Why did the database run out of connections?</strong><br>
Connection pool wasn't sized correctly for peak load.</p>
<p><strong>Why wasn't it sized correctly?</strong><br>
We didn't load test before launch.</p>
<p><strong>Why didn't we load test?</strong><br>
No documented process or checklist for pre-launch testing.</p>
<p><strong>Why no process?</strong><br>
Never formalized what everyone assumed was known.</p>
<p><strong>Why wasn't it formalized?</strong><br>
Tribal knowledge instead of written procedures.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">Actions Taken</div>
<div class="section-content">
<ul>
<li>Created comprehensive pre-launch checklist including load testing</li>
<li>Set up database connection monitoring with alerts</li>
<li>Documented runbook for connection pool issues</li>
<li>Made pre-launch checklist mandatory via PR template</li>
<li>Scheduled quarterly review of operational procedures</li>
</ul>
</div>
</div>
<div class="outcome-box">
<div class="outcome-label">Outcome</div>
<div class="outcome-content">
<ul>
<li>No similar incidents in the following six months</li>
<li>Pre-launch checklist caught two other potential issues</li>
<li>Team felt safe discussing mistakes without blame</li>
<li>Culture of learning from failure was strengthened</li>
</ul>
</div>
</div>
<div class="lesson-box">
<div class="lesson-label">Key Lesson</div>
<div class="lesson-content">
Systems fail. Humans make mistakes. How we respond to failure defines our culture. Blameless analysis and systematic improvement matter more than perfect execution.
</div>
</div>
<div class="principle-reference">
Engineering Philosophy, Section 3: Fail fast, learn faster — Mistakes are okay, cover them in postmortems
</div>
</div>
<div class="story">
<div class="story-header">
<div class="story-number">Story Six</div>
<h2 class="story-title">When Ownership Meant Heroism</h2>
</div>
<div class="story-section">
<div class="section-label">Context</div>
<div class="section-content">
<p>An engineer deployed a new feature Friday evening. At eleven PM, they received a page about a bug in production. The feature had an edge case that wasn't caught in testing.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What Happened</div>
<div class="section-content">
<p>The engineer felt personally responsible. They believed ownership meant solving it alone. They stayed up until two AM debugging and deploying a fix. The issue was resolved but the engineer was exhausted.</p>
<p>The following week, they felt burned out. Work-life balance suffered. The incident response, while successful, wasn't sustainable.</p>
</div>
</div>
<div class="story-section">
<div class="section-label">What We Should Have Done</div>
<div class="section-content">
<ul>
<li>The on-call engineer should have handled the initial response</li>
<li>If the feature author wanted to help, pair with on-call instead of solo work</li>
<li>For critical issues, wake the tech lead for support and guidance</li>
<li>Follow established incident response procedures</li>
<li>No one should feel obligated to sacrifice sleep</li>
</ul>
</div>
</div>
<div class="story-section">
<div class="section-label">What We Changed</div>
<div class="section-content">
<ul>
<li>Clarified that ownership doesn't mean martyrdom</li>
<li>Set clear on-call expectations and rotation schedules</li>
<li>Added retro question: did anyone feel unsupported this week?</li>
<li>Emphasized collaborative incident response in documentation</li>
<li>Leadership modeled asking for help publicly</li>
</ul>
</div>
</div>
<div class="outcome-box">
<div class="outcome-label">Outcome</div>
<div class="outcome-content">
<ul>
<li>Better work-life balance across the team</li>
<li>More effective collaborative incident response</li>
<li>Reduced individual stress and burnout</li>
<li>No one felt guilty for asking for help</li>
</ul>
</div>
</div>
<div class="lesson-box">
<div class="lesson-label">Key Lesson</div>
<div class="lesson-content">
Ownership means responsibility, not isolation. We own problems collectively, not individually. Sustainable engineering requires sustainable practices.
</div>
</div>
<div class="principle-reference">
Engineering Philosophy, Section 2: Ownership mentality — But we own problems collectively
</div>
</div>
<div class="application-section">
<h2 class="application-title">How to Use These Stories</h2>
<div class="application-grid">
<div class="application-card">
<div class="application-card-title">In Code Reviews</div>
<div class="application-card-content">
Reference relevant stories when providing feedback. "This reminds me of Story Two—can we add error handling here?"
</div>
</div>
<div class="application-card">
<div class="application-card-title">In Standups</div>
<div class="application-card-content">
Connect current work to past lessons. "Feels like Story Three—should we refactor now before it spreads?"
</div>
</div>
<div class="application-card">
<div class="application-card-title">In Retrospectives</div>
<div class="application-card-content">
Use stories to frame discussions. "This situation is similar to Story Four—let's document this so it doesn't happen again."
</div>
</div>
<div class="application-card">
<div class="application-card-title">In Onboarding</div>
<div class="application-card-content">
Share stories with new engineers to explain why the playbook exists and how principles apply in practice.
</div>
</div>
</div>
<div class="contribution-box">
<h3 class="contribution-title">Add Your Own Stories</h3>
<p class="contribution-content">
Saw something that reinforces or challenges our principles? Share it. These stories are our institutional knowledge.
</p>
<ol class="contribution-steps">
<li>Write it up using the format: Context, What Happened, Outcome, Key Lesson</li>
<li>Post in the engineering Slack channel for discussion</li>
<li>Submit a pull request to add it to this document</li>
<li>Share the lesson in the next team meeting</li>
</ol>
</div>
</div>
<div class="reference-section">
<h2 class="section-title">Additional Resources</h2>
<a href="engineering-philosophy.pdf" class="reference-link">Engineering Philosophy</a>
<a href="engineering-playbook.pdf" class="reference-link">Engineering Playbook</a>
<a href="incident-response-guide.pdf" class="reference-link">Incident Response Guide</a>
<a href="code-review-guidelines.pdf" class="reference-link">Code Review Guidelines</a>
</div>
</div>
</body>
</html>