Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Experimenting on Humans

Experimenting on Humans

How do you know what 55 millions users like? Wix.com is conducting over 1000 experiments per month on production to understand which features our users like and which hurt or improve our business.

In this talk we’ll explain how our engineering team is supporting our product managers in making the right decisions and getting our product roadmap on the right path. We will also present some of the open source tools we developed that help us experimenting our products on humans.

Aviran Mordo

November 04, 2014
Tweet

More Decks by Aviran Mordo

Other Decks in Programming

Transcript

  1. Experimenting on Humans Aviran Mordo Head of Back-end Engineering @aviranm

    http://www.linkedin.com/in/aviran http://www.aviransplace.com Talya Gendler Back-end Team Leader www.linkedin.com/in/talyagendler
  2. Wix In Numbers  Over 55M users + 1M new users/month

     Static storage is >1.5Pb of data  3 data centers + 3 clouds (Google, Amazon, Azure)  1.5B HTTP requests/day  800 people work at Wix, of which ~ 300 in R&D
  3.  Basic A/B testing  Experiment driven development  PETRI – Wix’s 3rd

    generation open source experiment system  Challenges and best practices  Complexities and effect on product Agenda
  4.  EVERY new feature is A/B tested  We open the new

    feature to a % of users ¡ Measure success ¡ If it is better, we keep it ¡ If worse, we check why and improve  If flawed, the impact is just for % of our users Conclusion
  5.  New code can have bugs  Conversion can drop  Usage can

    drop  Unexpected cross test dependencies Sh*t happens (Test could fail)
  6.  Language  GEO  Browser  User-agent  OS Minimize affected users (in case

    of failure) Gradual exposure (percentage of…)  Company employees  User roles  Any other criteria you have (extendable)  All users
  7. Solution – Pause the experiment! •  Maintain NEW experience for

    already exposed users •  No additional users will be exposed to the NEW feature
  8. PETRI’s pause implementation  Use cookies to persist assignment ¡ If user

    changes browser assignment is unknown  Server side persistence solves this ¡ You pay in performance & scalability
  9. Decision Keep feature Drop feature Improve code & resume experiment

    Keep backwards compatibility for exposed users forever? Migrate users to another equivalent feature Drop it all together (users lose data/ work)
  10.  Numbers look good but sample size is small  We need

    more data!  Expand Reaching statistical significance 25% 50% 75% 100% 75% 50% 25% 0% Control Group (A) Test Group (B)
  11.  Signed-in user (Editor) ¡ Test group assignment is determined by the

    user ID ¡ Guarantee toss persistency across browsers  Anonymous user (Home page) ¡ Test group assignment is randomly determined ¡ Can not guarantee persistent experience if changing browser  11% of Wix users use more than one desktop browser Keeping persistent UX
  12. 1.  Convert A/B Test to Feature Toggle (100% ON) 2. 

    Merge the code 3.  Close the experiment Ending successful experiment
  13. # of active experiment Possible # of states 10 1024

    20 1,048,576 30 1,073,741,824 Possible states >= 2^(# experiments) Wix has ~200 active experiments = 1.606938e+60
  14.  Supporting 2^N different users is challenging  How do you know

    which experiment causes errors? Managing an ever changing production env.
  15.  Enable features by existing content  Enable features by document owner’s

    assignment  Exclude experimental features from shared documents Possible solutions
  16. Petri is more than just an A/B test framework Feature

    toggle A/B Test Personalization Internal testing Continuous deployment Jira integration Experiments Dynamic configuration QA Automated testing
  17.  Expose features internally to company employees  Enable continuous deployment with

    feature toggles  Select assignment by sites (not only by users)  Automatic selection of winning group*  Exposing feature to #n of users*  Integration with Jira * Planned feature Other things we (will) do with Petri
  18. Q&A Aviran Mordo Head of Back-end Engineering @aviranm http://www.linkedin.com/in/aviran http://www.aviransplace.com

    Talya Gendler Back-end Team Leader www.linkedin.com/in/talyagendler https://github.com/wix/petri http://goo.gl/L7pHnd
  19.  Modeled experiment lifecycle  Open source (developed using TDD from day

    1)  Running at scale on production  No deployment necessary  Both back-end and front-end experiment  Flexible architecture Why Petri