SlideShare a Scribd company logo
1 of 37
Download to read offline
A Developer’s Guide
to Full Stack
Experimentation
John Cline
Senior Engineering Manager, Blue Apron
• The presentation deck and recording will be made
available to you after the event.
• Feel free to ask questions during the presentation by using
the ‘Questions’ box on your viewing control panel.
Housekeeping
John Cline
Sr. Engineering Manager
Blue Apron
Today’s Presenter
What We’ll Cover
John Cline
Engineering Lead, Growth/Member Experience
February 1, 2018
Experimentation @ Blue Apron
6
Who am I?
►Engineering Lead for Growth/Member
Experience Teams
►Growth owns:
− Marketing/landing pages
− Registration/reactivation
− Referral program
− Experimentation, tracking, and email
integrations
►Started at Blue Apron in August 2016
I’m online at @clinejj
7
Overview
►The Early Days
►Unique Challenges
►Let’s Talk Solutions
►Getting Testy
►Next Steps
7
8
The Early Days
9
The Early Days
Prior to ~Aug 2016, experimentation was
done only with Optimizely Web.
►Pros
− Easy for non-technical users to create
and launch tests
− Worked well with our SPA
►Cons
− Only worked with client side changes
− Could not populate events in Optimizely
results view with backend events
This worked pretty well, but...
9
10
Challenges
11
Unique
Challenges
Blue Apron is a unique business.
We’re the first meal-kit company to launch in the US, and a few things make
our form of e-commerce a bit more challenging than other companies selling
products online:
►We currently offer recurring meal plans (our customers get 2-4 recipes
every week unless they skip/cancel)
►We have seasonal recipes and a freshness guarantee
►We (currently) have a six day cutoff for changing your order
►We have multiple fulfillment and delivery methods
►We support customers across web, iOS, and Android
It’s possible for a customer to sign up for a plan and then never have a need
to log in to our digital product or contact support again.
That makes it hard to rely on a client-side only testing setup.
12
Unique Challenges
Scheduled backend jobs power many critical parts of our business.
A client side solution wouldn’t give us flexibility to test this business logic.
13
Unique
Challenges
Because of our unique business model, our KPIs
for most tests require long term evaluation.
Besides conversion and engagement, we also look at:
►Cohorted LTV by registration week (including accounting for acquisition
costs)
►Order rate: What % of weeks has a customer ordered?
►Performance relative to various user segments
− Referral vs non-referral
− Two person plan vs four person plan
− Zip code
Tracking these KPIs required someone on our analytics team to run the
analysis (anywhere from 2-4 weeks), creating a bottleneck to see test
results.
14
The Solution
15
Enter Optimizely
Full Stack
Around this time, Optimizely Full Stack
was released and targeted precisely at
our use case.
We looked into open source frameworks
(eg Sixpack, Wasabi) but needed
something with less of a maintenance
cost. Our team also already knew how to
use the product.
We looked at feature flag frameworks
(like Flipper), but needed something for
the experimentation use case (vs a
feature flag).
Our main application is a Ruby/Rails app,
so we wrote a thin singleton wrapper for
the Full Stack Ruby gem, which helped
us support different environments and
handle errors.
15
16
Integrating with
Full Stack
We already had some pieces in place that
made integration easier:
►An internal concept of an experiment in our
data model
− A site test has many variations which
each have many users
►API for clients to log variation status to our
internal system
►Including test variation information in our
eventing frameworks (GA and Amplitude)
These helped ensure we had a good data
pipeline to tag users and events for further
analysis when required.
17
Integrating with
Full Stack
The Optimizely results dashboard made it
easy to get early directional decisions on
whether to stop/ramp a test, while our
wrapper gave us the information needed for
a deeper analysis.
We wrote a wrapper service around the
Optimizely client to integrate with our
existing site test data model to log bucketing
results for analytics purposes.
We added an asynchronous event reporter
for reporting events to Optimizely (runs in our
background job processor).
Currently, the Optimizely datafile is only
downloaded on application startup.
18
Integrating with Full Stack
19
Getting Testy
20
Testing with Full Stack
Creating a test in our application is fairly straightforward:
1. Run a migration to create the test/variations in our data model
class SiteTestVariationsForMyTest < ActiveRecord::Migration
def self.up
site_test = SiteTest.create!(
name: 'My Test',
experiment_id: 'my-test',
is_active: false
)
site_test.site_test_variations.create!(
variation_name: 'Control',
variation_id: 'my-test-control'
)
site_test.site_test_variations.create!(
variation_name: 'Variation',
variation_id: 'my-test-variation'
)
end
def self.down
raise ActiveRecord::IrreversibleMigration
end
end
21
Testing with Full Stack
2. Create a testing service to wrap bucketing logic
module SiteTests
class MyTestingService
include Experimentable
def initialize(user)
@user = user
end
def run_experiment
return unless user_valid?
return if bucket.blank?
# Take actions on the user
end
private
def user_valid?
# does user meet criteria for test (could also be handled with audiences)
end
def bucket
@variation_id ||= testing_service.bucket_user(@user)
end
end
end
22
Testing with Full Stack
3. Bucket users
SiteTests::MyTestingService.new(user).run_experiment
3. Read variation status
@user&.active_site_test_variation_ids.to_a
We generally bucket users at account creation or through an API call to our
configurations API (returns feature status/configurations for a user).
23
Testing with
Full Stack
Some tests that we’ve run since
integrating:
►New post-registration onboarding flow
►Second box reminder email
►More recipes/plan options
►New delivery schedule
►New reactivation experience
These helped ensure we had a good data
pipeline to tag users and events for
further analysis when required.
23
24
Testing with Full Stack
More recipes/plan options
Control Test
25
Testing with Full Stack
Control Test
More recipes/plan options
26
Testing with Full Stack
Results from more recipes/plan options test:
27
New Reactivation Flow
Testing with Full Stack
28
Results from new reactivation flow test:
Testing with Full Stack
29
Next Steps
30
Feature Flagging vs Experimentation
There is a lot of overlap between each, but they both have different user groups.
►Feature flagging
− Primary user is engineering/product
− May be used for a variety of reasons (enabling a new service, fallback behavior, or a user feature)
►Experimentation
− Primary user is product/analytics
− Care about being able to track through other metrics/events
− Generally focused on customer impacting features
As a developer, I don’t care if a feature is enabled via a flag or a test. I only care about knowing how to enable/disable
something.
As a PM or Analyst, I likely care more about experiments than feature flags (although I’d want to audit both).
31
Feature Flagging vs
Experimentation
We use two separate tools for
feature flagging:
Open Source
Optimizely
(GitHub Platform Team)
Full Stack
GOAL: Create a single source of truth
and with an easier to use dashboard for
setting up features.
31
32
Feature Flagging vs Experimentation
Rough plan:
►Expose “feature configuration” to clients through API (both internal code structure and our REST API)
− List of enabled features and any configuration parameters
►Consolidate features to be enabled if flipper || optimizely
►Add administration panel to create features/configurations and test or roll them out
►Support better cross-platform testing
− App version targeting
− User segmentation
− “Global holdback”
− Mutually exclusive tests
Why do we still use flipper? Local, and changes occur instantly. Better for arbitrary % rollouts (vs the more
heavyweight enablement through Optimizely).
33
Feature
Management
Optimizely Full Stack just launched a new
feature management system.
It supports:
►Defining a feature configuration
− A feature is a set of
boolean/double/integer/string
parameters
− Can modify parameters by variation
(or rollout)
►Enabling a feature in an experiment
variation or rolling out to % /audience
We’re still testing it, but looks promising
(and being able to update variables
without rolling code is incredibly helpful).
33
34
Tech Debt
We are still developing general guidelines for
engineers on how to set up tests, particularly
around which platform to implement and
how to implement (we use Optimizely Web,
Full Stack, iOS, Android, and have Flipper for
server side gating).
As we do more testing, we enable more
features, which makes our code more
complex.
On a quarterly-ish basis, we go through and
clean up unused tests (or do so when
launching).
You should definitely have a philosophy
on feature flags and tech debt cleanup.
35
Things to
Think About
Optimizely specifically:
►Environments
− Currently have each environment
(dev/staging/production) as separate
Optimizely projects - makes it
difficult to copy tests between each
environment
►Cross Platform Testing
− If serving multiple platforms, need
server managed solution (even if just
driving client-only changes) to ensure
consistent experience
35
36
Things to
Think About
At the end of the day, who are the users
of your feature/experimentation platform?
►Testing gives you insights into user
behavior - what are you going to do
with that?
►How do you measure your KPIs?
►How do you make decisions?
►What’s the developer experience like?
36
37
Questions?
http://blueapron.io

