Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Red or Green? Let us test
Search
Dmytro Khmelenko
April 13, 2019
Programming
0
46
Red or Green? Let us test
Talk at GDG DevFest Pisa 2019
Dmytro Khmelenko
April 13, 2019
Tweet
Share
More Decks by Dmytro Khmelenko
See All by Dmytro Khmelenko
Securing Python Web Applications
dkhmelenko
0
34
Best of login experience
dkhmelenko
0
120
Best of sign in experience @ Droidcon Lisbon
dkhmelenko
0
120
A journey to smaller APK size
dkhmelenko
1
120
A journey to smaller apk size
dkhmelenko
0
68
How Git helps us with localization
dkhmelenko
0
110
Dagger.Android module
dkhmelenko
0
73
MVVM vs. MVP
dkhmelenko
0
55
Unit testing
dkhmelenko
0
50
Other Decks in Programming
See All in Programming
手戻りゼロ? Spec Driven Developmentとは@KAG AI week
tmhirai
1
190
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.2k
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
170
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
130
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
220
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
230
CSC307 Lecture 15
javiergs
PRO
0
240
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
890
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
3.5k
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1k
The Ralph Wiggum Loop: First Principles of Autonomous Development
sembayui
0
3.7k
株式会社 Sun terras カンパニーデック
sunterras
0
2.1k
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
We Have a Design System, Now What?
morganepeng
55
8k
Claude Code のすすめ
schroneko
67
220k
Accessibility Awareness
sabderemane
0
77
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
230
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
210
Transcript
Green or red? Let us test Dmytro Khmelenko Software Engineer
@ Freeletics
A/B test What is that? !2
!3
Original !4
Original Variation !5
Original Variation All users 50% 50% !6
Original Variation All users 50% 50% Winner !7
Production example 8
# 1 Purchase screen 9
Original Variation 10
Original Variation +30% Conversion rate 11
# 2 Main app screen 12
Original Variation 13
Original Variation +18% Conversion rate 14
# 3 Dark vs Light theme 15
Original Variation 16
Original Variation 17 -6% Conversion rate
A/B testing is good for your product 18
Know how 19
Remote Config 20
Remote config 21
Conditions 22
Conditions 23
Conditions 24
Conditions 25
Conditions 26
Remote config 27
Parameters 28
Feature flag 29
Feature flag 30
Feature flag 31
Firebase Remote Config App configuration 32
App configuration fun initRemoteConfig() { val remoteConfig = FirebaseRemoteConfig.getInstance() remoteConfig.fetch()
.addOnSuccessListener { remoteConfig.activateFetched() } } 33
App configuration fun initRemoteConfig() { val remoteConfig = FirebaseRemoteConfig.getInstance() val
configSettings = FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG) .build() remoteConfig.setConfigSettings(configSettings) remoteConfig.setDefaults(R.xml.remote_config_defaults) remoteConfig.fetch() .addOnSuccessListener { remoteConfig.activateFetched() } } 34
App configuration fun isFeatureEnabled(name: String): Boolean { return remoteConfig.getBoolean(name) }
35
App configuration fun isFeatureEnabled(name: String): Boolean { return remoteConfig.getBoolean(name) }
... if (isFeatureEnabled(“new_purchase_screen”)) { ... } 36
37
Firebase A/B Testing (beta) 38
Firebase A/B Testing 39
@dkhmelenko