Slide 1

Slide 1 text

Android at Scale Israel Ferrer Camacho Tech Lead (Android)

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

100 ENGINEER TEAM

Slide 4

Slide 4 text

DIFFICULT TO MODIFY EASY TO BREAK SLOW DEVELOPMENT

Slide 5

Slide 5 text

Israel Ferrer Camacho Android Tech Lead | @rallat ANDROID @ SCALE

Slide 6

Slide 6 text

QUALITY CONSISTENT REUSABLE

Slide 7

Slide 7 text

QUALITY CONSISTENT REUSABLE

Slide 8

Slide 8 text

WHAT IS QUALITY?

Slide 9

Slide 9 text

QUALITY

Slide 10

Slide 10 text

NO BUGS QUALITY

Slide 11

Slide 11 text

PREVENT BUGS WITH TEST QUALITY

Slide 12

Slide 12 text

MANUAL TEST UI TEST INTEGRATION TEST UNIT TEST QUALITY

Slide 13

Slide 13 text

MANUAL TEST UI TEST INTEGRATION TEST UNIT TEST QUALITY

Slide 14

Slide 14 text

QUALITY Easy to write Easy to maintain Fast to run UNIT TEST

Slide 15

Slide 15 text

Run unit test for each commit Immediate quality feedback! For engineers is a safety net QUALITY UNIT TEST

Slide 16

Slide 16 text

Feature proofs the code for future changes QUALITY UNIT TEST

Slide 17

Slide 17 text

QUALITY CONSISTENT REUSABLE

Slide 18

Slide 18 text

QUALITY CONSISTENT REUSABLE

Slide 19

Slide 19 text

DEFINE PRINCIPLES CONSISTENT

Slide 20

Slide 20 text

PRINCIPLES CAN EVOLVE CONSISTENT

Slide 21

Slide 21 text

CONSISTENT NEW ARCHITECTURE

Slide 22

Slide 22 text

CONSISTENT LAYERED ARCHITECTURE

Slide 23

Slide 23 text

CONSISTENT SINGLE RESPONSIBILITY

Slide 24

Slide 24 text

Data layer View layer Logic layer

Slide 25

Slide 25 text

View layer Data layer Logic layer

Slide 26

Slide 26 text

REUSABLE?

Slide 27

Slide 27 text

BUSINESS LOGIC REUSABLE

Slide 28

Slide 28 text

USE CASES LAYER REUSABLE

Slide 29

Slide 29 text

Use cases View layer Data layer Screen behavior

Slide 30

Slide 30 text

View layer Data layer Sort Items Buy Item Like Item Comment Item Screen behavior

Slide 31

Slide 31 text

Use cases View layer Data layer Screen behavior

Slide 32

Slide 32 text

Use cases View layer Data layer Screen behavior

Slide 33

Slide 33 text

Use cases Screen behavior View layer Data layer QUALITY CONSISTENT REUSABLE

Slide 34

Slide 34 text

HOW TO REUSE CUSTOM VIEWS, COMPONENTS, UTILS?

Slide 35

Slide 35 text

DISCOVERABILITY?

Slide 36

Slide 36 text

HOW CAN 100 ENG WORK IN THE SAME CODEBASE?

Slide 37

Slide 37 text

MONOLITHIC 
 MONOLITHIC TO
 MODULAR REUSABLE

Slide 38

Slide 38 text

4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL #VUUPO "QQ #VUUPO #VUUPO REUSABLE

Slide 39

Slide 39 text

. 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL #VUUPO "QQ #VUUPO #VUUPO REUSABLE

Slide 40

Slide 40 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL #VUUPO "QQ #VUUPO #VUUPO 6*$PSF

Slide 41

Slide 41 text

6*$PSF REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL #VUUPO "QQ #VUUPO #VUUPO

Slide 42

Slide 42 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL "QQ #VUUPO 6*$PSF #VUUPO #VUUPO

Slide 43

