2x04 | Charlando con los Androides de Tinder
Resumen
Los invitados, Carlos, César e Iñaki, desglosan todo, desde la estructura organizativa de su equipo hasta las estrategias técnicas específicas que utilizan para gestionar una aplicación masiva y compleja. La conversación revela cómo abordan la modularización, la optimización de los tiempos de compilación y la colaboración en un entorno de desarrollo rápido y a gran escala.
Temas principales:
- Cultura y Onboarding: Detallamos la cultura de la empresa, centrada en el bienestar del empleado, y el minucioso proceso de onboarding remoto para nuevos ingenieros, que incluye un sistema de “buddy” y un equipo dedicado a facilitar la integración.
- Estructura del Equipo de Ingeniería: Una explicación de cómo el equipo de aproximadamente 35 desarrolladores Android se organiza en equipos y “pods” autónomos que trabajan sobre un monorepo con más de 500 módulos.
- Trunk-Based Development y Feature Flags: Mis invitados explican por qué abandonaron GitFlow en favor de Trunk-Based Development para evitar el “merge hell”, utilizando un sistema propio de feature flags (llamadas “levers”) para gestionar los lanzamientos de nuevas funcionalidades de forma segura.
- Estrategia de Modularización: Profundizamos en las razones detrás de su masivo esfuerzo de modularización (independencia, tiempos de compilación, organización) y su enfoque de separar los módulos en capas (UI, Dominio, Datos), utilizando módulos de API públicos para las integraciones.
- Experiencia de Desarrollador (Developer Experience): El equipo destaca su inversión en herramientas internas, como un portal centralizado (“Tinder Central”) y un fuerte enfoque en el caching remoto para reducir significativamente los tiempos de los builds en CI.
- Arquitectura del Onboarding: Analizamos la arquitectura del flujo de onboarding de usuarios, que funciona como una máquina de estados dirigida por el backend, y la evolución de su implementación en el cliente.
- Pipeline de CI/CD: Describimos cómo optimizan su pipeline de integración continua ejecutando tareas en paralelo, dividiendo los tests en diferentes jobs y centralizando todo el feedback directamente en la pull request de GitHub.
- Gestión de Traducciones: El equipo plantea su pregunta para un futuro invitado sobre cómo otras grandes empresas abordan el complejo proceso de gestionar las traducciones y la localización en una aplicación global.