Better Testing
Simplify Development
Automate Releases
Feature Gates
Code Review
Sunday, September 15, 13
Slide 12
Slide 12 text
A Dropbox tale..
Sunday, September 15, 13
Slide 13
Slide 13 text
"Go through these [extremely manual]
instructions to setup a development VM"
Sunday, September 15, 13
Slide 14
Slide 14 text
Sunday, September 15, 13
Slide 15
Slide 15 text
"Why don't we just use Vagrant?"
Sunday, September 15, 13
Slide 16
Slide 16 text
Optimize the Bootstrap
Sunday, September 15, 13
Slide 17
Slide 17 text
Bootstrap affects
newly hired developers
Sunday, September 15, 13
Slide 18
Slide 18 text
Bootstrap affects
rebuilding environments
Sunday, September 15, 13
Slide 19
Slide 19 text
Bootstrap affects
time to run tests
Sunday, September 15, 13
Slide 20
Slide 20 text
Bootstrap affects
our sanity
Sunday, September 15, 13
Slide 21
Slide 21 text
vagrant up
⇢ provision.sh
Sunday, September 15, 13
Slide 22
Slide 22 text
Remove Dependencies
Sunday, September 15, 13
Slide 23
Slide 23 text
You cannot reproduce your
production environment
Sunday, September 15, 13
Slide 24
Slide 24 text
Stop Trying
Sunday, September 15, 13
Slide 25
Slide 25 text
Do you really need
Apache?
RTQDCDN[PQV
Sunday, September 15, 13
Slide 26
Slide 26 text
Do you really need
HAProxy?
UGTKQWUN[!
Sunday, September 15, 13
Slide 27
Slide 27 text
Do you really need
RabbitMQ?
JQYCDQWV4GFKU!
Sunday, September 15, 13
Slide 28
Slide 28 text
Do you really need
Zookeeper?
PQRG
Sunday, September 15, 13
Slide 29
Slide 29 text
Do you really need
Hadoop?
NQN
Sunday, September 15, 13
Slide 30
Slide 30 text
Do you really need
Anything?
Sunday, September 15, 13
Slide 31
Slide 31 text
Utilize your build servers
for complicated dependencies
Sunday, September 15, 13
Slide 32
Slide 32 text
Find Your Bottlenecks
[QWRTQDCDN[FQP VPGGFC8/KH[QWJCXGGPIKPGGTU
Sunday, September 15, 13
Slide 33
Slide 33 text
Better Testing
Simplify Development
Automate Releases
Feature Gates
Code Review
Sunday, September 15, 13
Slide 34
Slide 34 text
Culture vs Tooling
Sunday, September 15, 13
Slide 35
Slide 35 text
Make Testing Easier
Ensure you want to write tests
Sunday, September 15, 13
Slide 36
Slide 36 text
"Oh look, a test I can copy/paste"
Sunday, September 15, 13
Slide 37
Slide 37 text
Encourage building better
testing tools and paradigms
Sunday, September 15, 13
Slide 38
Slide 38 text
pip install pytest
Sunday, September 15, 13
Slide 39
Slide 39 text
pip install flake8
Sunday, September 15, 13
Slide 40
Slide 40 text
pip install mock
Sunday, September 15, 13
Slide 41
Slide 41 text
Your goal is to
make testing accessible
Sunday, September 15, 13
Slide 42
Slide 42 text
Automatically test individual commits
to ensure every change is stable
Sunday, September 15, 13
Slide 43
Slide 43 text
Sunday, September 15, 13
Slide 44
Slide 44 text
Test Continuously
Before code review (lint)
Sunday, September 15, 13
Slide 45
Slide 45 text
Test Continuously
During code review
Sunday, September 15, 13
Slide 46
Slide 46 text
Test Continuously
Post-code review (merge)
Sunday, September 15, 13
Slide 47
Slide 47 text
Optimize test execution time
to deliver feedback ASAP
Sunday, September 15, 13
Slide 48
Slide 48 text
Sunday, September 15, 13
Slide 49
Slide 49 text
Keep a tight Feedback Loop
PQQPGYCPVUVQHKPFQWVVJGPGZVFC[VJCVVJGKTEQFGYCUDTQMGP
Sunday, September 15, 13
Slide 50
Slide 50 text
Prevent mistakes by blocking
commits which fail the build cycle
Sunday, September 15, 13
Slide 51
Slide 51 text
Failed builds
won't deploy
Sunday, September 15, 13
Slide 52
Slide 52 text
Failed builds
won't merge
Sunday, September 15, 13
Slide 53
Slide 53 text
Better Testing
Simplify Development
Automate Releases
Feature Gates
Code Review
Sunday, September 15, 13
Slide 54
Slide 54 text
Mandatory Code Review
Sunday, September 15, 13
Slide 55
Slide 55 text
Sunday, September 15, 13
Slide 56
Slide 56 text
Use Code Review to
sanity check code
Sunday, September 15, 13
Slide 57
Slide 57 text
Use Code Review to
influence testing culture
Sunday, September 15, 13
Slide 58
Slide 58 text
Use Code Review to
educate developers
Sunday, September 15, 13
Slide 59
Slide 59 text
Use Code Review to
decrease cycle time
Sunday, September 15, 13
Slide 60
Slide 60 text
"Does this change look sane?"
Sunday, September 15, 13
Slide 61
Slide 61 text
"No, this will break X, Y, and Z"
FKF[QWGXGPMPQY:YCUCVJKPI!
Sunday, September 15, 13
Slide 62
Slide 62 text
Aim for Quality Patches
Sunday, September 15, 13
Slide 63
Slide 63 text
Changes happen outside of master
causing master to be the new stable
CMCVKRQTVTWPM
Sunday, September 15, 13
Slide 64
Slide 64 text
Better Testing
Simplify Development
Automate Releases
Feature Gates
Code Review
Sunday, September 15, 13
Slide 65
Slide 65 text
Choose your Audience
Sunday, September 15, 13
Slide 66
Slide 66 text
Releasing a feature internally
can be as effective as externally
Sunday, September 15, 13
Slide 67
Slide 67 text
Use feature gates to limit
the audience your change affects
Sunday, September 15, 13
Slide 68
Slide 68 text
Gargoyle at Disqus
Sunday, September 15, 13
Slide 69
Slide 69 text
from gargoyle import gargoyle
def my_view(request):
if gargoyle.is_active('awesome', request):
return 'my new awesome feature'
else:
return 'boring old version'
Sunday, September 15, 13
Slide 70
Slide 70 text
Better Testing
Simplify Development
Automate Releases
Feature Gates
Code Review
Sunday, September 15, 13