際際滷

際際滷Share a Scribd company logo
www.immobilienscout24.de




Customers Choice
Let the user decide, which is the best solution


moosecon | 07.03.2013 | Hasan Hosgel
About me


           Hasan Hosgel


           Twitter:            @alosdev
           Github:             alosdev
           Google+:            Hasan Hosgel
           際際滷share: hosgel


           developer @ ImmobilienScout24




                                                     Page 2
           moosecon 2013 | Customers Choice | Hasan Hosgel
Agile Scenario



     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.




                                                                                                            Page 3
                                                                  moosecon 2013 | Customers Choice | Hasan Hosgel


Source: http://www.flickr.com/photos/europedistrict/4292951182/
First design




                                                         Page 4
               moosecon 2013 | Customers Choice | Hasan Hosgel
Design Variants




                                                            Page 5
                  moosecon 2013 | Customers Choice | Hasan Hosgel
User Test




                                                                                                     page6
Source: http://www.flickr.com/photos/lwaldal/4900501706/   moosecon 2013 | Customers Choice | Hasan Hosgel
User Test Results




                                                                                                             Page 7
Source: http://www.flickr.com/photos/couragextoxlive/3054488331/   moosecon 2013 | Customers Choice | Hasan Hosgel
What now?




                                                                                                        Page 8
Source: http://www.flickr.com/photos/mkamp/2429091134/        moosecon 2013 | Customers Choice | Hasan Hosgel
What now?
               What do we normally in the web?




                                                                                                   Page 9
Source: http://www.flickr.com/photos/mkamp/2429091134/   moosecon 2013 | Customers Choice | Hasan Hosgel
Make an AB-Test




                                                                                                            Page 10
Source: http://www.flickr.com/photos/8047705@N02/5366637592/       moosecon 2013 | Customers Choice | Hasan Hosgel
AB-Test for Android


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.




                                                                       Page 11
                              moosecon 2013 | Customers Choice | Hasan Hosgel
The Development




                                                                                                        Page 12
Source: http://www.flickr.com/photos/geminidustin/275375865/   moosecon 2013 | Customers Choice | Hasan Hosgel
Developers Todo List


   Create switches depending on the business logic
   Create a proprietary solution
      Not reusable


   Publish application
      Waiting for the results


   Remove switches and republish application
      Waiting that everybody updates to the new version




                                                                             Page 13
                                    moosecon 2013 | Customers Choice | Hasan Hosgel
Smarter Solution
The library Customers Choice
with a common approach
Customers Coice


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

                                                                         Page 15
                                moosecon 2013 | Customers Choice | Hasan Hosgel
Usage


   Add the library (*.jar) to your project


   Configure your switch based on the variant
     CustomersChoice.getVariant(context,VariantName);


   When you reach your expected goal, report it
     CustomersChoice.reachesGoal(VariantName);


   done




                                                                             Page 16
                                    moosecon 2013 | Customers Choice | Hasan Hosgel
Usage


   Will an exception be raised?




                                                                            Page 17
                                   moosecon 2013 | Customers Choice | Hasan Hosgel
Usage


   Will an exception be raised?
      No




                                                                            Page 18
                                   moosecon 2013 | Customers Choice | Hasan Hosgel
Usage


   Will an exception be raised?
      No
   Will it have full functionality?




                                                                                Page 19
                                       moosecon 2013 | Customers Choice | Hasan Hosgel
Usage


   Will an exception be raised?
      No
   Will it have full functionality?
      Not really




                                                                                Page 20
                                       moosecon 2013 | Customers Choice | Hasan Hosgel
Usage


   Will an exception be raised?
      No
   Will it have full functionality?
      Not really
   Why?




                                                                                Page 21
                                       moosecon 2013 | Customers Choice | Hasan Hosgel
Usage


   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




                                                                                Page 22
                                       moosecon 2013 | Customers Choice | Hasan Hosgel
Configuration of Variants


   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




                                                                             Page 23
                                    moosecon 2013 | Customers Choice | Hasan Hosgel
Variants Attributes


   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
                                                                             Page 24
                                    moosecon 2013 | Customers Choice | Hasan Hosgel
Extensibility


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


                                                                             Page 25
                                    moosecon 2013 | Customers Choice | Hasan Hosgel
Demo time
Showing code samples
Demo Application




                                                            Page 27
                   moosecon 2013 | Customers Choice | Hasan Hosgel
