SlideShare a Scribd company logo
1 of 97
Download to read offline
#abtesting@csaintamant #abtesting@csaintamant
#abtesting@csaintamant
we can do better
#abtesting@csaintamant
brainstorm. test.brainstorm. test. measure.
#abtesting@csaintamant
data driven
product development
#abtesting@csaintamant
continuous
improvement
vs ba
a b
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
A
B
C
D
E
F
G
Test 1 Test 2 Test 3 Test 4 Test 5 Test 6 Test 7
#abtesting@csaintamant
it gets
messy
#abtesting@csaintamant
▶ design
▶ define
▶ deliver
#abtesting@csaintamant
#abtesting@csaintamant
(testable)
hypothesis
#abtesting@csaintamant
individual profiles in a multi-
user household will create a
more personalized experience

and result in higher retention
#abtesting@csaintamant
test
variables
#abtesting@csaintamant
test cells
Variables Gate
Gate w/
Remember
Simple Setup Detailed Setup
Cell 1 (control)
Cell 2 ✓
Cell 3 ✓ ✓
Cell 4 ✓ ✓
Cell 5 ✓ ✓
#abtesting@csaintamant
be mindful
#abtesting@csaintamant
iterate later
#abtesting@csaintamant
▶ design
▶ define
▶ deliver
#abtesting@csaintamant
#abtesting@csaintamant
test identifiers
#abtesting@csaintamant
test # 1234
test cells 1 - 5
var tests = user.getTests();
if (tests.in(1234, 2) || tests.in(1234, 3) ||
tests.in(1234, 4) || tests.in(1234, 5)) {
// profiles enabled?
if (tests.in(1234, 3) || tests.in(1234, 4) ||
tests.in(1234, 5)) {
// gate?
if (tests.in(1234, 4)) {
// gate with remember?
}
}
}
else {
// control behavior
}
#abtesting@csaintamant
externalize config
{
meta: {
id: 1234,
name: 'profiles',
},
cells: {
'1': { control: true, profilesEnabled: false },
'2': { profilesEnabled: true, simpleSetup: true },
'3': { profilesEnabled: true, simpleSetup: true, gate: true },
'4': { profilesEnabled: true, simpleSetup: true, gate: true,
gateRemember: true },
'5': { profilesEnabled: true, detailedSetup: true, gate: true }
}
}
var profilesTest = user.getTests().get('profiles');
if (profilesTest.attr('profilesEnabled')) {
// profiles enabled?
if (profilesTest.attr('gate')) {
// gate?
if (profilesTest.attr('gateRemember')) {
// gate with remember?
}
}
}
else {
// control behavior
}
#abtesting@csaintamant
feature flags?
yep.
profilesEnabled =
new Rule('profilesEnabled', function(context, params) {
// check test flag
var profilesTest = context.getTests().get('profiles');
return profilesTest.attr('profilesEnabled');
});
rules
profilesEnabled =
new Rule('profilesEnabled', function(context, params) {
// check app config
return context.getAppConfig().profilesEnabled;
});
rules
var tests = user.getTests();
if (tests.in(1234, 3) ||
tests.in(1234, 4) ||
tests.in(1234, 5)) {
// gate?
}
before after
if (rules.profilesGate) {
// gate!
}
#abtesting@csaintamant
▶ design
▶ define
▶ deliver
#abtesting@csaintamant
#abtesting@csaintamant
UI assembly / delivery
HTML + (CSS + JS)
#abtesting@csaintamant
templating
profiles-setup.template
<div id="profiles-form">
<h1>Who will be watching Netflix?</h1>
<input id="profile1" /><label for-"profile1">That's you!</label>
<input id="profile2" />
<input id="profile3" />
<input id="profile4" />
<input id="profile5" />
<button>Continue</button>
</div>
<div id="profiles-promo">
<ul>
<li>Up to 5 people</li>
<li>No extra fees</li>
<li>Each person gets suggestions based on their own viewing and tastes</li>
<li>Great for kids</li>
</ul>
</div>
<div id="profiles-form">
<h1>Who will be watching Netflix?</h1>
<input id="profile1" /><label for-"profile1">That's you!</label>
<input id="profile2" />
<input id="profile3" />
<input id="profile4" />
<input id="profile5" />
<button>Continue</button>
</div>
<div id="profiles-promo">
{#control}
<ul>
<li>Up to 5 people</li>
<li>No extra fees</li>
<li>Each person gets suggestions based on their own viewing and tastes</li>
<li>Great for kids</li>
</ul>
{/control}
{#promo1}
<ul>
<li>Up to 5 people</li>
<li>No extra fees</li>
<li>Each person gets suggestions based on their own viewing and tastes</li>
<li>Kids under 12 get a safe area with kid-friendly movies and TV shows</li>
</ul>
{/promo1}
{#promo2}
<ul>
<li>Up to 5 people</li>
<li>No extra fees</li>
<li>Each person gets suggestions based on their own viewing and tastes</li>
<li>Kids under 12 get a safe area with kid-friendly movies and TV shows</li>
</ul>
{/promo2}
{#promo3}
<img src="images/profiles-setup.png" />
<h2>Each person added will get suggestions based on what they like to watch</h2>
<ul>
<li>Up to 5 people</li>
<li>No extra fees</li>
</ul>
{/promo3}
{#promo4}
<img src="images/profiles-setup.png" />
<h2>Have up to 5 profiles at no extra cost</h2>
<ul>
<li>Each person will get suggestions based on their own viewing and tastes</li>
<li>Great for kids</li>
</ul>
{/promo4}
</div>
profiles-setup.tmpl
if ifif if if
Control Promo 1 Promo 2 Promo 3 Promo 4
profiles-setup.tmpl
promo.tmpl promo2.tmplpromo1.tmpl promo3.tmpl promo4.tmpl
if ifif if if
<div id="profiles-form">
<h1>Who will be watching Netflix?</h1>
[...]
</div>
<div id="profiles-promo">
{> promo /}
</div>
promo.json
profiles-setup.tmpl
?
promo.tmpl promo2.tmplpromo1.tmpl promo3.tmpl promo4.tmpl
promo.json
{
"rules": [],
"templateName": "promo"
},
{
"rules": ["profilesPromo(1)"],
"templateName": "promo1"
},
{
"rules": ["profilesPromo(2)"],
"templateName": "promo2"
},
{
"rules": ["profilesPromo(3)"],
"templateName": "promo3"
},
{
"rules": ["profilesPromo(4)"],
"templateName": "promo4"
}
profilesPromo =
new Rule('profilesPromo', function(context, params) {
// check test membership
var test = context.getTests().get('profilesSetup');
return test && test.cell(params.id-1);
});
rules
#abtesting@csaintamant
how does it work?
profiles-setup.tmpl template engine partial
resolver promo.json
(mappings)
rules
rules
promo.tmpl
promo1.tmpl
promo2.tmpl
profiles-setup.tmpl template engine resolver
#abtesting@csaintamant
template loading
simplified
#abtesting@csaintamant
client-side
packaging
app.js
import backbone from 'backbone';
import search from 'search';
import profiles from 'profiles';
export ...
#abtesting@csaintamant
search
app.js
profiles
dep1 dep2 dep3 dep4 dep5
sub-dep sub-depsub-dep sub-dep sub-dep sub-dep
#abtesting@csaintamant
search
app.js
profiles
dep1 dep2 dep3 dep4 dep5
sub-dep sub-depsub-dep sub-dep sub-dep sub-dep
search
app.js
profiles
dep1 dep2 dep3 dep4 dep5
sub-dep sub-depsub-dep sub-dep sub-dep sub-dep
#abtesting@csaintamant
100s of files..?
Millions of combinations..?
#abtesting@csaintamant
conditional
dependencies
search
app.js
profiles
dep1 dep2 dep3 dep4 dep5
sub-dep sub-depsub-dep sub-dep sub-dep sub-dep
rules again!
profilesEnabled =
new Rule('profilesEnabled', function(context, params) {
// check test flag
var profilesTest = context.getTests().get('profiles');
return profilesTest.attr('profilesEnabled');
});
/*
* @includewhen rule.profilesEnabled
*/
profiles.js
/*
* @includewhen rule.searchEnabled
*/
search.js
#abtesting@csaintamant
build time:
static analysis
#abtesting@csaintamant
minify / compress
build time:
profiles.js
backbone
search.js
app.js
registry
"app.js": {
"deps": [
"backbone",
"search.js",
"profiles.js",
],
"depsFull": [
"react",
"searchDep2.js",
"searchDep1.js",
"search.js",
"profilesDep2.js",
"profilesDep1.js",
"profiles.js"
]
}
"profiles.js": {
"rule": "profilesEnabled",
"deps": [
"backbone",
"profilesDep2.js",
"profilesDep1.js",
],
"depsFull": [
"backbone",
"profilesSubDep3.js",
"profilesSubDep2.js"
"profilesSubDep1.js"
"profilesDep2.js",
"profilesDep1.js"
]
}
rule!
javascript
registry
build
#abtesting@csaintamant
request time:
evaluate rules
#abtesting@csaintamant
assemble package
request time:
registry
rulespackager
request
#abtesting@csaintamant
packaging
simplified
#abtesting@csaintamant
everything is
a module
#abtesting@csaintamant
define dependencies
#abtesting@csaintamant
only load

what you need
…per user
#abtesting@csaintamant
isolate complexity
#abtesting@csaintamant
▶ design
▶ define
▶ deliver
#abtesting@csaintamant
#abtesting@csaintamant
multivariate testing
is powerful…
#abtesting@csaintamant
…but complex
#abtesting@csaintamant
plan for complexity
“Simplicity is the
ultimate sophistication”
- Leonardo da Vinci
go experiment!
questions?
Chris Saint-Amant
@csaintamant
#abtesting

More Related Content

What's hot

Accelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineAccelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineSmartBear
 
Acceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And FriendsAcceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And FriendsChristopher Bartling
 
Continuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQContinuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQTomas Riha
 
Adding value in an agile context
Adding value in an agile contextAdding value in an agile context
Adding value in an agile contextHouseofTest
 
BDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsBDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsPatrick Viafore
 
NDC 2011 - SpecFlow: Pragmatic BDD for .NET
NDC 2011 - SpecFlow: Pragmatic BDD for .NETNDC 2011 - SpecFlow: Pragmatic BDD for .NET
NDC 2011 - SpecFlow: Pragmatic BDD for .NETjbandi
 
Web Performance Culture and Tools at Etsy
Web Performance Culture and Tools at EtsyWeb Performance Culture and Tools at Etsy
Web Performance Culture and Tools at EtsyMike Brittain
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsMike Brittain
 
Selenium Users Anonymous
Selenium Users AnonymousSelenium Users Anonymous
Selenium Users AnonymousDave Haeffner
 
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in DjangoDjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in DjangoCasey Kinsey
 
PHPConf.asia 2016 - BDD with Behat for Beginners
PHPConf.asia 2016 - BDD with Behat for BeginnersPHPConf.asia 2016 - BDD with Behat for Beginners
PHPConf.asia 2016 - BDD with Behat for BeginnersAdam Englander
 
Testing GraphQL in Your JavaScript Application: From Zero to Hundred Percent
Testing GraphQL in Your JavaScript Application: From Zero to Hundred PercentTesting GraphQL in Your JavaScript Application: From Zero to Hundred Percent
Testing GraphQL in Your JavaScript Application: From Zero to Hundred PercentRoy Derks
 
Growing Manual Testers into Automators
Growing Manual Testers into AutomatorsGrowing Manual Testers into Automators
Growing Manual Testers into AutomatorsCamille Bell
 
Adapting Agility: Getting your Agile Transformation Unstuck
Adapting Agility: Getting your Agile Transformation UnstuckAdapting Agility: Getting your Agile Transformation Unstuck
Adapting Agility: Getting your Agile Transformation UnstuckCamille Bell
 
Accelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineAccelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineSmartBear
 
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and FlickrDev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and FlickrJohn Allspaw
 
Testing for Agility: Bringing Testing into Everything
Testing for Agility: Bringing Testing into EverythingTesting for Agility: Bringing Testing into Everything
Testing for Agility: Bringing Testing into EverythingCamille Bell
 
James Christie CAST 2014 Standards – promoting quality or restricting competi...
James Christie CAST 2014 Standards – promoting quality or restricting competi...James Christie CAST 2014 Standards – promoting quality or restricting competi...
James Christie CAST 2014 Standards – promoting quality or restricting competi...James Christie Christie
 

What's hot (20)

Accelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineAccelerating Your Test Execution Pipeline
Accelerating Your Test Execution Pipeline
 
Bdd and spec flow
Bdd and spec flowBdd and spec flow
Bdd and spec flow
 
Acceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And FriendsAcceptance Test Driven Development With Spec Flow And Friends
Acceptance Test Driven Development With Spec Flow And Friends
 
Selenium Frameworks
Selenium FrameworksSelenium Frameworks
Selenium Frameworks
 
Continuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQContinuous Delivery Testing @HiQ
Continuous Delivery Testing @HiQ
 
Adding value in an agile context
Adding value in an agile contextAdding value in an agile context
Adding value in an agile context
 
BDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsBDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
 
NDC 2011 - SpecFlow: Pragmatic BDD for .NET
NDC 2011 - SpecFlow: Pragmatic BDD for .NETNDC 2011 - SpecFlow: Pragmatic BDD for .NET
NDC 2011 - SpecFlow: Pragmatic BDD for .NET
 
Web Performance Culture and Tools at Etsy
Web Performance Culture and Tools at EtsyWeb Performance Culture and Tools at Etsy
Web Performance Culture and Tools at Etsy
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty Details
 
Selenium Users Anonymous
Selenium Users AnonymousSelenium Users Anonymous
Selenium Users Anonymous
 
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in DjangoDjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
DjangoCon 2013 - How to Write Fast and Efficient Unit Tests in Django
 
PHPConf.asia 2016 - BDD with Behat for Beginners
PHPConf.asia 2016 - BDD with Behat for BeginnersPHPConf.asia 2016 - BDD with Behat for Beginners
PHPConf.asia 2016 - BDD with Behat for Beginners
 
Testing GraphQL in Your JavaScript Application: From Zero to Hundred Percent
Testing GraphQL in Your JavaScript Application: From Zero to Hundred PercentTesting GraphQL in Your JavaScript Application: From Zero to Hundred Percent
Testing GraphQL in Your JavaScript Application: From Zero to Hundred Percent
 
Growing Manual Testers into Automators
Growing Manual Testers into AutomatorsGrowing Manual Testers into Automators
Growing Manual Testers into Automators
 
Adapting Agility: Getting your Agile Transformation Unstuck
Adapting Agility: Getting your Agile Transformation UnstuckAdapting Agility: Getting your Agile Transformation Unstuck
Adapting Agility: Getting your Agile Transformation Unstuck
 
Accelerating Your Test Execution Pipeline
Accelerating Your Test Execution PipelineAccelerating Your Test Execution Pipeline
Accelerating Your Test Execution Pipeline
 
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and FlickrDev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and Flickr
 
Testing for Agility: Bringing Testing into Everything
Testing for Agility: Bringing Testing into EverythingTesting for Agility: Bringing Testing into Everything
Testing for Agility: Bringing Testing into Everything
 
James Christie CAST 2014 Standards – promoting quality or restricting competi...
James Christie CAST 2014 Standards – promoting quality or restricting competi...James Christie CAST 2014 Standards – promoting quality or restricting competi...
James Christie CAST 2014 Standards – promoting quality or restricting competi...
 

Viewers also liked

Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.js
Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.jsNetflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.js
Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.jsChris Saint-Amant
 
Experimentation Platform at Netflix
Experimentation Platform at NetflixExperimentation Platform at Netflix
Experimentation Platform at NetflixSteve Urban
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017John Maeda
 
Storytelling for the Professional
Storytelling for the ProfessionalStorytelling for the Professional
Storytelling for the ProfessionalRob Clark
 
Digital Leadership Interview : James Patterson, MVP and Head of Capital One Labs
Digital Leadership Interview : James Patterson, MVP and Head of Capital One LabsDigital Leadership Interview : James Patterson, MVP and Head of Capital One Labs
Digital Leadership Interview : James Patterson, MVP and Head of Capital One LabsCapgemini
 
Optimizely Experience Customer Story - Atlassian
Optimizely Experience Customer Story - AtlassianOptimizely Experience Customer Story - Atlassian
Optimizely Experience Customer Story - AtlassianOptimizely
 
Netflix Cinematic Design
Netflix Cinematic DesignNetflix Cinematic Design
Netflix Cinematic DesignNavin Iyengar
 
SXSW 2016 Schedule Shortcut
SXSW 2016 Schedule ShortcutSXSW 2016 Schedule Shortcut
SXSW 2016 Schedule ShortcutPoke London
 
Designing for the Mind - SXSW 2015
Designing for the Mind - SXSW 2015Designing for the Mind - SXSW 2015
Designing for the Mind - SXSW 2015Roger Dooley
 
A/B Testing – How to Break Things and Fail Fast (Without Breaking Things) - M...
A/B Testing – How to Break Things and Fail Fast (Without Breaking Things) - M...A/B Testing – How to Break Things and Fail Fast (Without Breaking Things) - M...
A/B Testing – How to Break Things and Fail Fast (Without Breaking Things) - M...Atlassian
 
SXSW 2016 : SHORTCUT SCHEDULE FOR DESIGNERS
SXSW 2016 : SHORTCUT SCHEDULE FOR DESIGNERSSXSW 2016 : SHORTCUT SCHEDULE FOR DESIGNERS
SXSW 2016 : SHORTCUT SCHEDULE FOR DESIGNERSLex Johnson
 
A/B testing at Spotify
A/B testing at SpotifyA/B testing at Spotify
A/B testing at SpotifyAli Sarrafi
 
The Evolution of Big Data at Spotify
The Evolution of Big Data at SpotifyThe Evolution of Big Data at Spotify
The Evolution of Big Data at SpotifyJosh Baer
 
How to Execute and A/B Test Cross-Channel Personalization
How to Execute and A/B Test Cross-Channel PersonalizationHow to Execute and A/B Test Cross-Channel Personalization
How to Execute and A/B Test Cross-Channel PersonalizationCXL
 
Netflix-Using analytics to predict hits
Netflix-Using analytics to predict hitsNetflix-Using analytics to predict hits
Netflix-Using analytics to predict hitsGaurav Dutta
 
A Portfolio Strategy To Execute Digital Transformation
A Portfolio Strategy To Execute Digital TransformationA Portfolio Strategy To Execute Digital Transformation
A Portfolio Strategy To Execute Digital TransformationCapgemini
 
Accessibility Empathy - SXSW 2017 Proposal
Accessibility Empathy - SXSW 2017 ProposalAccessibility Empathy - SXSW 2017 Proposal
Accessibility Empathy - SXSW 2017 ProposalYvonne So
 
Netflix - Enabling a Culture of Analytics
Netflix - Enabling a Culture of AnalyticsNetflix - Enabling a Culture of Analytics
Netflix - Enabling a Culture of AnalyticsBlake Irvine
 

Viewers also liked (20)

Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.js
Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.jsNetflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.js
Netflix JavaScript Talks - Scaling A/B Testing on Netflix.com with Node.js
 
Experimentation Platform at Netflix
Experimentation Platform at NetflixExperimentation Platform at Netflix
Experimentation Platform at Netflix
 
Design in Tech Report 2017
Design in Tech Report 2017Design in Tech Report 2017
Design in Tech Report 2017
 
Storytelling for the Professional
Storytelling for the ProfessionalStorytelling for the Professional
Storytelling for the Professional
 
Digital Leadership Interview : James Patterson, MVP and Head of Capital One Labs
Digital Leadership Interview : James Patterson, MVP and Head of Capital One LabsDigital Leadership Interview : James Patterson, MVP and Head of Capital One Labs
Digital Leadership Interview : James Patterson, MVP and Head of Capital One Labs
 
Optimizely Experience Customer Story - Atlassian
Optimizely Experience Customer Story - AtlassianOptimizely Experience Customer Story - Atlassian
Optimizely Experience Customer Story - Atlassian
 
A/B Testing at Scale
A/B Testing at ScaleA/B Testing at Scale
A/B Testing at Scale
 
Netflix Cinematic Design
Netflix Cinematic DesignNetflix Cinematic Design
Netflix Cinematic Design
 
SXSW 2016 Schedule Shortcut
SXSW 2016 Schedule ShortcutSXSW 2016 Schedule Shortcut
SXSW 2016 Schedule Shortcut
 
Designing for the Mind - SXSW 2015
Designing for the Mind - SXSW 2015Designing for the Mind - SXSW 2015
Designing for the Mind - SXSW 2015
 
A/B Testing – How to Break Things and Fail Fast (Without Breaking Things) - M...
A/B Testing – How to Break Things and Fail Fast (Without Breaking Things) - M...A/B Testing – How to Break Things and Fail Fast (Without Breaking Things) - M...
A/B Testing – How to Break Things and Fail Fast (Without Breaking Things) - M...
 
SXSW 2016 : SHORTCUT SCHEDULE FOR DESIGNERS
SXSW 2016 : SHORTCUT SCHEDULE FOR DESIGNERSSXSW 2016 : SHORTCUT SCHEDULE FOR DESIGNERS
SXSW 2016 : SHORTCUT SCHEDULE FOR DESIGNERS
 
A/B testing at Spotify
A/B testing at SpotifyA/B testing at Spotify
A/B testing at Spotify
 
Web proposal
Web proposalWeb proposal
Web proposal
 
The Evolution of Big Data at Spotify
The Evolution of Big Data at SpotifyThe Evolution of Big Data at Spotify
The Evolution of Big Data at Spotify
 
How to Execute and A/B Test Cross-Channel Personalization
How to Execute and A/B Test Cross-Channel PersonalizationHow to Execute and A/B Test Cross-Channel Personalization
How to Execute and A/B Test Cross-Channel Personalization
 
Netflix-Using analytics to predict hits
Netflix-Using analytics to predict hitsNetflix-Using analytics to predict hits
Netflix-Using analytics to predict hits
 
A Portfolio Strategy To Execute Digital Transformation
A Portfolio Strategy To Execute Digital TransformationA Portfolio Strategy To Execute Digital Transformation
A Portfolio Strategy To Execute Digital Transformation
 
Accessibility Empathy - SXSW 2017 Proposal
Accessibility Empathy - SXSW 2017 ProposalAccessibility Empathy - SXSW 2017 Proposal
Accessibility Empathy - SXSW 2017 Proposal
 
Netflix - Enabling a Culture of Analytics
Netflix - Enabling a Culture of AnalyticsNetflix - Enabling a Culture of Analytics
Netflix - Enabling a Culture of Analytics
 

Similar to A/B Testing at Scale: Minimizing UI Complexity (SXSW 2015)

Django Introduction Osscamp Delhi September 08 09 2007 Mir Nazim
Django Introduction Osscamp Delhi September 08 09 2007 Mir NazimDjango Introduction Osscamp Delhi September 08 09 2007 Mir Nazim
Django Introduction Osscamp Delhi September 08 09 2007 Mir NazimMir Nazim
 
Meetup django common_problems(1)
Meetup django common_problems(1)Meetup django common_problems(1)
Meetup django common_problems(1)Eric Satterwhite
 
Angular JS2 Training Session #2
Angular JS2 Training Session #2Angular JS2 Training Session #2
Angular JS2 Training Session #2Paras Mendiratta
 
Knockout mvvm-m5-slides
Knockout mvvm-m5-slidesKnockout mvvm-m5-slides
Knockout mvvm-m5-slidesMasterCode.vn
 
Интеграция решения по тестированию производительности в существующий фреймвор...
Интеграция решения по тестированию производительности в существующий фреймвор...Интеграция решения по тестированию производительности в существующий фреймвор...
Интеграция решения по тестированию производительности в существующий фреймвор...COMAQA.BY
 
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015Phil Leggetter
 
Supercharging your Organic CTR
Supercharging your Organic CTRSupercharging your Organic CTR
Supercharging your Organic CTRPhil Pearce
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Michelangelo van Dam
 
Django - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosDjango - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosIgor Sobreira
 
Why you should be using Web Components. And How - DevWeek 2015
Why you should be using Web Components. And How - DevWeek 2015Why you should be using Web Components. And How - DevWeek 2015
Why you should be using Web Components. And How - DevWeek 2015Phil Leggetter
 
Practical HTML5: Using It Today
Practical HTML5: Using It TodayPractical HTML5: Using It Today
Practical HTML5: Using It TodayDoris Chen
 
WordPress Accessibility: WordCamp Chicago
WordPress Accessibility: WordCamp ChicagoWordPress Accessibility: WordCamp Chicago
WordPress Accessibility: WordCamp ChicagoJoseph Dolson
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and ImprovedTimothy Fisher
 

Similar to A/B Testing at Scale: Minimizing UI Complexity (SXSW 2015) (20)

Django Introduction Osscamp Delhi September 08 09 2007 Mir Nazim
Django Introduction Osscamp Delhi September 08 09 2007 Mir NazimDjango Introduction Osscamp Delhi September 08 09 2007 Mir Nazim
Django Introduction Osscamp Delhi September 08 09 2007 Mir Nazim
 
Django
DjangoDjango
Django
 
Meetup django common_problems(1)
Meetup django common_problems(1)Meetup django common_problems(1)
Meetup django common_problems(1)
 
Angular JS2 Training Session #2
Angular JS2 Training Session #2Angular JS2 Training Session #2
Angular JS2 Training Session #2
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
Knockout mvvm-m5-slides
Knockout mvvm-m5-slidesKnockout mvvm-m5-slides
Knockout mvvm-m5-slides
 
Code Management
Code ManagementCode Management
Code Management
 
Going web native
Going web nativeGoing web native
Going web native
 
Интеграция решения по тестированию производительности в существующий фреймвор...
Интеграция решения по тестированию производительности в существующий фреймвор...Интеграция решения по тестированию производительности в существующий фреймвор...
Интеграция решения по тестированию производительности в существующий фреймвор...
 
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
 
Supercharging your Organic CTR
Supercharging your Organic CTRSupercharging your Organic CTR
Supercharging your Organic CTR
 
Struts2
Struts2Struts2
Struts2
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 
Django - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosDjango - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazos
 
Why you should be using Web Components. And How - DevWeek 2015
Why you should be using Web Components. And How - DevWeek 2015Why you should be using Web Components. And How - DevWeek 2015
Why you should be using Web Components. And How - DevWeek 2015
 
Angular 2 introduction
Angular 2 introductionAngular 2 introduction
Angular 2 introduction
 
Practical HTML5: Using It Today
Practical HTML5: Using It TodayPractical HTML5: Using It Today
Practical HTML5: Using It Today
 
WordPress Accessibility: WordCamp Chicago
WordPress Accessibility: WordCamp ChicagoWordPress Accessibility: WordCamp Chicago
WordPress Accessibility: WordCamp Chicago
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
Django
DjangoDjango
Django
 

Recently uploaded

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

A/B Testing at Scale: Minimizing UI Complexity (SXSW 2015)