Slide 43 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL "QQ 6*$PSF #VUUPO #VUUPO #VUUPO

Slide 44

Slide 44 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL "QQ 6*$PSF #VUUPO #VUUPO #VUUPO

Slide 45

Slide 45 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL /FUXPSL "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO

Slide 46

Slide 46 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL /FUXPSL "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO /FUXPSL /FUXPSL

Slide 47

Slide 47 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO /FUXPSL "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL

Slide 48

Slide 48 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL

Slide 49

Slide 49 text

REUSABLE . 4DSFFO 4DSFFO 4DSFFO "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL

Slide 50

Slide 50 text

REUSABLE 4DSFFO 4DSFFO 4DSFFO "QQ 6*$PSF #VUUPO #VUUPO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO

Slide 51

Slide 51 text

REUSABLE 4DSFFO 4DSFFO 4DSFFO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO 6*$PSF #VUUPO #VUUPO

Slide 52

Slide 52 text

REUSABLE 4DSFFO 4DSFFO 4DSFFO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO 'FBUVSF 6*$PSF #VUUPO #VUUPO

Slide 53

Slide 53 text

REUSABLE 4DSFFO 4DSFFO 4DSFFO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO 'FBUVSF 'FBUVSF 6*$PSF #VUUPO #VUUPO

Slide 54

Slide 54 text

REUSABLE 4DSFFO 4DSFFO 4DSFFO %FQFOETPO /FUXPSL /FUXPSL /FUXPSL /FUXPSL %FQFOETPO 'FBUVSF 'FBUVSF 'FBUVSF 6*$PSF #VUUPO #VUUPO

Slide 55

Slide 55 text

ADVANTAGES MODULAR

Slide 56

Slide 56 text

ADVANTAGES MODULAR Improve reusability Improve discoverability Less code conflicts Faster build time in Gradle

Slide 57

Slide 57 text

MERCARI MODULES

Slide 58

Slide 58 text

REUSABLE Core Network DB Identity Core-java Android Core Util Util-Android UI Model Features Live Offer Payment Search Listing

Slide 59

Slide 59 text

QUALITY CONSISTENT REUSABLE

Slide 60

Slide 60 text

HOW LONG?

Slide 61

Slide 61 text

THIS IS NOT A TEMPORARY PROJECT

Slide 62

Slide 62 text

NOT A SOLO PROJECT

Slide 63

Slide 63 text

LONG LASTING CHANGE ENGINEERING CULTURE

Slide 64

Slide 64 text

FROM CODER

Slide 65

Slide 65 text

FROM CODER TO ENGINEER

Slide 66

Slide 66 text

ENGINEER CODER Writes Code Writes Code Code reviews Best solution for a problem Cares about Performance Cares about Quality Feedback to the Team Feedback to the product

Slide 67

Slide 67 text

HOW?

Slide 68

Slide 68 text

WRITE A PROPOSAL

Slide 69

Slide 69 text

WRITE A PR WITH EXAMPLE

Slide 70

Slide 70 text

COLLABORATIVE WORK

Slide 71

Slide 71 text

WRITE GUIDELINES

Slide 72

Slide 72 text

COLLABORATIVE WORK

Slide 73

Slide 73 text

TRAIN THE TEAM

Slide 74

Slide 74 text

OFFICE HOURS

Slide 75

Slide 75 text

PAIR PROGRAMMING

Slide 76

Slide 76 text

CODE REVIEWS

Slide 77

Slide 77 text

RESULTS

Slide 78

Slide 78 text

NEW ARCHITECTURE QUALITY 100% Adoption in new features

Slide 79

Slide 79 text

0 5 10 15 20 June July August Sept CODE COVERAGE QUALITY

Slide 80

Slide 80 text

STRONG ENGINEER

Slide 81

Slide 81 text

CREATE BETTER PRODUCTS

Slide 82

Slide 82 text

THANKS! JOIN US! Challenge awaits you!