Optimizely NYC Developer Meetup - Experimentation at Blue Apron

Optimizely
OptimizelyContent Marketing Manager at Optimizely
John Cline
Engineering Lead, Growth
November 7, 2017
Experimentation @ Blue Apron
2
Who am I?
►Engineering Lead for Growth Team
►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
3
Overview
►The Early Days
►Unique Challenges
►Let’s Talk Solutions
►Getting Testy
►Next Steps
3
4
The Early Days
5
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...
5
6
Challenges
7
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.
8
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.
9
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.
10
The Solution
11
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.
11
12
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.
13
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.
14
Integrating with Full Stack
15
Getting Testy
16
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
17
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
18
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).
19
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.
19
20
Testing with Full Stack
More recipes/plan options
Control Test
21
Testing with Full Stack
Control Test
More recipes/plan options
22
Testing with Full Stack
Results from more recipes/plan options test:
23
New Reactivation Flow
Testing with Full Stack
24
Results from new reactivation flow test:
Testing with Full Stack
25
Next Steps
26
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).
27
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.
27
28
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).
29
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).
29
30
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.
31
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
31
32
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?
32
33
Questions?
http://blueapron.io
1 of 33

Recommended

Developer Night Opticon 2017 by
Developer Night Opticon 2017Developer Night Opticon 2017
Developer Night Opticon 2017Optimizely
1.1K views124 slides
Developer Night - Opticon18 by
Developer Night - Opticon18Developer Night - Opticon18
Developer Night - Opticon18Optimizely
535 views143 slides
Opticon 2017 How Developers Can Take Experimentation by
Opticon 2017 How Developers Can Take ExperimentationOpticon 2017 How Developers Can Take Experimentation
Opticon 2017 How Developers Can Take ExperimentationOptimizely
609 views35 slides
7 Habits of Highly Effective Personalisation Organisations | Optimizely ANZ W... by
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
384 views79 slides
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle by
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
370 views42 slides
Opticon 2017 Decisions at Scale by
Opticon 2017 Decisions at ScaleOpticon 2017 Decisions at Scale
Opticon 2017 Decisions at ScaleOptimizely
573 views59 slides

More Related Content

What's hot

[Webinar] Innovate Faster by Adopting The Modern Growth Stack by
[Webinar] Innovate Faster by Adopting The Modern Growth Stack[Webinar] Innovate Faster by Adopting The Modern Growth Stack
[Webinar] Innovate Faster by Adopting The Modern Growth StackOptimizely
571 views107 slides
Opticon 2017 Experimenting in Modern Web Applications by
Opticon 2017 Experimenting in Modern Web ApplicationsOpticon 2017 Experimenting in Modern Web Applications
Opticon 2017 Experimenting in Modern Web ApplicationsOptimizely
634 views73 slides
Getting Started with Server-Side Testing by
Getting Started with Server-Side TestingGetting Started with Server-Side Testing
Getting Started with Server-Side TestingOptimizely
1.7K views35 slides
Test Everything: TrustRadius Delivers Customer Value with Experimentation by
Test Everything: TrustRadius Delivers Customer Value with ExperimentationTest Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with ExperimentationOptimizely
497 views28 slides
Creating an Effective A/B Testing Strategy for App Stores by
Creating an Effective A/B Testing Strategy for App StoresCreating an Effective A/B Testing Strategy for App Stores
Creating an Effective A/B Testing Strategy for App StoresSplitMetrics
114 views18 slides
Opticon 2017 Day in the Life of a Modern Experimenter by
Opticon 2017 Day in the Life of a Modern ExperimenterOpticon 2017 Day in the Life of a Modern Experimenter
Opticon 2017 Day in the Life of a Modern ExperimenterOptimizely
417 views24 slides

What's hot(20)

