Para poder acometer un reto tan grande como es pivotar el modelo de negocio de una empresa en muy poco tiempo debíamos mejorar la forma en la que trabajábamos. Uno de los cambios fue empezar a usar Atomic Design para diseñar las aplicaciones móviles.
En esta charla os contaré el recorrido para implementar este sistema de diseño en la app de Jobandtalent. Con errores y con aciertos. Con logros, ventajas, mejoras y mucho aprendido.
8. ◆ 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
13. “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/
14.
15.
16. Diseñar como un desarrollador
● Encapsulación
● Abstracción
● Reutilización
● Polimorfismo●
● “El clean del diseño”
20. 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
23. Retrospectiva Iteración 1
✔ ¿Ha sido sencillo crear componentes?
✔ ¿El diseño es consistente?
✔ ¿Nos ayuda el sistema de diseño?
❌ ¿Escala bien?
24. 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?
26. ✔ Duplicidad
✔ Lógica renderizado
✔ Consistencia
✔ Documentación
Un paso más
Componente
1:1
CustomView
27. 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
28.
29. ✔ Velocidad desarrollo
✔ Respuesta a cambios
✔ Versionado
✔ Evitar duplicidad
Un paso más
Librería
de componentes
30. 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
40. 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?