Attention


Always make clear
what and how to
report for gaining the
results you need.
Otherwise you can get
a comparison like the
diagram.




                                    source: http://i.imgur.com/h2JClux.jpg




                                                                  Page 28
                         moosecon 2013 | Customers Choice | Hasan Hosgel
Q&A




                                                                                                         Page 29
Source: http://www.flickr.com/photos/21496790@N06/5065834411/   moosecon 2013 | Customers Choice | Hasan Hosgel
www.immobilienscout24.de


Thanks for your attention!
We are hiring!
Contact:

Hasan Hosgel               Customers Choice
Twitter: @alosdev          Repo:       https://github.com/alosdev/CustomersChoice
Github: alosdev            際際滷Share: http://de.slideshare.net/hosgel/moosecon-2013-customerschoice

More Related Content

Customer's Choice @ Moosecon 2013

  • 1. www.immobilienscout24.de Customers Choice Let the user decide, which is the best solution moosecon | 07.03.2013 | Hasan Hosgel
  • 2. About me Hasan Hosgel Twitter: @alosdev Github: alosdev Google+: Hasan Hosgel 際際滷share: hosgel developer @ ImmobilienScout24 Page 2 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 3. Agile Scenario 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. Page 3 moosecon 2013 | Customers Choice | Hasan Hosgel Source: http://www.flickr.com/photos/europedistrict/4292951182/
  • 4. First design Page 4 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 5. Design Variants Page 5 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 6. User Test page6 Source: http://www.flickr.com/photos/lwaldal/4900501706/ moosecon 2013 | Customers Choice | Hasan Hosgel
  • 7. User Test Results Page 7 Source: http://www.flickr.com/photos/couragextoxlive/3054488331/ moosecon 2013 | Customers Choice | Hasan Hosgel
  • 8. What now? Page 8 Source: http://www.flickr.com/photos/mkamp/2429091134/ moosecon 2013 | Customers Choice | Hasan Hosgel
  • 9. What now? What do we normally in the web? Page 9 Source: http://www.flickr.com/photos/mkamp/2429091134/ moosecon 2013 | Customers Choice | Hasan Hosgel
  • 10. Make an AB-Test Page 10 Source: http://www.flickr.com/photos/8047705@N02/5366637592/ moosecon 2013 | Customers Choice | Hasan Hosgel
  • 11. AB-Test for Android 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. Page 11 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 12. The Development Page 12 Source: http://www.flickr.com/photos/geminidustin/275375865/ moosecon 2013 | Customers Choice | Hasan Hosgel
  • 13. Developers Todo List Create switches depending on the business logic Create a proprietary solution Not reusable Publish application Waiting for the results Remove switches and republish application Waiting that everybody updates to the new version Page 13 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 14. Smarter Solution The library Customers Choice with a common approach
  • 15. Customers Coice 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 Page 15 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 16. Usage Add the library (*.jar) to your project Configure your switch based on the variant CustomersChoice.getVariant(context,VariantName); When you reach your expected goal, report it CustomersChoice.reachesGoal(VariantName); done Page 16 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 17. Usage Will an exception be raised? Page 17 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 18. Usage Will an exception be raised? No Page 18 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 19. Usage Will an exception be raised? No Will it have full functionality? Page 19 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 20. Usage Will an exception be raised? No Will it have full functionality? Not really Page 20 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 21. Usage Will an exception be raised? No Will it have full functionality? Not really Why? Page 21 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 22. Usage 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 Page 22 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 23. Configuration of Variants 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 Page 23 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 24. Variants Attributes 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 Page 24 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 25. Extensibility 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 Page 25 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 27. Demo Application Page 27 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 28. Attention Always make clear what and how to report for gaining the results you need. Otherwise you can get a comparison like the diagram. source: http://i.imgur.com/h2JClux.jpg Page 28 moosecon 2013 | Customers Choice | Hasan Hosgel
  • 29. Q&A Page 29 Source: http://www.flickr.com/photos/21496790@N06/5065834411/ moosecon 2013 | Customers Choice | Hasan Hosgel
  • 30. www.immobilienscout24.de Thanks for your attention! We are hiring! Contact: Hasan Hosgel Customers Choice Twitter: @alosdev Repo: https://github.com/alosdev/CustomersChoice Github: alosdev 際際滷Share: http://de.slideshare.net/hosgel/moosecon-2013-customerschoice