SlideShare ist ein Scribd-Unternehmen logo
1 von 30
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 – reset 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

Andere mochten auch (7)

Mechanical Characterization of the Adobe and Their Relation with Vulnerability
Mechanical Characterization of the Adobe and Their Relation with VulnerabilityMechanical Characterization of the Adobe and Their Relation with Vulnerability
Mechanical Characterization of the Adobe and Their Relation with Vulnerability
 
MPPL Chapter 7
MPPL Chapter 7MPPL Chapter 7
MPPL Chapter 7
 
Set nits amb la paula (miriam)
Set nits amb la paula (miriam)Set nits amb la paula (miriam)
Set nits amb la paula (miriam)
 
SISTEM DE PRIORITIZARE AL TRAFICULUI DE URGENŢE
SISTEM DE PRIORITIZARE AL TRAFICULUI DE URGENŢESISTEM DE PRIORITIZARE AL TRAFICULUI DE URGENŢE
SISTEM DE PRIORITIZARE AL TRAFICULUI DE URGENŢE
 
Inheritance in java
Inheritance in javaInheritance in java
Inheritance in java
 
Lean, stratégie et résultats par Catherine Chabiron
Lean, stratégie et résultats par Catherine Chabiron Lean, stratégie et résultats par Catherine Chabiron
Lean, stratégie et résultats par Catherine Chabiron
 
How to become an Android developer
How to become an Android developerHow to become an Android developer
How to become an Android developer
 

Ähnlich wie Customer's Choice @ Moosecon 2013

Ähnlich wie Customer's Choice @ Moosecon 2013 (6)

Products Not Projects: Delivering Value with Product Roadmaps
Products Not Projects: Delivering Value with Product RoadmapsProducts Not Projects: Delivering Value with Product Roadmaps
Products Not Projects: Delivering Value with Product Roadmaps
 
Success with User Stories: Cut Through User Story Chaos (Toronto Agile Commun...
Success with User Stories: Cut Through User Story Chaos (Toronto Agile Commun...Success with User Stories: Cut Through User Story Chaos (Toronto Agile Commun...
Success with User Stories: Cut Through User Story Chaos (Toronto Agile Commun...
 
Making Your User Stories Ready to Get to “Done”
Making Your User Stories Ready to Get to “Done”Making Your User Stories Ready to Get to “Done”
Making Your User Stories Ready to Get to “Done”
 
Success With User Stories:
Success With User Stories: Success With User Stories:
Success With User Stories:
 
Testers know thy customers - A talk on verifying business ideas using analyti...
Testers know thy customers - A talk on verifying business ideas using analyti...Testers know thy customers - A talk on verifying business ideas using analyti...
Testers know thy customers - A talk on verifying business ideas using analyti...
 
Power Up Your Agile Planning and Analysis: Deliver Value Via Structured Conve...
Power Up Your Agile Planning and Analysis: Deliver Value Via Structured Conve...Power Up Your Agile Planning and Analysis: Deliver Value Via Structured Conve...
Power Up Your Agile Planning and Analysis: Deliver Value Via Structured Conve...
 

Mehr von Hasan Hosgel

Mehr von Hasan Hosgel (12)

Android Developer Days 2014 How second screen can enhance your app
Android Developer Days 2014 How second screen can enhance your appAndroid Developer Days 2014 How second screen can enhance your app
Android Developer Days 2014 How second screen can enhance your app
 
Mtc spring 2014 best practices to develop for different android device classi...
Mtc spring 2014 best practices to develop for different android device classi...Mtc spring 2014 best practices to develop for different android device classi...
Mtc spring 2014 best practices to develop for different android device classi...
 
Droidcon it 2014 best practices to develop for different android device class...
Droidcon it 2014 best practices to develop for different android device class...Droidcon it 2014 best practices to develop for different android device class...
Droidcon it 2014 best practices to develop for different android device class...
 
Droidcon nl 2013 best practices to develop for different android device class...
Droidcon nl 2013 best practices to develop for different android device class...Droidcon nl 2013 best practices to develop for different android device class...
Droidcon nl 2013 best practices to develop for different android device class...
 
MTC 2013 Berlin - Best Practices for Multi Devices
MTC 2013 Berlin - Best Practices for Multi DevicesMTC 2013 Berlin - Best Practices for Multi Devices
MTC 2013 Berlin - Best Practices for Multi Devices
 
Android Developer Days 2013 - MultiDevice Nightmare
Android Developer Days 2013 - MultiDevice NightmareAndroid Developer Days 2013 - MultiDevice Nightmare
Android Developer Days 2013 - MultiDevice Nightmare
 
Droidcon 2013 Multidevice Nightmare
Droidcon 2013 Multidevice NightmareDroidcon 2013 Multidevice Nightmare
Droidcon 2013 Multidevice Nightmare
 
Android bootcamp 2013 Lists & Adapter
Android bootcamp 2013 Lists & AdapterAndroid bootcamp 2013 Lists & Adapter
Android bootcamp 2013 Lists & Adapter
 
Customer’s Choice @ GDG Android Berlin on January meetup
Customer’s Choice @ GDG Android Berlin on January meetupCustomer’s Choice @ GDG Android Berlin on January meetup
Customer’s Choice @ GDG Android Berlin on January meetup
 
Continuously Break The Android
Continuously Break The AndroidContinuously Break The Android
Continuously Break The Android
 
Coexisting of Android & Robots
Coexisting of Android & RobotsCoexisting of Android & Robots
Coexisting of Android & Robots
 
Mobile Development across Different Platforms @ Immobilienscout24
Mobile Development across Different Platforms @ Immobilienscout24Mobile Development across Different Platforms @ Immobilienscout24
Mobile Development across Different Platforms @ Immobilienscout24
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Kürzlich hochgeladen (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Customer's Choice @ Moosecon 2013

  • 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 – reset 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