Slide 1

Slide 1 text

Lessons Learned from a Re(write|design) Diving into the world of feature-flipping, performance optimization and removing of technical debt.

Slide 2

Slide 2 text

Adam McKerlie WWCC 2 About me Hi, I’m Adam McKerlie. I’m a python developer at G Adventures. I like good beer, optimizing SQL queries and making stuff run. You can contact me at Twitter @adammckerlie IRC silent1mezzo Web procrastinatingdev.com

Slide 3

Slide 3 text

Adam McKerlie 3 Then vs Now

Slide 4

Slide 4 text

Adam McKerlie 4 Why Rewrite a Working Application? • Other teams were using Python/Django • Codebase was getting unmaintainable • Easier to hire

Slide 5

Slide 5 text

How Did We Do It?

Slide 6

Slide 6 text

Two Applications One Login

Slide 7

Slide 7 text

Adam McKerlie 7 • Authenticated on the PHP side • PHP sent a request to Django with the username, password hash and secret • Authenticated in Django when the user visited the site

Slide 8

Slide 8 text

One App at a Time

Slide 9

Slide 9 text

Adam McKerlie 9 • Built what we thought users would need the most • Specifications from Business • Launched side-by-side with old site • Turned off old site once we confirmed everything was working

Slide 10

Slide 10 text

Feature Flipping

Slide 11

Slide 11 text

Adam McKerlie WWCC 11 • Django Waffle (https://github.com/jsocol/django-waffle) • Views • Templates

Slide 12

Slide 12 text

Contest Rollout

Slide 13

Slide 13 text

Adam McKerlie 13 • Small core group of users • We gave out invites to those users when they suggested ideas • Those invites were then sent out to other users • Eventually we flipped the flag for everyone

Slide 14

Slide 14 text

Template Structure

Slide 15

Slide 15 text

Adam McKerlie 15 • New design moved to new/ • Same for Static

Slide 16

Slide 16 text

Realization #1 Specifications Change Quickly

Slide 17

Slide 17 text

Adam McKerlie WWCC 17 • Don’t get too attached • Need to know the business to anticipate changes • Learn to say no

Slide 18

Slide 18 text

Realization #2 Your Users aren’t Always Right

Slide 19

Slide 19 text

Adam McKerlie 19 • They only know from what they’ve seen • They don’t know the technology • You can tell them what they want • Be ready to learn from them

Slide 20

Slide 20 text

Realization #2 The ORM is Great...Until it’s Not

Slide 21

Slide 21 text

Adam McKerlie Realization #2 The ORM is Great...Until it’s Not 21 Bad

Slide 22

Slide 22 text

Adam McKerlie Realization #2 The ORM is Great...Until it’s Not 22 Better

Slide 23

Slide 23 text

Adam McKerlie Realization #2 The ORM is Great...Until it’s Not 23 Wat?

Slide 24

Slide 24 text

Adam McKerlie Realization #2 The ORM is Great...Until it’s Not 24 Best

Slide 25

Slide 25 text

Adam McKerlie 25 • Can produce some very weird (slow) joins • Hundreds of fast queries can kill a page • One slow query can also kill a page

Slide 26

Slide 26 text

Realization #4 People with Slow Internet Connections Don’t Notice Performance Gains

Slide 27

Slide 27 text

Adam McKerlie WWCC 27 • When they’re used to waiting a few minutes per page load, 45 second page decrease doesn’t make much of a difference • Youtube

Slide 28

Slide 28 text

Realization #5 Simple Features get the Most Praise

Slide 29

Slide 29 text

Adam McKerlie 29 • Lots of feedback and praise • *Crickets*

Slide 30

Slide 30 text

Realization #6 People Don’t Use Your Application in Ways You Expect

Slide 31

Slide 31 text

Adam McKerlie 31 • Saving after every change instead of a final save • Importance of seeing what your users do • Mixpanel, Clicktale, In Person

Slide 32

Slide 32 text

Thanks! Questions?