EN
Volver a proyectos

ManoMano: Escalando una App de Millones de Usuarios

De Junior a Senior en 3 años: Cómo optimicé la performance de una app de e-commerce reduciendo el load time un 60% y el tamaño un 70%.

ManoMano: Escalando una App de Millones de Usuarios

Después de un año en SiVasDescalzo aprendiendo las bases del desarrollo mobile, llegué a ManoMano en 2022. Era una empresa completamente diferente: un marketplace de bricolaje y hogar con millones de usuarios en varios países europeos.

Entré como Junior Developer. Salí tres años después como Senior.

Esta es la historia de cómo aprendí a escalar una aplicación mobile de verdad.

El Contexto: Una App Grande, Un Problema Grande

ManoMano es el marketplace líder de bricolaje en Europa. Cuando llegué:

  • Millones de usuarios activos mensuales
  • Catálogo masivo: Miles de productos de múltiples proveedores
  • Multi-país: Francia, España, Italia, Alemania, Reino Unido, Bélgica
  • Equipo grande: ~10 developers mobile coordinando features

La app funcionaba. Pero tenía problemas.

Home inicial de ManoMano
La home de ManoMano: un marketplace complejo con miles de productos

El Problema: Android Era Lento

Muy lento.

Los números eran claros:

  • Load time inicial: 5 segundos en dispositivos Android de gama media
  • Tamaño de la app: Excesivamente grande, afectando las descargas
  • Experiencia de usuario: Frustrante, especialmente en conexiones lentas

Para una app de e-commerce, donde cada segundo cuenta para la conversión, esto era crítico.

¿Por qué Android específicamente? La diversidad de dispositivos Android (desde gamas bajas hasta flagships) y la variedad de versiones del sistema operativo hacían que optimizar para todos fuera un desafío continuo.

Mi Evolución: De Junior a Senior

Año 1: Aprender el Sistema

Mi primer año fue absorber:

  • Arquitectura de una app grande: Módulos, features, navegación compleja
  • Trabajo en equipo: Coordinación con 10 developers, procesos de code review
  • El negocio: Cómo funciona un marketplace a escala europea

Trabajé en features como cualquier junior:

  • Implementación de pantallas
  • Fixes de bugs
  • Pequeñas mejoras de UI

Pero lo más valioso fue entender cómo funcionaba el sistema completo.

Año 2: Especializarme en Performance

Mi segundo año fue donde encontré mi nicho: performance y animaciones.

Me di cuenta de que podía:

  • Identificar cuellos de botella
  • Optimizar renders innecesarios
  • Implementar animaciones fluidas sin comprometer performance

El equipo necesitaba a alguien que se especializara en esto. Me ofrecí.

Los resultados empezaron a llegar:

Optimización de Load Time en Android:

  • Antes: 5 segundos
  • Después: 2 segundos
  • Mejora: 60%

¿Cómo?

  • Lazy loading de módulos no críticos
  • Optimización de imágenes y assets
  • Reducción de librerías innecesarias
  • Code splitting estratégico

Reducción del Tamaño de la App:

  • Reducción: 70% del tamaño original
  • Impacto: Más descargas, menor fricción

¿Cómo?

  • Eliminación de dependencias no utilizadas
  • Compresión agresiva de assets
  • Heroku y assets dinámicos donde tenía sentido
  • Auditoría completa del bundle

Año 3: Liderazgo Técnico

Mi tercer año fue de consolidación:

  • Velocidad de implementación: Me había vuelto rápido sin sacrificar calidad
  • Features complejas: Capaz de liderar proyectos end-to-end
  • Mentoría: Ayudando a nuevos juniors a entender el sistema

El Sistema de Monitorización: Prevenir, No Reaccionar

Una de mis contribuciones clave fue el sistema de monitorización automática de performance.

El concepto era simple pero poderoso:

  1. Métricas automáticas: Cada screen tracked su tiempo de render
  2. Thresholds definidos: Cada pantalla tenía un límite máximo aceptable
  3. Alertas automáticas: Si una screen superaba el threshold, se activaba una alerta
  4. Proceso de revisión: El equipo revisaba por qué ocurrió y si era aceptable

Este sistema nos permitió:

  • Detectar regresiones antes de llegar a producción
  • Mantener la performance a lo largo del tiempo
  • Tomar decisiones informadas sobre trade-offs de performance

Ya no reaccionábamos a quejas de usuarios. Preveníamos problemas antes de que existieran.

Features Que Implementé

Durante tres años, trabajé en proyectos de diversa complejidad:

1. Wishlist (Lista de Deseos)

Sistema completo para que usuarios guarden productos favoritos:

  • Sincronización entre dispositivos
  • Notificaciones de cambio de precio
  • Compartir wishlists

2. Revamp de la Home

Rediseño completo de la pantalla principal:

  • Nuevo layout más moderno
  • Secciones dinámicas personalizadas
  • Performance optimizada (el desafío más grande: cargar muchos productos sin lag)
