Nubank

Scaling with integrity at Nubank with Flutter

Métricas de éxito

30%

mejor tasa de éxito de fusión en comparación con iOS

600%

tasa de fusión más rápida

Goal

Nubank es el banco digital independiente más grande fuera de Asia, lo que brinda a más de 48 millones de personas una forma segura y accesible de administrar sus vidas financieras desde la palma de su mano. Utilizando tecnología en la nube y una interfaz de usuario optimizada, su objetivo es eliminar la complejidad de la banca para la gente común.

La empresa ha crecido de manera extremadamente rápida y necesitaban una forma de desarrollar y lanzar nuevos productos rápidamente sin sacrificar la calidad. Desafortunadamente, Nubank tuvo dificultades para encontrar suficientes especialistas nativos en desarrollo móvil para seguir el ritmo de sus ambiciosos planes. Como resultado, sus equipos de iOS y Android a menudo estaban desequilibrados, lo que provocaba que una plataforma lanzara una función antes que la otra. Además de eso, escribir cada función dos veces comenzó a sentirse como una pérdida de tiempo.

Nubank llegó a la conclusión de que los equipos especializados no escalan bien y comenzó a buscar una forma de tener equipos únicos que desarrollaran funciones de extremo a extremo. Con una sola plataforma híbrida, los desarrolladores de backend podrían contribuir al frontend móvil y los productos podrían lanzarse mucho más rápido. Todo lo que necesitaban hacer era encontrar la tecnología multiplataforma adecuada para las necesidades de Nubank.

Why Flutter?

Nubank reunió a un grupo de trabajo para investigar algunas de las plataformas híbridas más populares para dispositivos móviles, incluyendo Kotlin Native, React Native y Flutter. El objetivo era encontrar una solución que permitiera a sus equipos trabajar de forma autónoma, desarrollando la aplicación móvil y entregando valor sobre una única arquitectura, lenguaje de programación y conjunto de convenciones.

El grupo de trabajo, integrado por los desarrolladores móviles más experimentados de Nubank, evaluó sus opciones en función de 11 prioridades principales. Estas incluían la experiencia del desarrollador, la viabilidad a largo plazo de la plataforma, el costo incremental de la abstracción, el riesgo de la abstracción no lineal y la capacidad de la aplicación para verse y sentirse igual en iOS y Android.

Para hacer esto, asignaron a cada una de las plataformas candidatas una puntuación en cada una de estas áreas a través de pruebas prácticas, conversaciones con especialistas, sesiones de comentarios, pruebas de usabilidad internas y más.

Para las pruebas de usabilidad, el grupo de trabajo observó a desarrolladores de todos los niveles y orígenes realizar una prueba de una hora. A los desarrolladores se les dio una aplicación funcional, un entorno de desarrollo, documentación de la plataforma y algunas tareas para codificar, como construir un botón de «acceso directo». Luego, después de la prueba, respondieron a un breve cuestionario.

Como descubrió el grupo de trabajo, a los desarrolladores les encantó Flutter. En comparación con las otras opciones, ofrecía mejores capacidades de Hot Reload, una sólida documentación y una API más estable. Y era simplemente muy divertido de usar. Así que con su investigación completada, el grupo de trabajo publicó un informe de 54 páginas nombrando a su plataforma recomendada: Flutter.

Their Solution

La elección estaba clara. Flutter brilló en casi todas las categorías, superando a otras plataformas en términos de experiencia del desarrollador, documentación, estabilidad de la API, falta de especialización de la plataforma y más. Al equipo también le encantaron las capacidades de prueba de Flutter, especialmente la infraestructura de pruebas integrada para pruebas unitarias, de integración y de extremo a extremo sin necesidad de renderizar en pantalla.

Una vez tomada la decisión, Flutter se convirtió en la solución de referencia de Nubank para el desarrollo móvil. Desde entonces, todas las nuevas funciones se han escrito en Flutter, y las funciones heredadas se han ido migrando con el tiempo.

«Flutter tenía todo lo que necesitábamos directamente listo para usar: buena documentación sobre cómo integrar nuestra aplicación, un Hot Reload que realmente funciona, soporte de la comunidad y herramientas».

- Igor Borges, ingeniero de software, Nubank

«Tener a Flutter como nuestra tecnología principal ha reducido significativamente la barrera, permitiendo que nuevos ingenieros puedan contribuir a nuestra aplicación a los pocos días de su incorporación».

- Noe Branagan, gerente de ingeniería, Nubank

Results

Flutter ha sido un cambio de juego para Nubank, permitiéndoles seguir escalando sin sacrificar la calidad. Muchos de sus ingenieros han podido hacer la transición a full-stack, incrementando la productividad y el disfrute de los desarrolladores al mismo tiempo. Y debido a que el proceso de incorporación a Flutter es tan simple, los nuevos ingenieros pueden contribuir a la aplicación a los pocos días de haberse incorporado. Incluso los ingenieros que no son de móviles pueden volverse productivos en solo unas pocas semanas.

Su tiempo de compilación también ha mejorado drásticamente. Usando Flutter, Nubank lanzó una nueva función de seguro de vida en solo tres meses, su lanzamiento más rápido hasta la fecha. Anteriormente, desarrollar y lanzar un nuevo producto les tomaba desde varios meses hasta un año entero. Para acelerar aún más el desarrollo, Nubank también adoptó una herramienta de desarrollo interna experimental que utiliza Flutter Desktop, la cual reduce el uso de la batería de las laptops al omitir los emuladores. También ayuda a realizar pruebas rápidas en diferentes dimensiones de dispositivos.

De hecho, Flutter ha provocado mejoras de rendimiento en todos los ámbitos. Con Flutter, la tasa de éxito de fusión de Nubank es un 30% mejor de lo que era con las plataformas nativas. En promedio, los pull requests de Flutter tardan solo 9.9 minutos en fusionarse, en comparación con un promedio de 70.45 minutos en todas las plataformas. Flutter también le ha dado a Nubank más información detallada, como la capacidad de medir el tamaño de la aplicación por función o paquete, y correlacionar métricas con otros sistemas.

También proporciona una mayor consistencia en la interfaz de usuario. Al utilizar herramientas nativas, Nubank solía tener bibliotecas de componentes múltiples e inconsistentes. Ahora tienen su propio sistema de diseño, que los equipos de producto pueden ampliar y personalizar. También crearon una herramienta para entregar dinámicamente nuevo contenido a su aplicación, lo que les permite localizar el contenido sin lanzar una nueva versión de la aplicación.

En Nubank, Flutter ya forma parte de la cultura de manera definitiva.