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
Architecting a Culture of Quality
Search
David Cramer
May 02, 2014
Programming
2
320
Architecting a Culture of Quality
Python Nordeste 2014
David Cramer
May 02, 2014
Tweet
Share
More Decks by David Cramer
See All by David Cramer
Mastering Duct Tape (PyCon Balkan 2018)
zeeg
2
880
Open Source as a Business (PyCon SG 2014)
zeeg
0
370
Angular.js Workshop (PyCon SG 2014)
zeeg
0
240
Redis Hacks
zeeg
3
240
Release Faster
zeeg
12
1.4k
Open Source as a Business (EuroPython 2013)
zeeg
18
17k
Building to Scale (PyCon TW 2013)
zeeg
18
1.3k
Building to Scale
zeeg
28
24k
Lessons in Testing - DjangoCon 2012
zeeg
8
1.4k
Other Decks in Programming
See All in Programming
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
370
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
6
1.6k
Reactの歴史を振り返る
tutinoko
1
170
それ CLI フレームワークがなくてもできるよ / Building CLI Tools Without Frameworks
orgachem
PRO
17
3.6k
decksh - a little language for decks
ajstarks
4
21k
React 使いじゃなくても知っておきたい教養としての React
oukayuka
18
5.2k
新しいモバイルアプリ勉強会(仮)について
uetyo
1
250
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
0
180
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
930
What's new in Adaptive Android development
fornewid
0
130
Understanding Kotlin Multiplatform
l2hyunwoo
0
250
Featured
See All Featured
Speed Design
sergeychernyshev
32
1.1k
Gamification - CAS2011
davidbonilla
81
5.4k
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Docker and Python
trallard
45
3.5k
How to Ace a Technical Interview
jacobian
278
23k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Music & Morning Musume
bryan
46
6.7k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
Code Review Best Practice
trishagee
69
19k
Making Projects Easy
brettharned
117
6.3k
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