Listado de productos
Sistema de listado de productos optimizado: carga rápida incluso con catálogos masivos

3. Revamp del Carrito

Mejora de la experiencia de checkout:

  • UI más clara
  • Menos pasos hasta el pago
  • Mejor manejo de promociones y descuentos

4. Sistema de Gestión de IVA por País

Feature compleja debido a las regulaciones europeas:

  • Cálculos dinámicos según país
  • Precios correctos en múltiples monedas
  • Edge cases y validaciones

5. Ofertas y Catálogos Ecológicos

  • Sistema de ofertas flash
  • Filtros de productos ecológicos
  • Badges visuales para productos sostenibles
Página de producto
Página de detalle de producto: toda la información necesaria para la decisión de compra

El Impacto en el Negocio

Mi especialización en performance y mi velocidad de implementación tuvieron impacto directo:

Adaptabilidad ante cambios de scope: En una empresa grande, los requisitos de producto cambian constantemente. Mi capacidad de pivotar rápido sin comprometer calidad se volvió valiosa.

Fiabilidad: Las features que entregaba funcionaban. En producción. Para millones de usuarios. Consistentemente.

Performance sostenida: El sistema de monitorización garantizaba que las optimizaciones duraran. No era solo “arreglar y olvidar”.

El Entorno Exigente: La Mejor Escuela

ManoMano tenía dos tech leads extremadamente exigentes.

Sus code reviews eran legendarios:

  • PRs rechazados: Si tu código no cumplía los estándares, vuelta a empezar
  • Feedback iterativo: “Esto puede estar mejor” significaba realmente “rehazlo”
  • Patrones de diseño: Se esperaba que usaras las mejores prácticas, no soluciones rápidas
  • Sin excepciones: Junior o senior, los estándares eran los mismos

Al principio era frustrante. ¿Por qué rechazar un PR que funciona?

Con el tiempo entendí: funcionaba no era suficiente. Tenía que:

  • Ser mantenible
  • Seguir los patrones del proyecto
  • Estar bien testeado
  • Ser eficiente

Este entorno exigente me preparó para el futuro. Me enseñó a ser autoexigente conmigo mismo.

Hoy, cuando reviso mi propio código, escucho las voces de esos tech leads: “¿Esto puede estar mejor? Entonces hazlo mejor”.

Lecciones Aprendidas

1. La Excelencia Técnica Requiere Disciplina

No basta con escribir código que funcione. Hay que escribir código que:

  • Funcione hoy
  • Funcione mañana
  • Sea fácil de mantener por otros
  • Sea eficiente

Esta disciplina no viene natural. Se aprende en entornos que la exigen.

2. La Performance Es una Feature

Los usuarios no ven tu código. Ven si la app es rápida o lenta.

Una app lenta con todas las features del mundo pierde frente a una app rápida con menos features.

La performance no es un “nice to have”. Es crítica.

3. Especializarse Tiene Valor

En un equipo grande, ser “el que sabe de X” tiene valor enorme. En mi caso:

  • Performance optimization
  • Animaciones fluidas
  • Identificación de cuellos de botella

Esto me hizo más valioso para el equipo y aceleró mi crecimiento a senior.

4. Los Sistemas Previenen Problemas

El sistema de monitorización de performance era más valioso que mil optimizaciones puntuales.

Los buenos sistemas escalan. Las soluciones puntuales no.

5. El Crecimiento Viene de la Exigencia

Trabajar en un entorno exigente, con tech leads que no aceptan mediocridad, aceleró mi crecimiento exponencialmente.

Si todos tus PRs se aprueban fácilmente, probablemente no estás creciendo lo suficientemente rápido.

Resultados Finales

Después de tres años en ManoMano:

  • Load time: 5s → 2s (60% de mejora)
  • Tamaño de app: Reducción del 70%
  • Sistema de monitorización: Implementado y funcionando
  • Múltiples features: Wishlist, revamps, sistema de IVA, ofertas, catálogos
  • Promoción: De Junior a Senior Developer
  • Preparación: Listo para el siguiente desafío

ManoMano fue mi MBA en desarrollo mobile a escala.

Reflexiones Finales

Escalar una app no es solo sobre tecnología. Es sobre:

  • Procesos: Code reviews, CI/CD, testing, monitoring
  • Equipo: Coordinación, comunicación, estándares compartidos
  • Mentalidad: Pensar en millones de usuarios, no en casos de uso individuales
  • Excelencia: Nunca conformarse con “funciona”, siempre buscar “funciona bien”

ManoMano me enseñó todo esto. Pero más importante, me enseñó que los entornos exigentes, aunque duros, son donde ocurre el crecimiento real.

Si SiVasDescalzo fue mi introducción al desarrollo mobile, ManoMano fue mi maestría.

Y me preparó perfectamente para lo que vendría después: ser el experto mobile en una startup que lo necesitaba desesperadamente.


¿Buscas crecer como developer? Busca entornos exigentes. Busca tech leads que rechacen tu código. Busca problemas complejos a escala. El crecimiento no viene de la comodidad.