how culture can improve engineering velocity, efficiency ... · bootcamp • “commit code on...
TRANSCRIPT
![Page 1: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/1.jpg)
How culture can improve engineering velocity, efficiency, and quality
David Mercurio
Stripe - Payments Infrastructure Snapchat - Memories Backend
Facebook - Infrastructure, Platform, Personalized Videos
![Page 2: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/2.jpg)
Efficiency is LeverageGetting a lot done with a little
![Page 3: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/3.jpg)
![Page 4: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/4.jpg)
![Page 5: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/5.jpg)
![Page 6: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/6.jpg)
Privacy Checks
Before
1. Define CanSee privacy check for node type
2. Load a bunch of data
3. Filter data that fails canSee() checks
After
1. Define a PrivacyPolicy for node type
2. Define a PrivacyRule list for that policy
3. Pass in $viewer when loading data
4. Every data load automatically executes the privacy rules
![Page 7: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/7.jpg)
<?hh class PhotoPrivacyPolicy { public function rules(Photo $photo, Viewer $viewer): vec<PrivacyRule> { return [ AllowIfViewerIsOwner($viewer, $photo), DenyIfViewerIsBlocked($viewer, $photo->getOwner()), DenyIfViewerInHiddenList($viewer, $photo), ... AllowIfViewerIsFriendsWithOwner($viewer, $photo), DenyOtherwise(), ]; } }
![Page 8: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/8.jpg)
AllowIfViewerCanSeeAllContent($viewer, $video)
![Page 9: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/9.jpg)
![Page 10: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/10.jpg)
uploads & downloads
metadata & signed urls
request
https://storage.example.com/bucket/video.mp4?Signature=4439b0b99c1a45b8c83331bcc0350241
Content-Length: 2411724Content-MD5: 7507d76ec916acf676af82d63a746641...
![Page 11: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/11.jpg)
abstractions & decision logic
dumb (service-agnostic) client
request headers & signed urls
{ 'Content-Length': ‘2411724’, 'Content-MD5': ‘7507d76ec...’, <service-specific-headers>,}
![Page 12: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/12.jpg)
Download Object • streaming • connection quality • object location
Upload Object • continuable • user location • uptime status
abstractions & decision logic
dumb (service-agnostic) client
![Page 13: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/13.jpg)
![Page 14: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/14.jpg)
![Page 15: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/15.jpg)
![Page 16: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/16.jpg)
PCI Compliance
1. Install and maintain a firewall configuration to protect cardholder data
2. Do not use vendor-supplied defaults for system passwords and other security parameters
3. Protect stored cardholder data
4. Encrypt transmission of cardholder data across open, public networks
5. Protect all systems against malware and regularly update anti-virus software or programs
6. Develop and maintain secure systems and applications
7. Restrict access to cardholder data by business need to know
8. Identify and authenticate access to system components
9. Restrict physical access to cardholder data
10. Track and monitor all access to network resources and cardholder data
11. Regularly test security systems and processes
12. Maintain a policy that addresses information security for all personnel
![Page 17: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/17.jpg)
PCI Compliance
1. Install and maintain a firewall configuration to protect cardholder data
2. Do not use vendor-supplied defaults for system passwords and other security parameters
3. Protect stored cardholder data
4. Encrypt transmission of cardholder data across open, public networks
5. Protect all systems against malware and regularly update anti-virus software or programs
6. Develop and maintain secure systems and applications
7. Restrict access to cardholder data by business need to know
8. Identify and authenticate access to system components
9. Restrict physical access to cardholder data
10. Track and monitor all access to network resources and cardholder data
11. Regularly test security systems and processes
12. Maintain a policy that addresses information security for all personnel
![Page 18: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/18.jpg)
apiori
token
token
![Page 19: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/19.jpg)
Trust and AmplifyDevelop one another in the short and long term
![Page 20: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/20.jpg)
Onboarding and Rotational Programs
Bootcamp
• “Commit code on your first day”
• Low urgency bug fixes, small features
• Early foundation for cultural values
• Prioritize productivity
• Shared ownership
• Team selection
Hackamonth
• Full engagement and disengagement (vs “20% time”)
• Bidirectional knowledge sharing
• Bus factor
• Retention
![Page 21: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/21.jpg)
Onboarding and Rotational Programs
/dev/start
• Impactful, low-urgency, well-scoped group projects
• Second set of peers
• Mentorship opportunities - but also bottleneck
Rotations
• Bidirectional knowledge sharing
• Bus factor
• Retention
• New offices
• Knowledge and culture
• Seattle, Dublin, Singapore, Remote
• Leadership team too!
![Page 22: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/22.jpg)
We Haven’t Won YetIdentifying and resolving unaddressed risks
![Page 23: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/23.jpg)
Big Red Button
![Page 24: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/24.jpg)
![Page 25: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/25.jpg)
![Page 26: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/26.jpg)
![Page 27: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/27.jpg)
![Page 28: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/28.jpg)
Review Process
• Blameless
• Identify potential remediations
• Code changes
• Process improvements
• Expose and rectify common issues
• Enable incident tracking and analysis
• Knowledge sharing
![Page 29: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/29.jpg)
References
• Stripe • https://stripe.com/jobs/candidate-info • https://www.infoq.com/presentations/stripe-api-pci • https://speakerdeck.com/amyngyn/big-red-button-how-stripe-automates-incident-
management-sf-women-in-infrastructure • https://twitter.com/dps/status/1100072703007117313
• Facebook • https://www.infoq.com/presentations/Evolution-of-Code-Design-at-Facebook • https://code.fb.com/culture/bootcamp-growing-culture-at-facebook/ • https://code.fb.com/production-engineering/facebook-engineering-bootcamp/
• Snap • https://investor.snap.com/~/media/Files/S/Snap-IR/reports-and-presentations/snap-q4-and-
full-year-2017-earnings-transcript.pdf
![Page 30: How culture can improve engineering velocity, efficiency ... · Bootcamp • “Commit code on your first day” • Low urgency bug fixes, small features • Early foundation](https://reader034.vdocuments.net/reader034/viewer/2022050116/5f4d2365d55b350cc770efac/html5/thumbnails/30.jpg)
Questions?