More Related Content

What's hot

[Webinar] How Vivid Seats Ensures Experimentation Success
[Webinar] How Vivid Seats Ensures Experimentation Success [Webinar] How Vivid Seats Ensures Experimentation Success
[Webinar] How Vivid Seats Ensures Experimentation Success Optimizely
 
From iOS to TiVo: In-app Digital Experience Testing
From iOS to TiVo: In-app Digital Experience TestingFrom iOS to TiVo: In-app Digital Experience Testing
From iOS to TiVo: In-app Digital Experience TestingOptimizely
 
Opticon 2017 Decisions at Scale
Opticon 2017 Decisions at ScaleOpticon 2017 Decisions at Scale
Opticon 2017 Decisions at ScaleOptimizely
 
7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W...
7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W...7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W...
7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W...Optimizely
 
Take Your Experimentation Program to the Next Level
Take Your Experimentation Program to the Next LevelTake Your Experimentation Program to the Next Level
Take Your Experimentation Program to the Next LevelOptimizely
 
The Science of Getting Testing Right
The Science of Getting Testing RightThe Science of Getting Testing Right
The Science of Getting Testing RightOptimizely
 
The Wall Street Journal - Optimizing Membership
The Wall Street Journal - Optimizing MembershipThe Wall Street Journal - Optimizing Membership
The Wall Street Journal - Optimizing MembershipOptimizely
 
