Upload
hasan-hosgel
View
464
Download
1
Embed Size (px)
Citation preview
www.immobilienscout24.dewww.immobilienscout24.de
Customer‘s ChoiceLet the user decide, which is the best solution
moosecon | 07.03.2013 | Hasan Hosgel
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
About me
Hasan Hosgel
Twitter: @alosdevGithub: alosdevGoogle+: Hasan HosgelSlideshare: hosgel
developer @ ImmobilienScout24
Page 2
Agile Scenario
moosecon 2013 | Customer‘s Choice | Hasan HosgelPage 3
The Product Owner defines following user story:„As a user I want to purchase the products on a shopping card with a click on a button.“
Source: http://www.flickr.com/photos/europedistrict/4292951182/
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
First design
Page 4
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Design Variants
Page 5
User Test
moosecon 2013 | Customer‘s Choice | Hasan Hosgelpage6
Source: http://www.flickr.com/photos/lwaldal/4900501706/
User Test Results
moosecon 2013 | Customer‘s Choice | Hasan HosgelPage 7
Source: http://www.flickr.com/photos/couragextoxlive/3054488331/
moosecon 2013 | Customer‘s Choice | Hasan HosgelPage 8
Source: http://www.flickr.com/photos/mkamp/2429091134/
What now?
What now?What do we normally in the web?
moosecon 2013 | Customer‘s Choice | Hasan HosgelPage 9
Source: http://www.flickr.com/photos/mkamp/2429091134/
moosecon 2013 | Customer‘s Choice | Hasan HosgelPage 10
Source: http://www.flickr.com/photos/8047705@N02/5366637592/
Make an AB-Test
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
AB-Test for Android
Page 11
You have an application, which is probably publicly available.
Send an amount of users to another variant than the normal one.
Depending on success ratio you have the best suiting solution.
The Development
moosecon 2013 | Customer‘s Choice | Hasan HosgelPage 12
Source: http://www.flickr.com/photos/geminidustin/275375865/
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Developer’s Todo List
Page 13
●Create switches depending on the business logic●Create a proprietary solution
Not reusable
●Publish applicationWaiting for the results
●Remove switches and republish applicationWaiting that everybody updates to the new version
Smarter SolutionThe library Customer’s Choice with a common approach
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Customer’s Coice
Page 15
A lightweight Open Source Android library making simple AB-Tests in an application, which can be configured over the network.
Possible AB-Tests variants:●For layouts and positions●For colors●For workflows●For texts
https://github.com/alosdev/CustomersChoice
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage
Page 16
●Add the library (*.jar) to your project
●Configure your switch based on the variantCustomersChoice.getVariant(context,“VariantName”);
●When you reach your expected goal, report itCustomersChoice.reachesGoal(“VariantName”);
●done
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage
Page 17
●Will an exception be raised?
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage
Page 18
●Will an exception be raised?No
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage
Page 19
●Will an exception be raised?No
●Will it have full functionality?
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage
Page 20
●Will an exception be raised?No
●Will it have full functionality?Not really
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage
Page 21
●Will an exception be raised?No
●Will it have full functionality?Not really
●Why?
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage
Page 22
●Will an exception be raised?No
●Will it have full functionality?Not really
●Why?It is not configured, therefore #getVariant(String) will always return variant 1 for the given variant name
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Configuration of Variants
Page 23
●Through code● JSON String in resources●Configuration file on SD card●Configuration file in the network with standard caching
mechanism, like Etag- and Modified Since Header
●For testing purposes you can overwrite a variant with a broadcast intent
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Variant’s Attributes
Page 24
●name: String (required)●startTime: Integer in Milliseconds●endTime: Integer in Milliseconds●spreading: Integer array for ratio of different variants●reset: Boolean for resetting the current value {“variants”:[{
“name”:”VariantName”, “startTime”:768997,“endTime”:1022222, ”spreading”:[1,2,1],“reset”:true}, {…}
,…]}
Global Attribute: resetAll – reset all variants
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Extensibility
Page 25
You can write custom plugins for:● Logging●Reporting
You can fork the library on Github, make your changes and send a pull request.
https://github.com/alosdev/CustomersChoice
Demo timeShowing code samples
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Demo Application
Page 27
moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Attention
Page 28
source: http://i.imgur.com/h2JClux.jpg
Always make clear what and how to report for gaining the results you need. Otherwise you can get a comparison like the diagram.
Q & A
moosecon 2013 | Customer‘s Choice | Hasan HosgelPage 29
Source: http://www.flickr.com/photos/21496790@N06/5065834411/
www.immobilienscout24.dewww.immobilienscout24.de
Thanks for your attention!We are hiring!Contact:
Hasan HosgelTwitter: @alosdevGithub: alosdev
Customer‘s ChoiceRepo: https://github.com/alosdev/CustomersChoiceSlideShare: http://de.slideshare.net/hosgel/moosecon-2013-customerschoice