[Webinar] Innovate Faster by Adopting The Modern Growth Stack by Optimizely
[Webinar] Innovate Faster by Adopting The Modern Growth Stack[Webinar] Innovate Faster by Adopting The Modern Growth Stack
[Webinar] Innovate Faster by Adopting The Modern Growth Stack
Optimizely571 views
Opticon 2017 Experimenting in Modern Web Applications by Optimizely
Opticon 2017 Experimenting in Modern Web ApplicationsOpticon 2017 Experimenting in Modern Web Applications
Opticon 2017 Experimenting in Modern Web Applications
Optimizely634 views
Getting Started with Server-Side Testing by Optimizely
Getting Started with Server-Side TestingGetting Started with Server-Side Testing
Getting Started with Server-Side Testing
Optimizely1.7K views
Test Everything: TrustRadius Delivers Customer Value with Experimentation by Optimizely
Test Everything: TrustRadius Delivers Customer Value with ExperimentationTest Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with Experimentation
Optimizely497 views
Creating an Effective A/B Testing Strategy for App Stores by SplitMetrics
Creating an Effective A/B Testing Strategy for App StoresCreating an Effective A/B Testing Strategy for App Stores
Creating an Effective A/B Testing Strategy for App Stores
SplitMetrics114 views
Opticon 2017 Day in the Life of a Modern Experimenter by Optimizely
Opticon 2017 Day in the Life of a Modern ExperimenterOpticon 2017 Day in the Life of a Modern Experimenter
Opticon 2017 Day in the Life of a Modern Experimenter
Optimizely417 views
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen... by Optimizely
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...
Optimizely336 views
Ahead of the Curve: How 23andMe Improved UX with Performance Edge by Optimizely
Ahead of the Curve: How 23andMe Improved UX with Performance EdgeAhead of the Curve: How 23andMe Improved UX with Performance Edge
Ahead of the Curve: How 23andMe Improved UX with Performance Edge
Optimizely356 views
Improve your content: The What, Why, Where and How about A/B Testing by introtodigital
Improve your content: The What, Why, Where and How about A/B TestingImprove your content: The What, Why, Where and How about A/B Testing
Improve your content: The What, Why, Where and How about A/B Testing
introtodigital326 views
The Future of Optimizely for Technical Teams by Optimizely
The Future of Optimizely for Technical TeamsThe Future of Optimizely for Technical Teams
The Future of Optimizely for Technical Teams
Optimizely351 views
The Optimizely Experience Keynote by Matt Althauser - Optimizely Experience L... by Optimizely
The Optimizely Experience Keynote by Matt Althauser - Optimizely Experience L...The Optimizely Experience Keynote by Matt Althauser - Optimizely Experience L...
The Optimizely Experience Keynote by Matt Althauser - Optimizely Experience L...
Optimizely1.6K views
Optimizely Agent: Scaling Resilient Feature Delivery by Optimizely
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely409 views
Optimizely Experience Customer Story - Atlassian by Optimizely
Optimizely Experience Customer Story - AtlassianOptimizely Experience Customer Story - Atlassian
Optimizely Experience Customer Story - Atlassian
Optimizely1.4K views
4 Steps Toward Scientific A/B Testing by Janessa Lantz
4 Steps Toward Scientific A/B Testing4 Steps Toward Scientific A/B Testing
4 Steps Toward Scientific A/B Testing
Janessa Lantz11.9K views
SAMPLE SIZE – The indispensable A/B test calculation that you’re not making by Zack Notes
SAMPLE SIZE – The indispensable A/B test calculation that you’re not makingSAMPLE SIZE – The indispensable A/B test calculation that you’re not making
SAMPLE SIZE – The indispensable A/B test calculation that you’re not making
Zack Notes2.3K views
Optimizely Partner Ecosystem by Optimizely
Optimizely Partner EcosystemOptimizely Partner Ecosystem
Optimizely Partner Ecosystem
Optimizely1.1K views
How to get Automated Testing "Done" by TEST Huddle
How to get Automated Testing "Done"How to get Automated Testing "Done"
How to get Automated Testing "Done"
TEST Huddle906 views
Streamlining Automation Scripts and Test Data Management by QASymphony
Streamlining Automation Scripts and Test Data ManagementStreamlining Automation Scripts and Test Data Management
Streamlining Automation Scripts and Test Data Management
QASymphony 2.4K views
Building A Testing Culture At Autodesk by Mari Ju
Building A Testing Culture At AutodeskBuilding A Testing Culture At Autodesk
Building A Testing Culture At Autodesk
Mari Ju266 views

