Talk from The Assembly event in Dubai on June 18th, 2022. This version is more intended for managers and team leads.
Ahmed El-Helw June 18, 2022Productive Mobile DevelopmentTips and Tricks for Productive Mobile Development
View Slide
Mobile Apps are the connectionto the customer
Source
Faster Iterations are Essential
Factors affecting SpeedThings to Consider• Distractions
Factors affecting SpeedThings to Consider• Distractions• Communication Problems
Factors affecting SpeedThings to Consider• Distractions• Communication Problems• Conflicting Priorities
Factors affecting SpeedThings to Consider• Distractions• Communication Problems• Conflicting Priorities• Technical Debt
Factors affecting SpeedThings to Consider• Distractions• Communication Problems• Conflicting Priorities• Technical Debt• Production Fires
Factors affecting SpeedThings to Consider• Distractions• Communication Problems• Conflicting Priorities• Technical Debt• Production Fires• Hardware
Process BottlenecksMobile Bottlenecks• Company release process• Application store review process• Application store rejections• Adoptions take time
Experiments and Toggles
Choosing betweenImplementations
Deciding on a Direction
Ask the CustomerRunning Customer Studies• You are not your customer• Wireframes and discussions• Prepare• Question• Understand
Comparing between Variants
72.31%of all statistics are made up on the spot
Tim Campos“Data wins Arguments”
Customer BehaviorUnderstanding and Monitoring Customer Behavior• Dashboards• critical business statistics• conversion funnels• Slice by application version• Alerts
Run Experiments
Problems Happen
Dealing with ProblemsHow to React to Problems• Ignore it for now• Hot Fix in Production• Release takes time• Adoption takes time• Risky
What if we just turn it off?
Feature Toggle
Other ConsiderationsThings to Keep in Mind• Be mindful about:• The effect of experiments on each other• The effect of featureflags on each other• Dead Experiments increase Technical Debt
Data
DataSome odds and ends about Data• Building trust with Customers• Compliance• App Stores• Governments
Policy Changes are often aSurprise
MetaFilter via Forbes Article“If you're not paying for it, you become theproduct”
As a company grows, so toodoes the value of its data
Structures and Methodologies
How to Structure Teams
Structuring TeamsHow to Structure Teams• Single full stack vertical teams• Separate splits between frontend and backend
It Depends
Evaluate and Adopt
You are not Spotify
Scrum? Agile?
Communication is Key
RFCs
Structuring Code
Modularize
Define a Set of Rules
Split API and Implementation
Better Isolation of Features
Easier Sharing
Faster Build Times
Ability to Stub Implementations
Faster Testing
Standalone Apps
Sharing Code Across Platforms
How do we Save Time?
OptionsSharing Code Between Platforms• Frameworks that handle Everything• Do it yourself Tooling
React Native
5 Part SeriesReact Native at Airbnb
Flutter
Frameworks that Handle EverythingSharing Code Between Platforms• Pros• Potentially easier to hire for• Write once, use everywhere• Faster development (hot reload, etc)• Potential for hot loading code
Frameworks that Handle EverythingSharing Code Between Platforms• Cons• Need to explicitly separate UI for iOS and Android• Doesn’t “feel” native irrespective• New platform features are difficult to adopt - need to wait• Overhead on binary size• Rejections Likely
C/C++
C/C++Sharing Code Between Platforms• Pros• High performance• Easier to obfuscate code
C/C++Sharing Code Between Platforms• Cons• Difficult• Still have to handle differences between platforms• Custom development environment
Dropbox Blog PostThe (not so) hidden cost of sharing codebetween iOS and Android
Kotlin Multiplatform
Kotlin MultiplatformSharing 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
Kotlin MultiplatformSharing Code Between Platforms• Cons• iOS inter-op with Objective-C instead of Swift• Convincing iOS Engineers is Difficult• Tooling• Still in the process of maturing
Which one?
What to Share
Analytics
Business Logic
More?
Benefits and CostsSharing Code Across Platforms - KMP• Pros:• Keeps iOS and Android consistent• Maintenance is cheaper• In the long run, development may become cheaper
Benefits and CostsSharing Code Across Platforms - KMP• Cons:• Might be more expensive initially• Difficult to get buy in from iOS engineers• Inter-op with Objective-C instead of Swift
What to Share Across Platforms
Vocabulary
Features
Architecture
Design System
Versioning
Release Process
CI/CD
Production Issues take Time
Time is Money
Catching Mistakes Early SavesTime and Money
Defense Mechanisms
Code Review
TestsCatching Issues Early• Tests• Unit Tests• Integration Tests• On-Device Integration Tests (“UI Tests”)• Screenshot Tests
Automated Checks
Lint
Code Styling Enforcer
Code Smell Detection
Expose Hidden ChangesCatching Issues Early• Transitive Dependencies• Binary Size• Permissions
Release Early
Release Often
Staged Rollouts
Beta Program
Engineering Culture
Engineers are Humans
Humans make Mistakes
Blame is Bad
Blame is not Productive
Learning from Mistakesis Productive
How could we have prevented it?
Build Ownership
Hire Good Engineering Managers
Give Developers Good Hardware
Keep Learning and Improving
Focus on Impact
Thank You
Q & A