18
© 2017 MOBDESIGN Don’t lose your users because of Endless Quality Issues Olivier Destrebecq @otusweb [email protected] http://www.mobdesignapps.fr

Mobilization 2017: Don't lose your users because of endless quality issues

Embed Size (px)

Citation preview

Page 1: Mobilization 2017: Don't lose your users because of endless quality issues

© 2017 MOBDESIGN

Don’t lose your users because of Endless Quality Issues

Olivier Destrebecq @[email protected]://www.mobdesignapps.fr

!

"

#

Page 2: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Users are expensive

SUBSCRIPTION APPS COST & CONVERSION FUNNEL

GAMING APPS COST & CONVERSION FUNNEL

SHOPPING APPS COST & CONVERSION FUNNEL

Source: liftoff.io User Acquisition Trends and Benchmarks SUBSCRIPTION APPS REPORT 2017

Install $4.40

Register $30.51

Subscription $161.38

Install $4.07

Register $8.94

Purchase $50.69

Install $4.45

Register $30.51

Purchase $75.86

14.43%Install-to-Register

2.73%Install-to-Subscription

45.5%Install-to-Register

8.0%Install-to-Subscription

14.6%Install-to-Register

5.9%Install-to-Subscription

Page 3: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Crashes are expensive

Imagine an app with

2 Million MAUStable at 99.7%, so only0.3% of users see a crash

60 000users a month will see a crash

Only 16% of user will try a failing app more than twice. If 10% decide they are done because of the bug, that is

6 000 users$24 000 at $4 install

Does not even take into account the cost to convert that user to being a client

Source: TechCrunch citing Compuware study

Page 4: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

So how do you avoid this?All slides available on Twitter (with extra links)

@otusweb #mobilization2017

Page 5: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Get started rightKnow which scenarios you want to enable AND STICK TO THOSE!

Take the time to iterate on design: Issues in design are easy and cheap to fix

Set up your team correctly, know where the buck stops

Work with people you enjoy working with

As a team pick your approach to keep quality up

Page 6: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Perform user testingGet users from your target segment and show them your early prototypes

3. Observe and shut up

4. Answer questions with questions

Bad: “Did you easily find the search button?”

Good: “Which information is most important to you?”

1. DON’T LEAD THE WITNESS 2. ASK USER TO GO THROUGH YOUR MAIN SCENARIOS

Bad: Go to shirt section and pick a shirt

Good: You want to buy a new shirt for work. please use this app to find one

Page 7: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Security: a fine line, walk it regularlyDon’t be an Equifax, Target or Yahoo

Use the OWASP Mobile App Security checklist

Prioritise and mitigate

Review it regularly

Page 8: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Version control is your best friend

Pick one, learn to use it and use it Ease collaboration

Understand what happened

Reverse time

Use a branching model Multiple release going on at the same time

Main development does not halt for release

Feature Branches

Develop Release Branches

Hotfixes Master

Tim

e

Tag 0.2

Feature for future

release

From this position on, “next release” means the release

after 1.0

Major feature for next release

Incorporate bugfix in develop

Severe bug fixed for

production: hotfix 0.2

Tag 0.1

Tag 1.0Bug fixes from rel. branch may be continuously

merged back into develop

Only bug fixes!

Start of release

branch for 1.0

Source: Vincent Driessen : A successful branching model

Page 9: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Bug life cycle

Defines bugs states and responsabilities

No bugs falls through the cracks

No bug fix gets released without testing

Developer cannot close a bug

New bug from a user with con confirm or a

product without UNCONFIRMED state

Bug is reopened, was never confirmedBug confirmed of

received enough votes

Developer takes possession

Development is finished with bug

Developer takes possession

Ownership is changed

Development is finished with bug

Developer takes possession

Issue is resolved

Bug is closed

QA not satisfied with solution

QA verifies solution worked

Bug is reopened

Bug is reopened Bug is closed

UNCONFIRMED

NEW

REOPEN

CLOSED

RESOLVED

Possible resolutions:FIXED

DUPLICATE WONTFIX

WORKSFORME INVALID REMINDLATER

ASSIGNED

VERIFIED

Source: Bugzilla: Lifecycle of a bug

Page 10: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Pair programmingA second brain always brings in more value

Catch default very early in the cycle

Great to work on complex software issues

Not so great for simple tasks

Great to mentor other or learn from others

Page 11: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Code reviewA second pair of eyes always brings value

Great to learn new practice from fellow developers

Great to spot flows in code

Don’t hesitate to do them in person or follow up in person

Review every pull request before merging

Not the place for spellcheck, format check etc

Page 12: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Automate your testing

Manual testing is great, slow and painful to repeat

Use Unit, integration and UI test

UI test: a pain to maintain, automate only the most important flow

Unit test are easy to maintain, cover as much as you can

Lots of tools: XCTest, Cucumber, Appium, EarlGrey

Page 13: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Continuous integration

Goal is to release often, if releasing is hard, then release cycle lengthen

Continuous integration (continuous build + automated testing + delivery automation)

Jenkins, BuddyBuild, bitrise.io, fastlane and others

Page 14: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Static code analysisFinds issues with your code flow

Reports on code complexity

Multiple tools available (SwiftLint, OCLint, fauxpas, xCode, Tailor, Danger)

Run it on build and on pull request

Adopt the rules with your team

Enforce a 0 warning merge rule

Page 15: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Use crash AND error reportingWhat's worse than a crash? A crash that you don’t know about.

What’s worse than a crash you don’t know about, an error you don’t know about.

Install a crash reporting, link it to your bug database

Install an error reporting, link it to your bug database

Prioritise issues based on frequency and impact

Page 16: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Test on real devices in contextThe real world throws to many curve balls to only test on the simulator (bad connection, low battery, backgrounding, hardware specificity)

Performance, BLE, wifi devices, camera based app, TouchID can only be tested on real devices

Page 17: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Automate as much as possibleI’m lazy, I’m sure you are great, but probably a little lazy too

Add as many of those tools/process into your build automation

Make those automation gate keepers to prevent bad code into master

Page 18: Mobilization 2017: Don't lose your users because of endless quality issues

@otusweb

Questions?

$Olivier Destrebecq

@[email protected]://www.mobdesignapps.fr

!

"

#