Making Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product StrategyMaking Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product StrategyOptimizely
 
Building a Culture of Experimentation at HP
Building a Culture of Experimentation at HPBuilding a Culture of Experimentation at HP
Building a Culture of Experimentation at HPOptimizely
 
Digital Change Agents - Sky
Digital Change Agents - SkyDigital Change Agents - Sky
Digital Change Agents - SkyOptimizely
 
Why Some Companies Are More Innovative Than Others
Why Some Companies Are More Innovative Than OthersWhy Some Companies Are More Innovative Than Others
Why Some Companies Are More Innovative Than OthersOptimizely
 
Getting Started with Server-Side Testing
Getting Started with Server-Side TestingGetting Started with Server-Side Testing
Getting Started with Server-Side TestingOptimizely
 
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...Optimizely
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryOptimizely
 
Program Management 101: Best Practices from Optimizely-on-Optimizely
Program Management 101: Best Practices from Optimizely-on-OptimizelyProgram Management 101: Best Practices from Optimizely-on-Optimizely
Program Management 101: Best Practices from Optimizely-on-OptimizelyOptimizely
 
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development CycleAtlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development CycleOptimizely
 
An Experimentation Framework: How to Position for Triple Digit Growth
An Experimentation Framework: How to Position for Triple Digit GrowthAn Experimentation Framework: How to Position for Triple Digit Growth
An Experimentation Framework: How to Position for Triple Digit GrowthOptimizely
 
How Clorox Experiments Across Brands to Turn Visitors into Consumers
How Clorox Experiments Across Brands to Turn Visitors into ConsumersHow Clorox Experiments Across Brands to Turn Visitors into Consumers
How Clorox Experiments Across Brands to Turn Visitors into ConsumersOptimizely
 
Optimizely & Photobox - DON'T PANIC: The No-Confusion Experimentation Startup...
Optimizely & Photobox - DON'T PANIC: The No-Confusion Experimentation Startup...Optimizely & Photobox - DON'T PANIC: The No-Confusion Experimentation Startup...
Optimizely & Photobox - DON'T PANIC: The No-Confusion Experimentation Startup...Optimizely
 
Driving Agile Product Development with Experimentation
Driving Agile Product Development with ExperimentationDriving Agile Product Development with Experimentation
Driving Agile Product Development with ExperimentationSplit Software
 

What's hot (20)

[Webinar] How Vivid Seats Ensures Experimentation Success
[Webinar] How Vivid Seats Ensures Experimentation Success [Webinar] How Vivid Seats Ensures Experimentation Success
[Webinar] How Vivid Seats Ensures Experimentation Success
 
From iOS to TiVo: In-app Digital Experience Testing
From iOS to TiVo: In-app Digital Experience TestingFrom iOS to TiVo: In-app Digital Experience Testing
From iOS to TiVo: In-app Digital Experience Testing
 
Opticon 2017 Decisions at Scale
Opticon 2017 Decisions at ScaleOpticon 2017 Decisions at Scale
Opticon 2017 Decisions at Scale
 
7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W...
7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W...7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W...
7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W...
 
Take Your Experimentation Program to the Next Level
Take Your Experimentation Program to the Next LevelTake Your Experimentation Program to the Next Level
Take Your Experimentation Program to the Next Level
 
The Science of Getting Testing Right
The Science of Getting Testing RightThe Science of Getting Testing Right
The Science of Getting Testing Right
 
