← Todos los episodios S2 · Episodio 6

2x06 | Charlando con los Androides de Free Now

· 01:12:26 · Gabi Moreno, Max Cruz, Samir Sayag

Resumen

Explican cómo su equipo está estructurado en tribus y squads, y cómo cada miembro, independientemente de su rol, se involucra activamente en el producto. Además, discuten su arquitectura, su innovador proceso de onboarding y las estrategias que implementan para mantener la calidad y agilidad en un proyecto de gran envergadura.

Temas principales:

  • Organización del equipo en Free Now: Explicamos la estructura de la empresa en “tribus” (como Supply y Demand) que se dividen en “squads” multifuncionales. Cada squad incluye desarrolladores de Android, iOS, backend, un QA, un diseñador y un Product Manager, fomentando la colaboración directa.
  • El rol del Ingeniero de Producto: Los invitados destacan que en Free Now todos los ingenieros son ingenieros de producto. Esto significa que los desarrolladores participan activamente desde las fases de ideación y discovery, aportando ideas y no solo ejecutando tareas, lo que genera un mayor compromiso con el producto final.
  • Proceso de Onboarding: Detallamos cómo integran a los nuevos miembros. Utilizan un sistema de “buddy” donde un compañero experimentado guía al recién llegado, junto con una documentación exhaustiva que facilita el setup inicial y la adaptación al equipo.
  • Arquitectura de la aplicación: La aplicación utiliza una arquitectura limpia (Clean Architecture) con el patrón de presentación MVP. Discuten las razones para mantener esta arquitectura y no migrar a otras como MVVM, debido al coste y al buen funcionamiento de la base de código existente.
  • Modularización y tiempos de compilación: Explican su estrategia de modularización para agilizar el desarrollo y reducir los tiempos de compilación. Usan un caché de compilación remoto compartido con el CI, lo que permite que los desarrolladores locales se beneficien de las compilaciones ya realizadas.
  • Trunk-Based Development: A diferencia del popular GitFlow, el equipo utiliza Trunk-Based Development. Trabajan sobre una rama principal con ramas de feature de corta duración, lo que simplifica el proceso de integración y reduce los conflictos.
  • Gestión de Calidad (QA): La calidad es una responsabilidad de todo el equipo. El rol del QA es más estratégico, definiendo los casos de prueba, mientras que los propios desarrolladores (incluyendo pruebas cross-platform) se encargan de validar las funcionalidades antes de integrarlas.
  • Resolución de problemas técnicos: El principal desafío técnico que enfrentan son los errores de OutOfMemory, especialmente en la app del conductor que tiene sesiones de uso muy largas. Para solucionarlos, utilizan herramientas de profiling, LeakCanary y añaden métricas y logs a través de hotfixes para investigar los problemas en producción.