Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Extensible Modules

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

Building Extensible Modules

Its easy to build one feature, but shouldn't it be easier to build another? Shouldn't that be the KPI of a mobile developer? Also, developers usually don't give space to Product Managers to play around with UX/design and to track the corresponding user behaviour by tracking proper user driver events (Analytics). So this talk is about building extensible and decoupled frameworks that can help avoid writing boiler plate code when it comes to adding events or building feature that's more or less similar to an existing one. Also, giving space to Product Managers to use deeplinking and direct users to dynamic campaign pages on the App/Web minimizing pushing App Updates. Another thing this talk contains is how to help Product Managers plan GTM of a new/existing feature in a more controlled way (toggling things from backend).

Avatar for Aashish Totla

Aashish Totla

October 13, 2018

Other Decks in Programming

Transcript

  1. What is this talk about? Understanding when and how to

    build extensible modules Discuss various bottle neck faced by product, design and marketing team while playing around with the product and how to solve for them (A/B testing made easier) Enable product and marketing team to run and track any number of cohort based campaigns by pushing minimal number of app updates Couple of examples #DevfestMumbai
  2. What are your team’s success factors? Crash free sessions Crash

    free users ANR free sessions Correctness of time estimation Speed of delivery #DevfestMumbai
  3. Bottlenecks App updates (release cycle + adoption) GTM of a

    feature Toggle features ON/OFF Targeted notifications/campaigns Ease of A/B testing #DevfestMumbai
  4. When to build extensible modules? Reusable components Wrappers (Decoupling modules)

    Deeplinking (build dynamic campaign pages) Backend configurable features (Feature toggle) Minimize number of app updates (enable A/B/.../Z testing) Control sequence of screens (eg : based upon marketing channel/medium/TG) #DevfestMumbai
  5. When to build extensible modules? ...contd App size reduction Faster

    build speeds Relatively faster delivery of features Minimum efforts on QA (automation or manual) #DevfestMumbai
  6. Reusable components #DevfestMumbai Use fragments to reuse screens and its

    corresponding business logic Migrate to a more loosely coupled but robust architecture like MVVM Use Rx and data binding to get rid of some of the boiler plate code Use custom views to encapsulate and reuse view’s business logic if any
  7. Deeplinking #DevfestMumbai Land user on a dynamic campaign page For

    eg: myhost.com/generic?title=Trending&params={base64_encoded_string} Follow a generic design language (theme not just your app but your items/cards too)
  8. Backend configurable features #DevfestMumbai Framework for feature toggle (based on

    user properties) to enable A/B/...Z testing Running out of bandwidth or overshooting some limits? Switch off the feature. Oops! A serious bug went into production? Switch it off! Firebase remote config For eg: Coach marks
  9. Backend configurable features #DevfestMumbai GTM of a feature. Showcase views

    anytime Showcase features based on interests of users. A user might not want to chat but ask questions anonymously
  10. Control Sequence of screens #DevfestMumbai OnBoarding - Customize onboarding journey

    for different cohorts of users. For eg: different onboarding for male and female users E-Commerce - Different checkout journey for different users or click on different CTAs Different home screen for different cohort of users. Customized and better user experience
  11. Other Engineering Benefits #DevfestMumbai Break down your app into multiple

    modules. For eg: Feed, Search, Analytics, Location, e-commerce Better ownership among teams Do you know about the new Android App Bundle? - App size reduction + Delivering feature on demand + enables modules to run instantly Ease of QA and TDD
  12. Things to take care of #DevfestMumbai Reusable Components : Add

    params (caller-ID) to events while sending to analytics platform to differentiate sources Reusable Components : Don’t clutter your business layer with a lot of conditional statements. Break the component if necessary Backend Configurable Features : Network latency. Have default values Modular Approach : Loosely coupled but robust architecture. Don’t get into a state where you cannot communicate across modules. Take care of memory leaks while doing so
  13. Conclusion #DevfestMumbai Spend time with your PM and designer to

    understand the future of roadmap and set of user problems from an outside-in perspective Go back to the features you’ve built and see how they are performing Give flexibility to other teams such as marketing, community and business to run their campaigns/test with minimum number of app updates Smaller app size, better build speed, lesser QA time and better ownership of work across team