The Wall Street Journal - Optimizing Membership
The Wall Street Journal - Optimizing MembershipThe Wall Street Journal - Optimizing Membership
The Wall Street Journal - Optimizing Membership
 
Making Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product StrategyMaking Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product Strategy
 
Building a Culture of Experimentation at HP
Building a Culture of Experimentation at HPBuilding a Culture of Experimentation at HP
Building a Culture of Experimentation at HP
 
Digital Change Agents - Sky
Digital Change Agents - SkyDigital Change Agents - Sky
Digital Change Agents - Sky
 
Why Some Companies Are More Innovative Than Others
Why Some Companies Are More Innovative Than OthersWhy Some Companies Are More Innovative Than Others
Why Some Companies Are More Innovative Than Others
 
Getting Started with Server-Side Testing
Getting Started with Server-Side TestingGetting Started with Server-Side Testing
Getting Started with Server-Side Testing
 
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
Triple Your Experiment Velocity by Integrating Optimizely with Your Data Ware...
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature Delivery
 
Program Management 101: Best Practices from Optimizely-on-Optimizely
Program Management 101: Best Practices from Optimizely-on-OptimizelyProgram Management 101: Best Practices from Optimizely-on-Optimizely
Program Management 101: Best Practices from Optimizely-on-Optimizely
 
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development CycleAtlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
 
An Experimentation Framework: How to Position for Triple Digit Growth
An Experimentation Framework: How to Position for Triple Digit GrowthAn Experimentation Framework: How to Position for Triple Digit Growth
An Experimentation Framework: How to Position for Triple Digit Growth
 
How Clorox Experiments Across Brands to Turn Visitors into Consumers
How Clorox Experiments Across Brands to Turn Visitors into ConsumersHow Clorox Experiments Across Brands to Turn Visitors into Consumers
How Clorox Experiments Across Brands to Turn Visitors into Consumers
 
Optimizely & Photobox - DON'T PANIC: The No-Confusion Experimentation Startup...
Optimizely & Photobox - DON'T PANIC: The No-Confusion Experimentation Startup...Optimizely & Photobox - DON'T PANIC: The No-Confusion Experimentation Startup...
Optimizely & Photobox - DON'T PANIC: The No-Confusion Experimentation Startup...
 
Driving Agile Product Development with Experimentation
Driving Agile Product Development with ExperimentationDriving Agile Product Development with Experimentation
Driving Agile Product Development with Experimentation
 

Similar to Experimentation at Blue Apron (webinar)

Optimizely NYC Developer Meetup - Experimentation at Blue Apron
Optimizely NYC Developer Meetup - Experimentation at Blue ApronOptimizely NYC Developer Meetup - Experimentation at Blue Apron
Optimizely NYC Developer Meetup - Experimentation at Blue ApronOptimizely
 
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...QueBIT Consulting
 
Continuous Performance Testing: The New Standard
Continuous Performance Testing: The New StandardContinuous Performance Testing: The New Standard
Continuous Performance Testing: The New StandardTechWell
 
Unifying feature management with experiments - Server Side Webinar (1).pdf
Unifying feature management with experiments - Server Side Webinar (1).pdfUnifying feature management with experiments - Server Side Webinar (1).pdf
Unifying feature management with experiments - Server Side Webinar (1).pdfVWO
 
Performance Testing in Agile Process
Performance Testing in Agile ProcessPerformance Testing in Agile Process
Performance Testing in Agile ProcessIdexcel Technologies
 
Qtp questions and answers
Qtp questions and answersQtp questions and answers
Qtp questions and answersRamu Palanki
 
Curiosity Software, Infuse and Kumoco present: The Democratisation of Testing
Curiosity Software, Infuse and Kumoco present: The Democratisation of TestingCuriosity Software, Infuse and Kumoco present: The Democratisation of Testing
Curiosity Software, Infuse and Kumoco present: The Democratisation of TestingCuriosity Software Ireland
 
Intuit - How to Scale Your Experimentation Program
Intuit - How to Scale Your Experimentation ProgramIntuit - How to Scale Your Experimentation Program
Intuit - How to Scale Your Experimentation ProgramOptimizely
 
Pay pal paypal continuous performance as a self-service with fully-automated...
Pay pal  paypal continuous performance as a self-service with fully-automated...Pay pal  paypal continuous performance as a self-service with fully-automated...
Pay pal paypal continuous performance as a self-service with fully-automated...Dynatrace
 
