Slide 1

Slide 1 text

Iterative Mobile Development Andrea Falcone, Verily Life Science

Slide 2

Slide 2 text

Andrea Falcone Senior Software Engineer @asfalcone

Slide 3

Slide 3 text

Would your customers rather get: 1 complete feature or 3 half done features?

Slide 4

Slide 4 text

Would developers rather deliver: 1 complete feature or 3 half done features?

Slide 5

Slide 5 text

Iterative Mobile Development - Key Points ● Product innovation process ● Team setup for iterative success ● Tools of the trade ● Progress principle ● Iterating your way to customer happiness

Slide 6

Slide 6 text

Innovation Team Tools Product development process and customer focus Iteration Progress Software development process and team focus Tiny piece of the puzzle

Slide 7

Slide 7 text

Product innovation process

Slide 8

Slide 8 text

v1.0

Slide 9

Slide 9 text

The team can’t even see v1.0 from where they are.

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

v1.0 Event Horizon In general relativity, an event horizon is a region in spacetime beyond which events cannot affect an outside observer.

Slide 13

Slide 13 text

Team setup for iterative success

Slide 14

Slide 14 text

Key Points ● Investigate Kanban and Lean process ● Allow team to focus on getting fewer things done well ● Work as a team to deliver some value to customers instead of none

Slide 15

Slide 15 text

Kanban Lean 1. Visualize the work 2. Limit work in progress 3. Manage flow 4. Make policies explicit 5. Use feedback loops 6. Evolve through experimentation 1. Eliminate waste 2. Amplify learning 3. Decide as late as possible 4. Deliver as fast as possible 5. Empower the team 6. Build integrity in 7. See the whole Mary Poppendieck; Tom Poppendieck (2003). Lean Software Development: An Agile Toolkit. http://www.djaa.com/principles-general-practices-kanban-method

Slide 16

Slide 16 text

Kanban Lean 1. Visualize the work 2. Limit work in progress 3. Manage flow 4. Make policies explicit 5. Use feedback loops 6. Evolve through experimentation 1. Eliminate waste 2. Amplify learning 3. Decide as late as possible 4. Deliver as fast as possible 5. Empower the team 6. Build integrity in 7. See the whole Mary Poppendieck; Tom Poppendieck (2003). Lean Software Development: An Agile Toolkit. http://www.djaa.com/principles-general-practices-kanban-method

Slide 17

Slide 17 text

Feature 1 Feature 2 Feature 3 Feature 4 Feature 5 PRODUCT DEVELOPMENT TEAM YOUR USERS

Slide 18

Slide 18 text

Feature 1 Feature 2 Feature 3 Feature 4 Feature 5 PRODUCT DEVELOPMENT TEAM YOUR USERS

Slide 19

Slide 19 text

Feature 1 PRODUCT DEVELOPMENT TEAM YOUR USERS

Slide 20

Slide 20 text

Tools of the Trade

Slide 21

Slide 21 text

Key Points ● Set up a CI/CD process that is frictionless ○ Reduce the burden of shipping (Eliminate Waste) ○ fastlane ● Slow your roll ○ Feature flags ○ % roll outs ○ Alpha and Beta channels (Use feedback loops) ● Test (Build Integrity In) ○ Actually run the tests… ○ Firebase Testlab ● Learn (Evolve through experimentation) ○ A/B test ○ Good analytics

Slide 22

Slide 22 text

Andrea is in Ukraine this week... So we will have to wait until next week to do the release

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

fastlane fastlane is an open source platform aimed at simplifying Android and iOS deployment. fastlane lets you automate every aspect of your development and release workflow.

Slide 25

Slide 25 text

fastlane Generate localized app store screenshots in minutes. Publish your app with the push of a button

Slide 26

Slide 26 text

lane :beta do increment_build_number build_app upload_to_testflight end lane :appstore do capture_screenshots build_app upload_to_app_store slack end lane :beta do increment_build_number gradle(task: 'assemble') Upload_to_play_store (track: 'beta') end lane :playstore do capture_screenshots gradle(task: 'assemble') upload_to_play_store slack end

Slide 27

Slide 27 text

Test

Slide 28

Slide 28 text

Test on your laptop Test on CI Test on your users in production For the love of god, test

Slide 29

Slide 29 text

Actually run the tests... .git/hooks/pre-commit

Slide 30

Slide 30 text

Firebase Test Lab Test Android and iOS apps: runs Espresso and UI Automator 2.0 tests on Android apps, and XCTest tests on iOS apps Run on real devices: find issues that only occur on specific devices, OS versions, and configurations Workflow integration: integrated with the Firebase console, Android Studio, and the command line tools and CI systems

Slide 31

Slide 31 text

Use staged rollouts to release app updates to production. Staged updates help catch any issues you missed during testing before those issues affect all your users.

Slide 32

Slide 32 text

Use staged rollouts to release app updates to production. Staged updates help catch any issues you missed during testing before those issues affect all your users.

Slide 33

Slide 33 text

Use Firebase Remote Config to change your app’s behavior by tuning server side parameters. Branch your app code so you can flip the switch to enable certain features without waiting for a release.

Slide 34

Slide 34 text

Progress principle

Slide 35

Slide 35 text

The Power of Small Wins

Slide 36

Slide 36 text

Of all the things that can boost inner work life, the most important is making progress in meaningful work. “ - Teresa Amabile and Steven J. Kramer https://hbr.org/2011/05/the-power-of-small-wins

Slide 37

Slide 37 text

The team can’t even see v1.0 from where they are.

Slide 38

Slide 38 text

v1.0 v0.1 v0.2 v0.7 Creating a series of milestones along the way take the pressure out of a v1.0 launch and boost team happiness by showing that progress is being made.

Slide 39

Slide 39 text

Iterating your way to customer happiness

Slide 40

Slide 40 text

Build Measure Learn

Slide 41

Slide 41 text

Build Prioritize User Story Design Code Review/Test Usability Testing Ship Measure what matters ● Usage Metrics ● Are we meeting user needs? ● What are the next features? Does this meet our standards ● Could this be architected cleaner? ● Are there obvious bugs? ● Are we proud of the product? Does this meet customer expectations ● What can we learn from customer interviews? ● Are end users excited/confused/satisfied? Ship and Iterate

Slide 42

Slide 42 text

Iterate based on feedback & evolving priorities Source: http://blog.crisp.se/2016/01/25/henrikkniberg/making-sense-of-mvp

Slide 43

Slide 43 text

Christmas in July Still Christmas?

Slide 44

Slide 44 text

Iterative Mobile Development - Key Points ● Product innovation process ● Team setup for iterative success ● Tools of the trade ● Progress principle ● Iterating your way to customer happiness

Slide 45

Slide 45 text

Thank you! Andrea Falcone @asfalcone