Slide 1

Slide 1 text

Developing Application for Billions Part 1 Paresh Mayani

Slide 2

Slide 2 text

Prepare Wireframe/Mockup Because Developers are not magician, they need proper requirements and flow

Slide 3

Slide 3 text

Prepare Wireframe/Mockup Source: https://mobidev.biz/

Slide 4

Slide 4 text

Splash Screen - Have a solid branding logo and tagline - Utilize splash screen loading time efficiently - Load data required on home page Otherwise Don’t put a splash screen (Don’t display just for the sake of displaying)

Slide 5

Slide 5 text

Splash Screen Have something to display (Quotes, taglines or something) because same screen is making users bored

Slide 6

Slide 6 text

Intro screen Have an introduction screen (When needed) Display it for a single time Source: http://goo.gl/ObCeqt

Slide 7

Slide 7 text

Effective API Design At that moment when developers write “Select * from table” query

Slide 8

Slide 8 text

Effective API Design Send only required fields and avoid unnecessary details Most of the time enemy is Select * query Can optimize APIs with “Expiry date” or “Last updated” date

Slide 9

Slide 9 text

Make your users busy Because you know seeing “Loading…” screen is boring!

Slide 10

Slide 10 text

Make your users busy Display something to read (Check splash screen where we displayed Quote) Cache data and display it when required Important: Display whatever data you have, meanwhile fetch required data

Slide 11

Slide 11 text

Make your users busy Loading and Displaying Data poor way Loading available data quickly + Delighting user with animation and transition

Slide 12

Slide 12 text

Check Internet Connection User is filling up some form and after User press Submit.. “No internet connection...”

Slide 13

Slide 13 text

Check Internet Connection User is filling up some form and after User press Submit.. “No internet connection...” Why not notify user about connection in real time ? This could be handled prettily using SnackBars or others.

Slide 14

Slide 14 text

Handling Form Validations

Slide 15

Slide 15 text

Handling Form Validations User forgot to put a dot “.” in email field and he is way filling out rest of the fields and he is not aware of it. He presses Submit action and boom “Please enter a valid email” that boring message hits the User Instead you could disable the button until all form fields are valid

Slide 16

Slide 16 text

Caching Data Because you know Internet sucks :) and Seeing “Loading…” dialog is boring

Slide 17

Slide 17 text

Caching Data Effective cache controls will dramatically reduce server load Cache data as much as possible, why? - Less number of web requests => No use of network radio => Improved battery life - Important: It will make user busy in reading something while loading new set of data Important: Don’t assume everyone has high speed connection in the world!

Slide 18

Slide 18 text

Image Loading ImageView is 120x120 and image resolution is 1024x768 Purely injustice Bitmap should be downscaled. Use some popular libraries like Glide. They provide caching mechanism, downscaling, thumbnailing, transformations, and what not.

Slide 19

Slide 19 text

Image Loading Load only required size image Cache images Use libraries like Fresco, Glide, Picasso

Slide 20

Slide 20 text

Load image(s) priority wise Note: Not a performance tip but a good practice in loading UI Picasso library provides functionality to prioritize the image loading through priority(). priority() takes one of three constants, HIGH, MEDIUM, or LOW

Slide 21

Slide 21 text

Don’t wait for users to submit crash reports At that moment when your users reporting App is getting crashed

Slide 22

Slide 22 text

Don’t wait for users to submit crash reports You would not come to know about crashes being faced by users, until they submit voluntarily Then how to get it automatically? Use tools like Crashlytics, Crittercism, ACRA

Slide 23

Slide 23 text

Version Control System Project should be kept under version control system Open source projects are using Git Follow Git branching work ● Gitflow workflow ● Feature branch workflow Follow development process via PR(Pull Requests)

Slide 24

Slide 24 text

Localization Believe me English is not everyone’s first or even second language

Slide 25

Slide 25 text

Localization - an easy way How? Do you know strings.xml? Define a string with common name but different values in different values folder

Slide 26

Slide 26 text

Delight your user

Slide 27

Slide 27 text

Questions?

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Thank You Paresh Mayani Founder/Organizer, GDG Ahmedabad Technical Lead - Android @ Lets Nurture Infotech Pvt. Ltd. Application Architect @ KarConnect +PareshMayani @pareshmayani [email protected]