Experimentation Platform at Netflix
Experimentation Platform at NetflixExperimentation Platform at Netflix
Experimentation Platform at NetflixSteve Urban
 
Webapp Automation Testing of performance marketing and media platform
Webapp Automation Testing of performance marketing and media platformWebapp Automation Testing of performance marketing and media platform
Webapp Automation Testing of performance marketing and media platformKnoldus Inc.
 
Experiment Your Way to Product Success: How User Acceptance Testing Can Save ...
Experiment Your Way to Product Success: How User Acceptance Testing Can Save ...Experiment Your Way to Product Success: How User Acceptance Testing Can Save ...
Experiment Your Way to Product Success: How User Acceptance Testing Can Save ...Aggregage
 
Test Metrics in Agile: A Powerful Tool to Demonstrate Value
Test Metrics in Agile: A Powerful Tool to Demonstrate ValueTest Metrics in Agile: A Powerful Tool to Demonstrate Value
Test Metrics in Agile: A Powerful Tool to Demonstrate ValueTechWell
 
LKIN17: Enabling Enterprise Agility though a Hybrid Agile Implementation Mode...
LKIN17: Enabling Enterprise Agility though a Hybrid Agile Implementation Mode...LKIN17: Enabling Enterprise Agility though a Hybrid Agile Implementation Mode...
LKIN17: Enabling Enterprise Agility though a Hybrid Agile Implementation Mode...Innovation Roots
 
Lean Kanban India 2017 | Case study - Hybrid Agile Implementation Model to En...
Lean Kanban India 2017 | Case study - Hybrid Agile Implementation Model to En...Lean Kanban India 2017 | Case study - Hybrid Agile Implementation Model to En...
Lean Kanban India 2017 | Case study - Hybrid Agile Implementation Model to En...LeanKanbanIndia
 
Test Automation Strategies For Agile
Test Automation Strategies For AgileTest Automation Strategies For Agile
Test Automation Strategies For AgileNaresh Jain
 
Continuous testing in agile projects 2015
Continuous testing in agile projects 2015Continuous testing in agile projects 2015
Continuous testing in agile projects 2015Fabricio Epaminondas
 
Software testing interview Q&A – Part 2
Software testing interview Q&A – Part 2Software testing interview Q&A – Part 2
Software testing interview Q&A – Part 2Khoa Bui
 

Similar to Experimentation at Blue Apron (webinar) (20)

Optimizely NYC Developer Meetup - Experimentation at Blue Apron
Optimizely NYC Developer Meetup - Experimentation at Blue ApronOptimizely NYC Developer Meetup - Experimentation at Blue Apron
Optimizely NYC Developer Meetup - Experimentation at Blue Apron
 
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
 
Agile case studies
Agile case studiesAgile case studies
Agile case studies
 
Continuous Performance Testing: The New Standard
Continuous Performance Testing: The New StandardContinuous Performance Testing: The New Standard
Continuous Performance Testing: The New Standard
 
Unifying feature management with experiments - Server Side Webinar (1).pdf
Unifying feature management with experiments - Server Side Webinar (1).pdfUnifying feature management with experiments - Server Side Webinar (1).pdf
Unifying feature management with experiments - Server Side Webinar (1).pdf
 
Performance Testing in Agile Process
Performance Testing in Agile ProcessPerformance Testing in Agile Process
Performance Testing in Agile Process
 
Qtp questions and answers
Qtp questions and answersQtp questions and answers
Qtp questions and answers
 
Curiosity Software, Infuse and Kumoco present: The Democratisation of Testing
Curiosity Software, Infuse and Kumoco present: The Democratisation of TestingCuriosity Software, Infuse and Kumoco present: The Democratisation of Testing
Curiosity Software, Infuse and Kumoco present: The Democratisation of Testing
 
Intuit - How to Scale Your Experimentation Program
Intuit - How to Scale Your Experimentation ProgramIntuit - How to Scale Your Experimentation Program
Intuit - How to Scale Your Experimentation Program
 
Pay pal paypal continuous performance as a self-service with fully-automated...
Pay pal  paypal continuous performance as a self-service with fully-automated...Pay pal  paypal continuous performance as a self-service with fully-automated...
Pay pal paypal continuous performance as a self-service with fully-automated...
 
Experimentation Platform at Netflix
Experimentation Platform at NetflixExperimentation Platform at Netflix
Experimentation Platform at Netflix
 
Webapp Automation Testing of performance marketing and media platform
Webapp Automation Testing of performance marketing and media platformWebapp Automation Testing of performance marketing and media platform
Webapp Automation Testing of performance marketing and media platform
 
