Where the Tutorials End & the Wild West Begins: How to bring new developers up to speed on Python and Django
Who, what, where, why
Hi, I’m Julia
# engineering jobs
Not Everyone is a
“…Experience is fungible
with time. That's rarely the
case with culture fit or
A Few Disclaimers
Just a few, I promise
Y. M. M. V.
(your miles may vary)
The Adventure Begins
I decide to join Tracy at
She’s awesome, BTW.
We did what we had to in
order to launch fast.
Remember: many startups/ideas stay in beta
or are just “un-launched side projects” for
Tracy iterated fast & quickly launched the first
version of our 5 directories (she did this all as a
designer who learned Python and Django to
accomplish this !!)
It was(is) my job to ensure our infrastructure
allows us to keep growing at such tremendous
Our org structure
I didn’t speak Python
Directories, oh my!
We could launch new directories very fast by
copying old directories and creating new CSS
templates, changing names.
When you’re launching your MVP (minimum value
product), you must “move fast, break things”!
This was good
Significant code repetition
Inconsistencies in error handling and other
functionality made debugging painful
5 different Django Admin UIs
5 Posgres DBs to query and join data across
Positive business growth meant making the
fragmentation problem worse.
This was bad because…
Launch fast, but
technical debt always
Full of LOLz!
How I Learned Django
Step 1: Google (?)
Step 0: Ask Community
Step 1: Django Tutorial*
There are also videos: http://gettingstartedwithdjango.com/resources/gigantuan.html
*At the time http://gettingstartedwithdjango.com/ didn’t exist
“Yeah, Yeah, Yeah”
We’re not in polls anymore,
“Look over the code”
The best way to learn is to
write production quality
code that someone other
than you can consume.
Step 2B: Fix a bug
Be upfront about your team’s debugging best
Devs may know how to debug other languages
and environments, but not necessarily Python/
Django debug toolbar has saved me N times when
I need to see SQL Django is executing:
Introduces notion that package might exist for
features you want to build.
Chose bugs that involve
3rd party packages
I chose single sign-on with Etsy
A lot of fun moving parts:
3rd Party API
Needed good error handling
Step 3: Build a Feature
Step 3A: Build a
Feature…as a project?
Best way to prevent “Django magic
Votizen does this in their interview process:
Learning Django !=
Amount of Python I
learned & understood
while learning Django
Download IPython to practice
writing Python: http://ipython.org/
Saved PDF version of Think Python for quick searching:
Printed out this cheat sheet & hung it over my desk:
Step 4: Learn a Little
Step 5: Build Something
that Breaks Something Else
django-hosts + + django +
1 Django Project 5 Postgres DBs
5 Django Applications
…or build something that breaks almost
All 5 Django applications used:
admin (*this actually worked great!)
…but I had 5 different auth-user, taggit,
django-comments tables in 5 different DBs.
Why the Fail
Rise from the FAIL ashes
django-hosts + +
1 Postgres DB
1 Django Project
1 Django Application
There is a time and place when code must be
completely rewritten…into something
That is a whole other talk.
Solution: python script + SQLAlchemy +
namespaced all the data
…but come up with tests beforehand to check the
migration was successful!
Tests could be as simple as just counting to ensure
*all* the data migrated.