Similar to Optimizely NYC Developer Meetup - Experimentation at Blue Apron

Experimentation at Blue Apron (webinar) by
Experimentation at Blue Apron (webinar)Experimentation at Blue Apron (webinar)
Experimentation at Blue Apron (webinar)Optimizely
842 views37 slides
Agile case studies by
Agile case studiesAgile case studies
Agile case studiesSébastien Donné
408 views26 slides
Continuous Performance Testing: The New Standard by
Continuous Performance Testing: The New StandardContinuous Performance Testing: The New Standard
Continuous Performance Testing: The New StandardTechWell
887 views65 slides
The Importance of Performance Testing Theory and Practice - QueBIT Consulting... by
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
492 views21 slides
Neste: How to Build Business Case, Ramp-up and Run SAP Test Automation Factory by
Neste: How to Build Business Case, Ramp-up and Run SAP Test Automation FactoryNeste: How to Build Business Case, Ramp-up and Run SAP Test Automation Factory
Neste: How to Build Business Case, Ramp-up and Run SAP Test Automation FactorySogeti Nederland B.V.
280 views16 slides
Performance Testing in Agile Process by
Performance Testing in Agile ProcessPerformance Testing in Agile Process
Performance Testing in Agile ProcessIdexcel Technologies
2.7K views15 slides

Similar to Optimizely NYC Developer Meetup - Experimentation at Blue Apron(20)

Experimentation at Blue Apron (webinar) by Optimizely
Experimentation at Blue Apron (webinar)Experimentation at Blue Apron (webinar)
Experimentation at Blue Apron (webinar)
Optimizely842 views
Continuous Performance Testing: The New Standard by TechWell
Continuous Performance Testing: The New StandardContinuous Performance Testing: The New Standard
Continuous Performance Testing: The New Standard
TechWell887 views
The Importance of Performance Testing Theory and Practice - QueBIT Consulting... by 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 Consulting492 views
Neste: How to Build Business Case, Ramp-up and Run SAP Test Automation Factory by Sogeti Nederland B.V.
Neste: How to Build Business Case, Ramp-up and Run SAP Test Automation FactoryNeste: How to Build Business Case, Ramp-up and Run SAP Test Automation Factory
Neste: How to Build Business Case, Ramp-up and Run SAP Test Automation Factory
Use Automation to Assist—Not Replace—Manual Testing by TechWell
Use Automation to Assist—Not Replace—Manual TestingUse Automation to Assist—Not Replace—Manual Testing
Use Automation to Assist—Not Replace—Manual Testing
TechWell44 views
Performance engineering10042915 by Deepti Bhutani
Performance engineering10042915Performance engineering10042915
Performance engineering10042915
Deepti Bhutani426 views
Pay pal paypal continuous performance as a self-service with fully-automated... by Dynatrace
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...
Dynatrace301 views
Qtp questions and answers by Ramu Palanki
Qtp questions and answersQtp questions and answers
Qtp questions and answers
Ramu Palanki604 views
Qtp interview questions and answers by Ramu Palanki
Qtp interview questions and answersQtp interview questions and answers
Qtp interview questions and answers
Ramu Palanki1.6K views
Qtp interview questions and answers by Ramu Palanki
Qtp interview questions and answersQtp interview questions and answers
Qtp interview questions and answers
Ramu Palanki3K views
What are the features in qtp by Ramu Palanki
What are the features in qtpWhat are the features in qtp
What are the features in qtp
Ramu Palanki1.8K views
Testing Attributes by Abiha Naqvi
Testing AttributesTesting Attributes
Testing Attributes
Abiha Naqvi199 views
2.1 Automation Nation: Keeping your Process Builders in Check by TargetX
2.1 Automation Nation: Keeping your Process Builders in Check2.1 Automation Nation: Keeping your Process Builders in Check
2.1 Automation Nation: Keeping your Process Builders in Check
TargetX726 views
Intuit - How to Scale Your Experimentation Program by Optimizely
Intuit - How to Scale Your Experimentation ProgramIntuit - How to Scale Your Experimentation Program
Intuit - How to Scale Your Experimentation Program
Optimizely531 views
Test Metrics in Agile - powerful tool to support changes - Zavertailo Iuliia by Yulia Zavertailo
Test Metrics in Agile - powerful tool to support changes - Zavertailo IuliiaTest Metrics in Agile - powerful tool to support changes - Zavertailo Iuliia
Test Metrics in Agile - powerful tool to support changes - Zavertailo Iuliia
Yulia Zavertailo439 views
Test Metrics in Agile: A Powerful Tool to Demonstrate Value by TechWell
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
TechWell268 views
Driving Agile Product Development with Experimentation by Split Software
Driving Agile Product Development with ExperimentationDriving Agile Product Development with Experimentation
Driving Agile Product Development with Experimentation
Split Software624 views

