⬢ ⬢ ⬢ ⬢ ⬢ ⬢
Las gemas del infinito
(del Universo Android)
Nicolas Patarino
1
Slide 2
Slide 2 text
Nicolás Patarino
@npatarino
Staff Mobile Engineer at
Podcast host at
2
Slide 3
Slide 3 text
3
Slide 4
Slide 4 text
4
Slide 5
Slide 5 text
⬢ Architecture
⬢ Build time
⬢ Modularization
⬢ Design System
⬢ Release Process
⬢ Metrics
5
Slide 6
Slide 6 text
⬢ Architecture ⬢ Design System
⬢ Release Process
⬢ Metrics
⬢ Build time
⬢ Modularization
6
Slide 7
Slide 7 text
Architecture
“
La arquitectura debe ser la expresión de nuestro
tiempo, y no un plagio de culturas pasadas.
Le Corbusier
7
Slide 8
Slide 8 text
Architecture
MVP MVVM MVI
8
Slide 9
Slide 9 text
Architecture
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
9
Slide 10
Slide 10 text
Architecture
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
10
Slide 11
Slide 11 text
Architecture
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
11
Slide 12
Slide 12 text
Architecture
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
12
Slide 13
Slide 13 text
Architecture
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
13
Slide 14
Slide 14 text
Architecture 14
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
Interface View
Slide 15
Slide 15 text
Architecture
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
View
(Activities,
Fragments...)
ViewModel
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVVM
15
Slide 16
Slide 16 text
Architecture
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
16
View
(Activities,
Fragments...)
ViewModel
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVVM
Observable
(LiveData /
DataBinding)
Slide 17
Slide 17 text
Architecture
View
(Activities,
Fragments...)
Presenter / VM
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVI
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
View
(Activities,
Fragments...)
ViewModel
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVVM
17
Slide 18
Slide 18 text
Architecture
View
(Activities,
Fragments...)
Presenter / VM
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVI
View
(Activities,
Fragments...)
Presenter
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVP
View
(Activities,
Fragments...)
ViewModel
Domain
(Use cases.)
Data
(Repositories.)
Data
(Repositories.)
Data
(Repositories.)
MVVM
Reducer
(View State)
18
Slide 19
Slide 19 text
Architecture
Clean Testable Works for you
19
Slide 20
Slide 20 text
⬢ Architecture
20
⬢ Build time
Slide 21
Slide 21 text
Build Time
“
El problema es, que pensás que tenés tiempo.
Jack Kornfield
21
Slide 22
Slide 22 text
Build Time 22
Modularization
Remote
compiling
Build cache
KSP vs APT Grade daemons
Slide 23
Slide 23 text
⬢ Architecture
⬢ Build time
23
⬢ Modularization
Slide 24
Slide 24 text
Modularization
“
Divide cada problema en tantas partes como
sea posible para resolverlo.
René Descartes
24
Modularization 27
Module 1
Feature 1
Presentation
Domain
Data
By Features
Module 3
Feature 3
Presentation
Domain
Data
Module 2
Feature 2
Presentation
Domain
Data
Slide 28
Slide 28 text
Modularization 28
VS
Scalability
Speed
Simplicity
Separation of
concerns
Independency
Less conflicts
Slide 29
Slide 29 text
⬢ Architecture
⬢ Build time
⬢ Modularization
⬢ Design System
29
Slide 30
Slide 30 text
Design System 30
“
Esto es un hecho: no se puede innovar en
productos sin primero innovar en la forma en la
que se los crea.
Alex Schleifer
Slide 31
Slide 31 text
Design System 31
Atomic Design
Slide 32
Slide 32 text
⬢ Architecture
⬢ Build time
⬢ Modularization
⬢ Design System
32
⬢ Release Process
Slide 33
Slide 33 text
Release Process 33
Slide 34
Slide 34 text
Release Process 34
“
A medida que las máquinas se vuelven cada
vez más eficientes y perfectas, queda claro que
la grandeza del ser humano es la imperfección.
Ernst Fischer
Slide 35
Slide 35 text
Release Process 35
Bugs
Reduce effort
(Feature flags, tests A/B,
Developer Settings)
Automation
(Compilation, run tests,
artifacts generation,
publishing, transitioning
tickets..)
Release
frequently
Time
Slide 36
Slide 36 text
⬢ Design System
⬢ Release Process
⬢ Metrics
⬢ Architecture
⬢ Build time
⬢ Modularization
36
Slide 37
Slide 37 text
Metrics 37
“
Si no podés medir algo, no podés entenderlo. Si
no podés entenderlo, no podés controlarlo. Si no
podés controlarlo, no podés mejorarlo.
H. James Harrington
Slide 38
Slide 38 text
Metrics 38
Development
(Errors, time-to-render,
API-calls)
Business
(Not finish payment, not
accept newsletter...)
User Experience
(Time-to-interact,
Performance for A/B
Testing)
Slide 39
Slide 39 text
Metrics 39
Detect fast
Fail fast Alerts
Think about
business
Slide 40
Slide 40 text
⬢ Architecture
⬢ Build time
⬢ Modularization
⬢ Design System
⬢ Release Process
⬢ Metrics
40
Slide 41
Slide 41 text
41
"Los héroes están hechos por los caminos que
eligen, no por los poderes con los que nacieron"
#CodemotionConf21