hp_alm.docx
hp_alm.docxhp_alm.docx
hp_alm.docx
 
Experiment Your Way to Product Success: How User Acceptance Testing Can Save ...
Experiment Your Way to Product Success: How User Acceptance Testing Can Save ...Experiment Your Way to Product Success: How User Acceptance Testing Can Save ...
Experiment Your Way to Product Success: How User Acceptance Testing Can Save ...
 
Test Metrics in Agile: A Powerful Tool to Demonstrate Value
Test Metrics in Agile: A Powerful Tool to Demonstrate ValueTest Metrics in Agile: A Powerful Tool to Demonstrate Value
Test Metrics in Agile: A Powerful Tool to Demonstrate Value
 
LKIN17: Enabling Enterprise Agility though a Hybrid Agile Implementation Mode...
LKIN17: Enabling Enterprise Agility though a Hybrid Agile Implementation Mode...LKIN17: Enabling Enterprise Agility though a Hybrid Agile Implementation Mode...
LKIN17: Enabling Enterprise Agility though a Hybrid Agile Implementation Mode...
 
Lean Kanban India 2017 | Case study - Hybrid Agile Implementation Model to En...
Lean Kanban India 2017 | Case study - Hybrid Agile Implementation Model to En...Lean Kanban India 2017 | Case study - Hybrid Agile Implementation Model to En...
Lean Kanban India 2017 | Case study - Hybrid Agile Implementation Model to En...
 
Test Automation Strategies For Agile
Test Automation Strategies For AgileTest Automation Strategies For Agile
Test Automation Strategies For Agile
 
Continuous testing in agile projects 2015
Continuous testing in agile projects 2015Continuous testing in agile projects 2015
Continuous testing in agile projects 2015
 
Software testing interview Q&A – Part 2
Software testing interview Q&A – Part 2Software testing interview Q&A – Part 2
Software testing interview Q&A – Part 2
 

More from Optimizely

Clover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive ExperimentationClover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive ExperimentationOptimizely
 
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...Optimizely
 
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...Optimizely
 
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion RevenueZillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion RevenueOptimizely
 
The Future of Optimizely for Technical Teams
The Future of Optimizely for Technical TeamsThe Future of Optimizely for Technical Teams
The Future of Optimizely for Technical TeamsOptimizely
 
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...Optimizely
 
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...Optimizely
 
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingBuilding an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingOptimizely
 
AMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server SideAMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server SideOptimizely
 
Evolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product DevelopmentEvolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product DevelopmentOptimizely
 
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented ArchitectureOvercoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented ArchitectureOptimizely
 
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...Optimizely
 
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives RevenueKick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives RevenueOptimizely
 
Experimentation through Clients' Eyes
Experimentation through Clients' EyesExperimentation through Clients' Eyes
Experimentation through Clients' EyesOptimizely
 
Shipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHubShipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHubOptimizely
 
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely
 
The Future of Software Development
The Future of Software DevelopmentThe Future of Software Development
The Future of Software DevelopmentOptimizely
 
Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De...
Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De...Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De...
Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De...Optimizely
 
Run High Impact Experimentation with High-quality Customer Discovery
Run High Impact Experimentation with High-quality Customer DiscoveryRun High Impact Experimentation with High-quality Customer Discovery
Run High Impact Experimentation with High-quality Customer DiscoveryOptimizely
 
Using Empathy to Build Custom Solutions at Scale
Using Empathy to Build Custom Solutions at ScaleUsing Empathy to Build Custom Solutions at Scale
Using Empathy to Build Custom Solutions at ScaleOptimizely
 

More from Optimizely (20)

Clover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive ExperimentationClover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive Experimentation
 
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
 
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
 
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion RevenueZillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
 
The Future of Optimizely for Technical Teams
The Future of Optimizely for Technical TeamsThe Future of Optimizely for Technical Teams
The Future of Optimizely for Technical Teams
 
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
 
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
 
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingBuilding an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team Offering
 
AMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server SideAMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server Side
 
Evolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product DevelopmentEvolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product Development
 
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented ArchitectureOvercoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
 
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
 
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives RevenueKick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
 
Experimentation through Clients' Eyes
Experimentation through Clients' EyesExperimentation through Clients' Eyes
Experimentation through Clients' Eyes
 
Shipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHubShipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHub
 
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature Delivery
 
The Future of Software Development
The Future of Software DevelopmentThe Future of Software Development
The Future of Software Development
 
Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De...
Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De...Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De...
Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De...
 
