SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Working with a
Design System
¿Quién soy?
Marcos Trujillo
@Aracem
We Are Hiring! @jobandtalentEng
De qué vamos a hablar
Jobandtalent en 2016
Pivotando
de Job Board a una Staff Agency
◆ Numerosos equipos involucrados. Trabajo en paralelo
● Producto - Diseño - Backend - Celulares
◆ Gran reto a nivel de producto
◆ Features nuevas y diferentes
◆ Un nuevo look & feel
Transformar Jobandtalent en 100 días
¿Cómo podemos conseguirlo?
● Coordinación
● Paralelización
● Consistencia
● Anticipación
● Rapidez
Design System
“A design system is a collection of
reusable components, guided by clear
standards, that can be assembled
together to build any number of
applications”
Fuente: Will Fanguy en https://www.invisionapp.com/blog/guide-to-design-systems/
Diseñar como un desarrollador
● Encapsulación
● Abstracción
● Reutilización
● Polimorfismo●
● “El clean del diseño”
Atomic Design
Fuente: http://atomicdesign.bradfrost.com/chapter-2/
Iteración
I
Decisiones, decisiones y muchas decisiones
● Modelar componentes a lo android way: Styles + Resources + Layout XMLs
● Folder de recursos independientes: res-tx
● NO usar Custom Views, sólo por causa mayor (Includes + merges)
● Lógica de negocio fuera de los componentes
¡Terminamos transactions!
Retrospectiva Iteración 1
✔ ¿Ha sido sencillo crear componentes?
✔ ¿El diseño es consistente?
✔ ¿Nos ayuda el sistema de diseño?
❌ ¿Escala bien?
Problemas para escalar
● Duplicidad de recursos y de XMLs
● Componentes no documentados
● Se pierde la encapsulación
● ¿Y la lógica de renderizado?
● Velocidad de desarrollo, pruebas y verificación. Dolor
● ¿Cómo afectan los cambios?
● ¿Es fácil que se haga una revisión de diseño?
Iteración
II
✔ Duplicidad
✔ Lógica renderizado
✔ Consistencia
✔ Documentación
Un paso más
Componente
1:1
CustomView
Custom Views
● Cada componente es una Custom View
● Modelar estado -> ViewState
● Configurable por Atributos (en la medida de lo posible)
● Estandarización, estandarización y más estandarización
● Lógica de renderizado
○ Utilidades Visibility, LineSpacing, SupportVersion, TintCompat...
● Lógica de negocio -> Golpe de Remo
✔ Velocidad desarrollo
✔ Respuesta a cambios
✔ Versionado
✔ Evitar duplicidad
Un paso más
Librería
de componentes
Komponents Library
● Artefacto independiente a la aplicación de JT
● Maven privado
● Gestión de versiones X.Y.Z
○ X = Versión del sistema de diseño
○ Y = Nuevo/s componentes y/o cambios incompatibles
○ Z = Fixes
○ -SNAPSHOT
● Deploy local y remoto
● Actualización versión en el proyecto de JT mediante PR
Components Library
✔ Design Review
✔ Velocidad desarrollo
Un paso más
App
de prueba
Aplicación de
prueba
Aplicación de
prueba
● Fixtures
Aplicación de
prueba
● Fixtures
Aplicación de
prueba
● Fixtures
● IconKit
Aplicación de
prueba
● Fixtures
● IconKit
● FontKit
Aplicación de
prueba
● Fixtures
● IconKit
● FontKit
● ColorPalette
Aplicación de
prueba
● Fixtures
● IconKit
● FontKit
● ColorPalette
● Playgrounds
Sensaciones Iteración 2
✔ El equipo siente que todo es más consistente
✔ La reutilización de componentes es óptima, mayor desacoplo
✔ El equipo de diseño puede jugar/tocar/validar los componentes antes de ser usados en la app
✔ Aplicamos cambios globales facilmente - ProximaNova a Roboto & color branding
❌ Naming inconsistente
❌ Hacer test de Espresso es tedioso
❌ ¿Cómo iterar un componente? ¿Cuando se debe segregar?
❌ Dificultades en cómo comprobamos la integridad
❌ ¿Se puede mejorar la comunicación con el equipo de diseño?
Iteración
3
✔ Hacer test de Espresso
es tedioso
Otro paso más
Librería con
matchers y actions
de Espresso.
✔ Verificar
integridad global
Otro paso más
Screenshot UI reports
&
Components UI testing
En qué estamos trabajando...
Preocupados en...
Rich Item
Preocupados en...
Rich Item ?
Preocupados en...
Rich Item ??!?
Preocupados en...
Rich Item ??!??!?1!1?
Después de 1 año
● Mejor coordinación Diseño -> Developers
● Paralelización
● Consistencia
● Anticipación
● Rapidez
¡Os quiero!
https://jobandtalent.engineering/visualkit-ui-framework-74ab8aae0d42
https://jobandtalent.engineering/learning-to-develop-jobandtalents-design-system-for-android-54160a571d7b
One more thing...
¿Debería motivar el uso de un sistema de
diseño en mi empresa?
¿Preguntas?
We Are Hiring!
Android, Frontend, Designer, Data Science, Ruby & Rails, PMs…
https://bit.ly/2wGYJYe