More from Optimizely

Clover Rings Up Digital Growth to Drive Experimentation by
Clover Rings Up Digital Growth to Drive ExperimentationClover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive ExperimentationOptimizely
1.6K views28 slides
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W... by
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
547 views26 slides
The Science of Getting Testing Right by
The Science of Getting Testing RightThe Science of Getting Testing Right
The Science of Getting Testing RightOptimizely
1.1K views21 slides
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too... by
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
410 views19 slides
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue by
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
415 views23 slides
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti... by
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
288 views12 slides

More from Optimizely(20)

Clover Rings Up Digital Growth to Drive Experimentation by Optimizely
Clover Rings Up Digital Growth to Drive ExperimentationClover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive Experimentation
Optimizely1.6K views
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W... by Optimizely
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...
Optimizely547 views
The Science of Getting Testing Right by Optimizely
The Science of Getting Testing RightThe Science of Getting Testing Right
The Science of Getting Testing Right
Optimizely1.1K views
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too... by 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...
Optimizely410 views
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue by Optimizely
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
Optimizely415 views
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti... by Optimizely
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...
Optimizely288 views
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an... by 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...
Optimizely409 views
Building an Experiment Pipeline for GitHub’s New Free Team Offering by Optimizely
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
Optimizely272 views
Evolving Experimentation from CRO to Product Development by Optimizely
Evolving Experimentation from CRO to Product DevelopmentEvolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product Development
Optimizely365 views
Overcoming the Challenges of Experimentation on a Service Oriented Architecture by Optimizely
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
Optimizely227 views
Making Your Hypothesis Work Harder to Inform Future Product Strategy by Optimizely
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
Optimizely318 views
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue by Optimizely
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
Optimizely414 views
Experimentation through Clients' Eyes by Optimizely
Experimentation through Clients' EyesExperimentation through Clients' Eyes
Experimentation through Clients' Eyes
Optimizely299 views
Shipping to Learn and Accelerate Growth with GitHub by Optimizely
Shipping to Learn and Accelerate Growth with GitHubShipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHub
Optimizely373 views
The Future of Software Development by Optimizely
The Future of Software DevelopmentThe Future of Software Development
The Future of Software Development
Optimizely248 views
Practical Use Case: How Dosh Uses Feature Experiments To Accelerate Mobile De... by Optimizely
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...
Optimizely235 views
Run High Impact Experimentation with High-quality Customer Discovery by Optimizely
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
Optimizely386 views
Using Empathy to Build Custom Solutions at Scale by Optimizely
Using Empathy to Build Custom Solutions at ScaleUsing Empathy to Build Custom Solutions at Scale
Using Empathy to Build Custom Solutions at Scale
Optimizely234 views
How to find data insights that will drive a 10X impact by Optimizely
How to find data insights that will drive a 10X impact How to find data insights that will drive a 10X impact
How to find data insights that will drive a 10X impact
Optimizely370 views
Targeted Rollouts: How to Release Features to Multiple Audiences by Optimizely
Targeted Rollouts: How to Release Features to Multiple AudiencesTargeted Rollouts: How to Release Features to Multiple Audiences
Targeted Rollouts: How to Release Features to Multiple Audiences
Optimizely225 views

Recently uploaded