Run High Impact Experimentation with High-quality Customer Discovery
Run High Impact Experimentation with High-quality Customer DiscoveryRun High Impact Experimentation with High-quality Customer Discovery
Run High Impact Experimentation with High-quality Customer Discovery
 
Using Empathy to Build Custom Solutions at Scale
Using Empathy to Build Custom Solutions at ScaleUsing Empathy to Build Custom Solutions at Scale
Using Empathy to Build Custom Solutions at Scale
 

Recently uploaded

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
"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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
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
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
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
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Recently uploaded (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
"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
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
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
 
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
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
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
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
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
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
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
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

Experimentation at Blue Apron (webinar)

  • 1. A Developer’s Guide to Full Stack Experimentation John Cline Senior Engineering Manager, Blue Apron
  • 2. • The presentation deck and recording will be made available to you after the event. • Feel free to ask questions during the presentation by using the ‘Questions’ box on your viewing control panel. Housekeeping
  • 3. John Cline Sr. Engineering Manager Blue Apron Today’s Presenter
  • 5. John Cline Engineering Lead, Growth/Member Experience February 1, 2018 Experimentation @ Blue Apron
  • 6. 6 Who am I? ►Engineering Lead for Growth/Member Experience Teams ►Growth owns: − Marketing/landing pages − Registration/reactivation − Referral program − Experimentation, tracking, and email integrations ►Started at Blue Apron in August 2016 I’m online at @clinejj
  • 7. 7 Overview ►The Early Days ►Unique Challenges ►Let’s Talk Solutions ►Getting Testy ►Next Steps 7
  • 9. 9 The Early Days Prior to ~Aug 2016, experimentation was done only with Optimizely Web. ►Pros − Easy for non-technical users to create and launch tests − Worked well with our SPA ►Cons − Only worked with client side changes − Could not populate events in Optimizely results view with backend events This worked pretty well, but... 9
  • 11. 11 Unique Challenges Blue Apron is a unique business. We’re the first meal-kit company to launch in the US, and a few things make our form of e-commerce a bit more challenging than other companies selling products online: ►We currently offer recurring meal plans (our customers get 2-4 recipes every week unless they skip/cancel) ►We have seasonal recipes and a freshness guarantee ►We (currently) have a six day cutoff for changing your order ►We have multiple fulfillment and delivery methods ►We support customers across web, iOS, and Android It’s possible for a customer to sign up for a plan and then never have a need to log in to our digital product or contact support again. That makes it hard to rely on a client-side only testing setup.
  • 12. 12 Unique Challenges Scheduled backend jobs power many critical parts of our business. A client side solution wouldn’t give us flexibility to test this business logic.
  • 13. 13 Unique Challenges Because of our unique business model, our KPIs for most tests require long term evaluation. Besides conversion and engagement, we also look at: ►Cohorted LTV by registration week (including accounting for acquisition costs) ►Order rate: What % of weeks has a customer ordered? ►Performance relative to various user segments − Referral vs non-referral − Two person plan vs four person plan − Zip code Tracking these KPIs required someone on our analytics team to run the analysis (anywhere from 2-4 weeks), creating a bottleneck to see test results.
  • 15. 15 Enter Optimizely Full Stack Around this time, Optimizely Full Stack was released and targeted precisely at our use case. We looked into open source frameworks (eg Sixpack, Wasabi) but needed something with less of a maintenance cost. Our team also already knew how to use the product. We looked at feature flag frameworks (like Flipper), but needed something for the experimentation use case (vs a feature flag). Our main application is a Ruby/Rails app, so we wrote a thin singleton wrapper for the Full Stack Ruby gem, which helped us support different environments and handle errors. 15
  • 16. 16 Integrating with Full Stack We already had some pieces in place that made integration easier: ►An internal concept of an experiment in our data model − A site test has many variations which each have many users ►API for clients to log variation status to our internal system ►Including test variation information in our eventing frameworks (GA and Amplitude) These helped ensure we had a good data pipeline to tag users and events for further analysis when required.
  • 17. 17 Integrating with Full Stack The Optimizely results dashboard made it easy to get early directional decisions on whether to stop/ramp a test, while our wrapper gave us the information needed for a deeper analysis. We wrote a wrapper service around the Optimizely client to integrate with our existing site test data model to log bucketing results for analytics purposes. We added an asynchronous event reporter for reporting events to Optimizely (runs in our background job processor). Currently, the Optimizely datafile is only downloaded on application startup.
  • 20. 20 Testing with Full Stack Creating a test in our application is fairly straightforward: 1. Run a migration to create the test/variations in our data model class SiteTestVariationsForMyTest < ActiveRecord::Migration def self.up site_test = SiteTest.create!( name: 'My Test', experiment_id: 'my-test', is_active: false ) site_test.site_test_variations.create!( variation_name: 'Control', variation_id: 'my-test-control' ) site_test.site_test_variations.create!( variation_name: 'Variation', variation_id: 'my-test-variation' ) end def self.down raise ActiveRecord::IrreversibleMigration end end
  • 21. 21 Testing with Full Stack 2. Create a testing service to wrap bucketing logic module SiteTests class MyTestingService include Experimentable def initialize(user) @user = user end def run_experiment return unless user_valid? return if bucket.blank? # Take actions on the user end private def user_valid? # does user meet criteria for test (could also be handled with audiences) end def bucket @variation_id ||= testing_service.bucket_user(@user) end end end
  • 22. 22 Testing with Full Stack 3. Bucket users SiteTests::MyTestingService.new(user).run_experiment 3. Read variation status @user&.active_site_test_variation_ids.to_a We generally bucket users at account creation or through an API call to our configurations API (returns feature status/configurations for a user).
  • 23. 23 Testing with Full Stack Some tests that we’ve run since integrating: ►New post-registration onboarding flow ►Second box reminder email ►More recipes/plan options ►New delivery schedule ►New reactivation experience These helped ensure we had a good data pipeline to tag users and events for further analysis when required. 23
  • 24. 24 Testing with Full Stack More recipes/plan options Control Test
  • 25. 25 Testing with Full Stack Control Test More recipes/plan options
  • 26. 26 Testing with Full Stack Results from more recipes/plan options test:
  • 28. 28 Results from new reactivation flow test: Testing with Full Stack
  • 30. 30 Feature Flagging vs Experimentation There is a lot of overlap between each, but they both have different user groups. ►Feature flagging − Primary user is engineering/product − May be used for a variety of reasons (enabling a new service, fallback behavior, or a user feature) ►Experimentation − Primary user is product/analytics − Care about being able to track through other metrics/events − Generally focused on customer impacting features As a developer, I don’t care if a feature is enabled via a flag or a test. I only care about knowing how to enable/disable something. As a PM or Analyst, I likely care more about experiments than feature flags (although I’d want to audit both).
  • 31. 31 Feature Flagging vs Experimentation We use two separate tools for feature flagging: Open Source Optimizely (GitHub Platform Team) Full Stack GOAL: Create a single source of truth and with an easier to use dashboard for setting up features. 31
  • 32. 32 Feature Flagging vs Experimentation Rough plan: ►Expose “feature configuration” to clients through API (both internal code structure and our REST API) − List of enabled features and any configuration parameters ►Consolidate features to be enabled if flipper || optimizely ►Add administration panel to create features/configurations and test or roll them out ►Support better cross-platform testing − App version targeting − User segmentation − “Global holdback” − Mutually exclusive tests Why do we still use flipper? Local, and changes occur instantly. Better for arbitrary % rollouts (vs the more heavyweight enablement through Optimizely).
  • 33. 33 Feature Management Optimizely Full Stack just launched a new feature management system. It supports: ►Defining a feature configuration − A feature is a set of boolean/double/integer/string parameters − Can modify parameters by variation (or rollout) ►Enabling a feature in an experiment variation or rolling out to % /audience We’re still testing it, but looks promising (and being able to update variables without rolling code is incredibly helpful). 33
  • 34. 34 Tech Debt We are still developing general guidelines for engineers on how to set up tests, particularly around which platform to implement and how to implement (we use Optimizely Web, Full Stack, iOS, Android, and have Flipper for server side gating). As we do more testing, we enable more features, which makes our code more complex. On a quarterly-ish basis, we go through and clean up unused tests (or do so when launching). You should definitely have a philosophy on feature flags and tech debt cleanup.
  • 35. 35 Things to Think About Optimizely specifically: ►Environments − Currently have each environment (dev/staging/production) as separate Optimizely projects - makes it difficult to copy tests between each environment ►Cross Platform Testing − If serving multiple platforms, need server managed solution (even if just driving client-only changes) to ensure consistent experience 35
  • 36. 36 Things to Think About At the end of the day, who are the users of your feature/experimentation platform? ►Testing gives you insights into user behavior - what are you going to do with that? ►How do you measure your KPIs? ►How do you make decisions? ►What’s the developer experience like? 36