Más contenido relacionado

Similar a Designing for Reuse with a System

El proceso creativo de una aplicación
El proceso creativo de una aplicación El proceso creativo de una aplicación
El proceso creativo de una aplicación Jorge Galindo Cruces
 
Automatizar o no desde el principio? ese es el dilema...
Automatizar o no desde el principio? ese es el dilema...Automatizar o no desde el principio? ese es el dilema...
Automatizar o no desde el principio? ese es el dilema...Enrique Carbonell
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoFinizens
 
Desarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.comDesarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.comJosé Luis Lee Rázuri
 
Como prototipar MAL una aplicación. La importancia del Wireframe
Como prototipar MAL una aplicación. La importancia del WireframeComo prototipar MAL una aplicación. La importancia del Wireframe
Como prototipar MAL una aplicación. La importancia del WireframeJorge Galindo Cruces
 
Como prototipar MAL una aplicación. La importancia del Wireframe
Como prototipar MAL una aplicación. La importancia del WireframeComo prototipar MAL una aplicación. La importancia del Wireframe
Como prototipar MAL una aplicación. La importancia del Wireframebetabeers
 
Entrega contínua en la práctica
Entrega contínua en la prácticaEntrega contínua en la práctica
Entrega contínua en la prácticaCarlos Fuentes
 
Desarrollo ágil de aplicaciones
Desarrollo ágil de aplicacionesDesarrollo ágil de aplicaciones
Desarrollo ágil de aplicacionesMario Solarte
 
metodologia scrum.pptx
metodologia scrum.pptxmetodologia scrum.pptx
metodologia scrum.pptxjuan gonzalez
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesIván Campaña Naranjo
 
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015 César Hernández
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions SpanishCDS
 
Tuenti - de la idea a la web
Tuenti -  de la idea a la webTuenti -  de la idea a la web
Tuenti - de la idea a la webTuenti
 

Similar a Designing for Reuse with a System (20)

Construyendo en serie
Construyendo en serieConstruyendo en serie
Construyendo en serie
 
Calidad de software
Calidad de softwareCalidad de software
Calidad de software
 
El proceso creativo de una aplicación
El proceso creativo de una aplicación El proceso creativo de una aplicación
El proceso creativo de una aplicación
 
Automatizar o no desde el principio? ese es el dilema...
Automatizar o no desde el principio? ese es el dilema...Automatizar o no desde el principio? ese es el dilema...
Automatizar o no desde el principio? ese es el dilema...
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológico
 
Desarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.comDesarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.com
 
ASPgems 2018
ASPgems 2018 ASPgems 2018
ASPgems 2018
 
Como prototipar MAL una aplicación. La importancia del Wireframe
Como prototipar MAL una aplicación. La importancia del WireframeComo prototipar MAL una aplicación. La importancia del Wireframe
Como prototipar MAL una aplicación. La importancia del Wireframe
 
Como prototipar MAL una aplicación. La importancia del Wireframe
Como prototipar MAL una aplicación. La importancia del WireframeComo prototipar MAL una aplicación. La importancia del Wireframe
Como prototipar MAL una aplicación. La importancia del Wireframe
 
Entrega contínua en la práctica
Entrega contínua en la prácticaEntrega contínua en la práctica
Entrega contínua en la práctica
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
Desarrollo ágil de aplicaciones
Desarrollo ágil de aplicacionesDesarrollo ágil de aplicaciones
Desarrollo ágil de aplicaciones
 
Scrum
ScrumScrum
Scrum
 
metodologia scrum.pptx
metodologia scrum.pptxmetodologia scrum.pptx
metodologia scrum.pptx
 
Framework para desarrollo de apps móviles
Framework para desarrollo de apps móvilesFramework para desarrollo de apps móviles
Framework para desarrollo de apps móviles
 
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015 Mejorando la productividad en proyectos java EE con  CI y CD - OTN 2015
Mejorando la productividad en proyectos java EE con CI y CD - OTN 2015
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
Tuenti - de la idea a la web
Tuenti -  de la idea a la webTuenti -  de la idea a la web
Tuenti - de la idea a la web
 
Andrid studio
Andrid studioAndrid studio
Andrid studio
 

Último

PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 

Último (7)

PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 

Designing for Reuse with a System