Melek BEN MAHMOUD.pdf by
Melek BEN MAHMOUD.pdfMelek BEN MAHMOUD.pdf
Melek BEN MAHMOUD.pdfMelekBenMahmoud
14 views1 slide
Java Platform Approach 1.0 - Picnic Meetup by
Java Platform Approach 1.0 - Picnic MeetupJava Platform Approach 1.0 - Picnic Meetup
Java Platform Approach 1.0 - Picnic MeetupRick Ossendrijver
25 views39 slides
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...NUS-ISS
28 views70 slides
SAP Automation Using Bar Code and FIORI.pdf by
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdfVirendra Rai, PMP
19 views38 slides
AI: mind, matter, meaning, metaphors, being, becoming, life values by
AI: mind, matter, meaning, metaphors, being, becoming, life valuesAI: mind, matter, meaning, metaphors, being, becoming, life values
AI: mind, matter, meaning, metaphors, being, becoming, life valuesTwain Liu 刘秋艳
35 views16 slides
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum... by
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...NUS-ISS
34 views35 slides

Recently uploaded(20)

Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by NUS-ISS
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
NUS-ISS28 views
SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
AI: mind, matter, meaning, metaphors, being, becoming, life values by Twain Liu 刘秋艳
AI: mind, matter, meaning, metaphors, being, becoming, life valuesAI: mind, matter, meaning, metaphors, being, becoming, life values
AI: mind, matter, meaning, metaphors, being, becoming, life values
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum... by NUS-ISS
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...
NUS-ISS34 views
The Importance of Cybersecurity for Digital Transformation by NUS-ISS
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital Transformation
NUS-ISS27 views
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by Splunk
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
Splunk88 views
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor... by Vadym Kazulkin
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
Vadym Kazulkin75 views
Combining Orchestration and Choreography for a Clean Architecture by ThomasHeinrichs1
Combining Orchestration and Choreography for a Clean ArchitectureCombining Orchestration and Choreography for a Clean Architecture
Combining Orchestration and Choreography for a Clean Architecture
ThomasHeinrichs169 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi120 views
Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10209 views
Black and White Modern Science Presentation.pptx by maryamkhalid2916
Black and White Modern Science Presentation.pptxBlack and White Modern Science Presentation.pptx
Black and White Modern Science Presentation.pptx
maryamkhalid291614 views
Perth MeetUp November 2023 by Michael Price
Perth MeetUp November 2023 Perth MeetUp November 2023
Perth MeetUp November 2023
Michael Price15 views
.conf Go 2023 - Data analysis as a routine by Splunk
.conf Go 2023 - Data analysis as a routine.conf Go 2023 - Data analysis as a routine
.conf Go 2023 - Data analysis as a routine
Splunk93 views
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software225 views
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu... by NUS-ISS
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
NUS-ISS37 views
How the World's Leading Independent Automotive Distributor is Reinventing Its... by NUS-ISS
How the World's Leading Independent Automotive Distributor is Reinventing Its...How the World's Leading Independent Automotive Distributor is Reinventing Its...
How the World's Leading Independent Automotive Distributor is Reinventing Its...
NUS-ISS15 views

Optimizely NYC Developer Meetup - Experimentation at Blue Apron

  • 1. John Cline Engineering Lead, Growth November 7, 2017 Experimentation @ Blue Apron
  • 2. 2 Who am I? ►Engineering Lead for Growth Team ►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
  • 3. 3 Overview ►The Early Days ►Unique Challenges ►Let’s Talk Solutions ►Getting Testy ►Next Steps 3
  • 5. 5 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... 5
  • 7. 7 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.
  • 8. 8 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.
  • 9. 9 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.
  • 11. 11 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. 11
  • 12. 12 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.
  • 13. 13 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.
  • 16. 16 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
  • 17. 17 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
  • 18. 18 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).
  • 19. 19 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. 19
  • 20. 20 Testing with Full Stack More recipes/plan options Control Test
  • 21. 21 Testing with Full Stack Control Test More recipes/plan options
  • 22. 22 Testing with Full Stack Results from more recipes/plan options test:
  • 24. 24 Results from new reactivation flow test: Testing with Full Stack
  • 26. 26 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).
  • 27. 27 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. 27
  • 28. 28 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).
  • 29. 29 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). 29
  • 30. 30 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.
  • 31. 31 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 31
  • 32. 32 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? 32