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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
David Cramer
May 02, 2014
Programming
340
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
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1k
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
120
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
850
プロポーザルを書いてもらう
pvcresin
0
510
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
580
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
110
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
120
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
230
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.4k
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
780
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
22k
New Earth Scene 8
popppiees
3
2.5k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
570
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Ruling the World: When Life Gets Gamed
codingconduct
0
300
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
200
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Designing Powerful Visuals for Engaging Learning
tmiket
1
490
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
430
Color Theory Basics | Prateek | Gurzu
gurzu
0
410
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