SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
www.immobilienscout24.de




Customer‘s 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
           Slideshare: hosgel


           developer @ ImmobilienScout24




                                                     Page 2
           moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel


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




                                                         Page 4
               moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Design Variants




                                                            Page 5
                  moosecon 2013 | Customer‘s Choice | Hasan Hosgel
User Test




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




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




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




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




                                                                                                            Page 10
Source: http://www.flickr.com/photos/8047705@N02/5366637592/       moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
The Development




                                                                                                        Page 12
Source: http://www.flickr.com/photos/geminidustin/275375865/   moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Developer’s 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 | Customer‘s Choice | Hasan Hosgel
Smarter Solution
The library Customer’s Choice
with a common approach
Customer’s 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 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
Usage



●  Will an exception be raised?




                                                                           Page 17
                                  moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage



●  Will an exception be raised?
  "   No




                                                                           Page 18
                                  moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage



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




                                                                               Page 19
                                      moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage



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




                                                                               Page 20
                                      moosecon 2013 | Customer‘s Choice | Hasan Hosgel
Usage



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




                                                                               Page 21
                                      moosecon 2013 | Customer‘s 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 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
Variant’s 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 – Boolean for resetting all variants
                                                                           Page 24
                                  moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
Demo time
Showing code samples
Demo Application




                                                            Page 27
                   moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
Q&A




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


Thanks for your attention!
We are hiring!
Contact:

Hasan Hosgel               Customer‘s Choice
Twitter: @alosdev          Repo:       https://github.com/alosdev/CustomersChoice
Github: alosdev            SlideShare: http://de.slideshare.net/hosgel/moosecon-2013-customerschoice

Weitere ähnliche Inhalte

Mehr von Heinrich Seeger

Dennis hoppe droidcon_2014_slide_deck_screen
Dennis hoppe droidcon_2014_slide_deck_screenDennis hoppe droidcon_2014_slide_deck_screen
Dennis hoppe droidcon_2014_slide_deck_screenHeinrich Seeger
 
Moosecon rcs for developers
Moosecon   rcs for developersMoosecon   rcs for developers
Moosecon rcs for developersHeinrich Seeger
 
Mobile apps on the big screen
Mobile apps on the big screenMobile apps on the big screen
Mobile apps on the big screenHeinrich Seeger
 
Push notification generaltalk
Push notification generaltalkPush notification generaltalk
Push notification generaltalkHeinrich Seeger
 
Backendasaservice apiomat
Backendasaservice apiomatBackendasaservice apiomat
Backendasaservice apiomatHeinrich Seeger
 
Push notification technicaltalk
Push notification technicaltalkPush notification technicaltalk
Push notification technicaltalkHeinrich Seeger
 
Crowdshare, Secure Resource Sharing in Mobile Crowds
Crowdshare, Secure Resource Sharing in Mobile CrowdsCrowdshare, Secure Resource Sharing in Mobile Crowds
Crowdshare, Secure Resource Sharing in Mobile CrowdsHeinrich Seeger
 
Moosecon native apps_blackberry_10-optimized
Moosecon native apps_blackberry_10-optimizedMoosecon native apps_blackberry_10-optimized
Moosecon native apps_blackberry_10-optimizedHeinrich Seeger
 
Mooscon 2013 cebit - google integration in android apps (1)
Mooscon 2013   cebit - google integration in android apps (1)Mooscon 2013   cebit - google integration in android apps (1)
Mooscon 2013 cebit - google integration in android apps (1)Heinrich Seeger
 
Dev mobile apps ent it final
Dev mobile apps ent   it finalDev mobile apps ent   it final
Dev mobile apps ent it finalHeinrich Seeger
 

Mehr von Heinrich Seeger (12)

Dennis hoppe droidcon_2014_slide_deck_screen
Dennis hoppe droidcon_2014_slide_deck_screenDennis hoppe droidcon_2014_slide_deck_screen
Dennis hoppe droidcon_2014_slide_deck_screen
 
