Ahmed El-Helw June 18, 2022
Productive Mobile Development
Tips and Tricks for Productive Mobile Development
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
Mobile Apps are the connection
to the customer
Slide 4
Slide 4 text
Source
Slide 5
Slide 5 text
Faster Iterations are Essential
Slide 6
Slide 6 text
Factors affecting Speed
Things to Consider
• Distractions
Slide 7
Slide 7 text
Source
Slide 8
Slide 8 text
Factors affecting Speed
Things to Consider
• Distractions
• Communication Problems
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
Factors affecting Speed
Things to Consider
• Distractions
• Communication Problems
• Con
fl
icting Priorities
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
Factors affecting Speed
Things to Consider
• Distractions
• Communication Problems
• Con
fl
icting Priorities
• Technical Debt
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
Factors affecting Speed
Things to Consider
• Distractions
• Communication Problems
• Con
fl
icting Priorities
• Technical Debt
• Production Fires
Slide 15
Slide 15 text
Source
Slide 16
Slide 16 text
Factors affecting Speed
Things to Consider
• Distractions
• Communication Problems
• Con
fl
icting Priorities
• Technical Debt
• Production Fires
• Hardware
Slide 17
Slide 17 text
Source
Slide 18
Slide 18 text
Process Bottlenecks
Mobile Bottlenecks
• Company release process
• Application store review process
• Application store rejections
• Adoptions take time
Slide 19
Slide 19 text
Source
Slide 20
Slide 20 text
Experiments and Toggles
Slide 21
Slide 21 text
Choosing between
Implementations
Slide 22
Slide 22 text
Deciding on a Direction
Slide 23
Slide 23 text
Ask the Customer
Running Customer Studies
• You are not your customer
• Wireframes and discussions
• Prepare
• Question
• Understand
Slide 24
Slide 24 text
Comparing between Variants
Slide 25
Slide 25 text
72.31%
of all statistics are made up on the spot
Slide 26
Slide 26 text
Tim Campos
“Data wins Arguments”
Slide 27
Slide 27 text
Customer Behavior
Understanding and Monitoring Customer Behavior
• Dashboards
• critical business statistics
• conversion funnels
• Slice by application version
• Alerts
Slide 28
Slide 28 text
Run Experiments
Slide 29
Slide 29 text
Source
Slide 30
Slide 30 text
Problems Happen
Slide 31
Slide 31 text
Dealing with Problems
How to React to Problems
• Ignore it for now
• Hot Fix in Production
• Release takes time
• Adoption takes time
• Risky
Slide 32
Slide 32 text
Source
Slide 33
Slide 33 text
What if we just turn it off?
Slide 34
Slide 34 text
Feature Toggle
Slide 35
Slide 35 text
Other Considerations
Things to Keep in Mind
• Be mindful about:
• The e
ff
ect of experiments on each other
• The e
ff
ect of feature
fl
ags on each other
• Dead Experiments increase Technical Debt
Slide 36
Slide 36 text
Data
Slide 37
Slide 37 text
Data
Some odds and ends about Data
• Building trust with Customers
• Compliance
• App Stores
• Governments
Slide 38
Slide 38 text
Policy Changes are often a
Surprise
Slide 39
Slide 39 text
MetaFilter via Forbes Article
“If you're not paying for it, you become the
product”
Slide 40
Slide 40 text
As a company grows, so too
does the value of its data
Slide 41
Slide 41 text
Structures and Methodologies
Slide 42
Slide 42 text
How to Structure Teams
Slide 43
Slide 43 text
Structuring Teams
How to Structure Teams
• Single full stack vertical teams
• Separate splits between frontend and backend
Slide 44
Slide 44 text
It Depends
Slide 45
Slide 45 text
Evaluate and Adopt
Slide 46
Slide 46 text
You are not Spotify
Slide 47
Slide 47 text
Scrum? Agile?
Slide 48
Slide 48 text
It Depends
Slide 49
Slide 49 text
Source
Slide 50
Slide 50 text
Source
Slide 51
Slide 51 text
Communication is Key
Slide 52
Slide 52 text
RFCs
Slide 53
Slide 53 text
Structuring Code
Slide 54
Slide 54 text
Modularize
Slide 55
Slide 55 text
Define a Set of Rules
Slide 56
Slide 56 text
Split API and Implementation
Slide 57
Slide 57 text
Better Isolation of Features
Slide 58
Slide 58 text
Easier Sharing
Slide 59
Slide 59 text
Faster Build Times
Slide 60
Slide 60 text
Ability to Stub Implementations
Slide 61
Slide 61 text
Faster Testing
Slide 62
Slide 62 text
Standalone Apps
Slide 63
Slide 63 text
Sharing Code Across Platforms
Slide 64
Slide 64 text
How do we Save Time?
Slide 65
Slide 65 text
Options
Sharing Code Between Platforms
• Frameworks that handle Everything
• Do it yourself Tooling
Slide 66
Slide 66 text
React Native
Slide 67
Slide 67 text
5 Part Series
React Native at Airbnb
Slide 68
Slide 68 text
Flutter
Slide 69
Slide 69 text
Frameworks that Handle Everything
Sharing Code Between Platforms
• Pros
• Potentially easier to hire for
• Write once, use everywhere
• Faster development (hot reload, etc)
• Potential for hot loading code
Slide 70
Slide 70 text
Frameworks that Handle Everything
Sharing Code Between Platforms
• Cons
• Need to explicitly separate UI for iOS and Android
• Doesn’t “feel” native irrespective
• New platform features are di
ffi
cult to adopt - need to wait
• Overhead on binary size
• Rejections Likely
Slide 71
Slide 71 text
C/C++
Slide 72
Slide 72 text
C/C++
Sharing Code Between Platforms
• Pros
• High performance
• Easier to obfuscate code
Slide 73
Slide 73 text
C/C++
Sharing Code Between Platforms
• Cons
• Di
ffi
cult
• Still have to handle di
ff
erences between platforms
• Custom development environment
Slide 74
Slide 74 text
Dropbox Blog Post
The (not so) hidden cost of sharing code
between iOS and Android
Slide 75
Slide 75 text
Kotlin Multiplatform
Slide 76
Slide 76 text
Kotlin Multiplatform
Sharing Code Between Platforms
• Pros
• Completely native
• Easy to learn for engineers writing Swift
• Lots of third party libraries
• Backed by JetBrains and Google
• Supports a plethora of platforms
Slide 77
Slide 77 text
Kotlin Multiplatform
Sharing Code Between Platforms
• Cons
• iOS inter-op with Objective-C instead of Swift
• Convincing iOS Engineers is Di
ffi
cult
• Tooling
• Still in the process of maturing
Slide 78
Slide 78 text
Which one?
Slide 79
Slide 79 text
It Depends
Slide 80
Slide 80 text
What to Share
Slide 81
Slide 81 text
Analytics
Slide 82
Slide 82 text
Business Logic
Slide 83
Slide 83 text
More?
Slide 84
Slide 84 text
Benefits and Costs
Sharing Code Across Platforms - KMP
• Pros:
• Keeps iOS and Android consistent
• Maintenance is cheaper
• In the long run, development may become cheaper
Slide 85
Slide 85 text
Benefits and Costs
Sharing Code Across Platforms - KMP
• Cons:
• Might be more expensive initially
• Di
ffi
cult to get buy in from iOS engineers
• Inter-op with Objective-C instead of Swift