Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Architecting a Culture of Quality
Search
David Cramer
May 02, 2014
Programming
350
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Architecting a Culture of Quality
Python Nordeste 2014
David Cramer
May 02, 2014
More Decks by David Cramer
See All by David Cramer
Mastering Duct Tape (PyCon Balkan 2018)
zeeg
2
930
Open Source as a Business (PyCon SG 2014)
zeeg
0
420
Angular.js Workshop (PyCon SG 2014)
zeeg
0
280
Redis Hacks
zeeg
3
280
Release Faster
zeeg
12
1.5k
Open Source as a Business (EuroPython 2013)
zeeg
18
17k
Building to Scale (PyCon TW 2013)
zeeg
18
1.4k
Building to Scale
zeeg
28
24k
Lessons in Testing - DjangoCon 2012
zeeg
8
1.5k
Other Decks in Programming
See All in Programming
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
340
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
190
アクセシビリティから考える情報設計
high_g_engineer
0
380
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
140
wkhtmltopdfの次どうするか問題2026
willnet
2
1.3k
Intent as Code
shoppingjaws
6
1k
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
250
すこし踏み込む CancellationToken
htkym
1
350
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
220
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
250
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Product Roadmaps are Hard
iamctodd
55
13k
We Have a Design System, Now What?
morganepeng
55
8.3k
A designer walks into a library…
pauljervisheath
211
25k
Typedesign – Prime Four
hannesfritz
42
3.2k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
The Curse of the Amulet
leimatthew05
3
15k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Transcript
David Cramer twitter.com/zeeg Architecting a Culture of Quality
None
None
I work on Developer Productivity
(aka the build system + tooling)
ň+PGGFVQRWUJVJKUEJCPIGQWVTKIJVPQYʼn
None
How do we stop emergency pushes?
Identifying the Problems
Slow build process DQQVUVTCRRTQXKUKQPVGUVUGVE
Inaccurate or missing tests
Complex dependencies
Day 1 at Dropbox..
"Go through these manual steps to setup a dev environment”
None
"Why aren’t we using something like Vagrant?"
Keep Things Simple
“make” — a promise that it’s simple
.PHONY: develop setup-env ! # install dependencies develop: setup-env npm
install bower install env/bin/pip install -e . ! ! # ensure virtualenv setup-env: virtualenv ./env
a Makefile is just one solution
Bootstrap affects our sanity
vagrant up ⇢ puppet apply
Bootstrap affects newly hired developers
Bootstrap affects rebuilding environments
Bootstrap affects ability and time to run tests
Remove Dependencies
You cannot reproduce your production environment
Stop Trying
Do you really need Apache? RTQDCDN[PQV
Do you really need HAProxy? UGTKQWUN[!
Do you really need RabbitMQ? JQYCDQWV4GFKU!
Do you really need Zookeeper? PQRG
Do you really need Hadoop? NQN
Do you really need Anything?
Justify your dependencies
Use build servers for whatever is left over
Find Your Bottlenecks [QWRTQDCDN[FQP VGXGPPGGFC8/
Does a using (and maintaining) a VM actually save you
time?
Building A Testing Culture
Make testing so easy that you feel good about writing
tests
"Oh hey, a test I can copy/paste" +VņUCDQWVVJGOCMKPIKVCEEGUUKDNG
Encourage building better testing tools and paradigms
pip install pytest
pip install flake8
pip install mock
Your goal is to make testing accessible
Automatically test individual commits to ensure every change is stable
None
Test Continuously Before code review
Test Continuously During code review
Test Continuously Post-code review (merge)
Keep a tight Feedback Loop PQQPGYCPVUVQHKPFQWVVJGPGZVFC[VJCVVJGKTEQFGYCUDTQMGP
None
Time to response is so important that we fanout to
25 servers per build
Prevent mistakes by blocking commits which fail the build cycle
Red builds can never be deployed
Use Code Review
None
Use Code Review to sanity check code
Use Code Review to influence testing culture
Use Code Review to educate developers
Use Code Review to decrease cycle time
"Does this change look sane?"
"No, this will break X, Y, and Z" FKF[QWGXGPMPQY:YCUCVJKPI!
Aim for Quality Patches
Changes happen outside of master causing master to be the
new stable CMCVKRQTVTWPM
Quality Will Happen
Smaller, better commits
Accessibility is your goal
Accuracy breeds adoption
Scale culture through tooling
Thank You! ! twitter.com/zeeg