Moosecon rcs for developers
Moosecon   rcs for developersMoosecon   rcs for developers
Moosecon rcs for developers
 
Mobile apps on the big screen
Mobile apps on the big screenMobile apps on the big screen
Mobile apps on the big screen
 
Push notification generaltalk
Push notification generaltalkPush notification generaltalk
Push notification generaltalk
 
Backendasaservice apiomat
Backendasaservice apiomatBackendasaservice apiomat
Backendasaservice apiomat
 
Paypal
PaypalPaypal
Paypal
 
Push notification technicaltalk
Push notification technicaltalkPush notification technicaltalk
Push notification technicaltalk
 
Crowdshare, Secure Resource Sharing in Mobile Crowds
Crowdshare, Secure Resource Sharing in Mobile CrowdsCrowdshare, Secure Resource Sharing in Mobile Crowds
Crowdshare, Secure Resource Sharing in Mobile Crowds
 
Moosecon native apps_blackberry_10-optimized
Moosecon native apps_blackberry_10-optimizedMoosecon native apps_blackberry_10-optimized
Moosecon native apps_blackberry_10-optimized
 
Mooscon 2013 cebit - google integration in android apps (1)
Mooscon 2013   cebit - google integration in android apps (1)Mooscon 2013   cebit - google integration in android apps (1)
Mooscon 2013 cebit - google integration in android apps (1)
 
Key2 share moosecon
Key2 share mooseconKey2 share moosecon
Key2 share moosecon
 
Dev mobile apps ent it final
Dev mobile apps ent   it finalDev mobile apps ent   it final
Dev mobile apps ent it final
 

Hasan hosgel moosecon_2013_customers_choice fullsize

  • 1. www.immobilienscout24.de Customer‘s 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 Slideshare: hosgel developer @ ImmobilienScout24 Page 2 moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel Source: http://www.flickr.com/photos/europedistrict/4292951182/
  • 4. First design Page 4 moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 5. Design Variants Page 5 moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 6. User Test page6 Source: http://www.flickr.com/photos/lwaldal/4900501706/ moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 7. User Test Results Page 7 Source: http://www.flickr.com/photos/couragextoxlive/3054488331/ moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 8. What now? Page 8 Source: http://www.flickr.com/photos/mkamp/2429091134/ moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
  • 10. Make an AB-Test Page 10 Source: http://www.flickr.com/photos/8047705@N02/5366637592/ moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
  • 12. The Development Page 12 Source: http://www.flickr.com/photos/geminidustin/275375865/ moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 13. Developer’s 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 | Customer‘s Choice | Hasan Hosgel
  • 14. Smarter Solution The library Customer’s Choice with a common approach
  • 15. Customer’s 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 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
  • 17. Usage ●  Will an exception be raised? Page 17 moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 18. Usage ●  Will an exception be raised? "   No Page 18 moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 19. Usage ●  Will an exception be raised? "   No ●  Will it have full functionality? Page 19 moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 20. Usage ●  Will an exception be raised? "   No ●  Will it have full functionality? "   Not really Page 20 moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 21. Usage ●  Will an exception be raised? "   No ●  Will it have full functionality? "   Not really ●  Why? Page 21 moosecon 2013 | Customer‘s 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 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
  • 24. Variant’s 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 – Boolean for resetting all variants Page 24 moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
  • 27. Demo Application Page 27 moosecon 2013 | Customer‘s 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 | Customer‘s Choice | Hasan Hosgel
  • 29. Q&A Page 29 Source: http://www.flickr.com/photos/21496790@N06/5065834411/ moosecon 2013 | Customer‘s Choice | Hasan Hosgel
  • 30. www.immobilienscout24.de Thanks for your attention! We are hiring! Contact: Hasan Hosgel Customer‘s Choice Twitter: @alosdev Repo: https://github.com/alosdev/CustomersChoice Github: alosdev SlideShare: http://de.slideshare.net/hosgel/moosecon-2013-customerschoice