Home ¿Cómo funciona la inge...

¿Cómo funciona la ingeniería de software en Nu?

Desde las facturas que enviamos por correo electrónico hasta un servicio al cliente sin par, nuestros ingenieros e ingenieras están detrás de todo lo que hacemos. Conocé de qué manera.

Cuando se trata de ingeniería de software en Nu (Nubank, en Brasil), es ineludible pensar en la app. Después de todo, fueron nuestros equipos de ingeniería quienes la desarrollaron. Pero su trabajo va mucho más allá de la aplicación, y no podría ser de otro modo.

Esto es así: somos una empresa de tecnología. Una empresa de tecnología que ofrece servicios financieros. Esto significa que nuestros ingenieros y nuestras ingenieras están detrás de todo lo que hacemos, ese largo recorrido digital que permite tener las facturas sin letra chica que enviamos por correo electrónico hasta aquel servicio al cliente que ha cosechado varios premios internacionales.

A continuación, te compartimos algunos principios sobre cómo funciona la ingeniería de software en Nu.

¿Cómo están estructurados los equipos de ingeniería de Nu?

Para hablar de esto, primero debemos explicar cómo se ve la estructura organizativa de Nubank.

En nuestra casa nos basamos en la metodología ágil, bien ponderada entre las empresas digitales. Buscamos organizar nuestra estructura para dar a los equipos más flexibilidad y autonomía, dividiendo a las personas en squads, capítulos, tribus y guilds (fraternidades).

Los “squads” son equipos de trabajo en los que las personas trabajan en pos de los mismos objetivos, como crear un nuevo producto, lanzar una campaña publicitaria o iniciar operaciones en un nuevo país.

Cada squad generalmente reúne a personas de diferentes “capítulos”. Un capítulo define el tipo de función que realiza una persona: hay capítulos de ingenieros, comunicadores, diseñadores, de servicio, etcétera. Esto refuerza nuestro valor en la construcción de equipos fuertes y diversos, enriqueciendo el intercambio entre personas con múltiples perspectivas y habilidades.

Además, los squads con mayor afinidad profesional están dentro de una misma área, llamada “tribu”. En Nu tenemos tribus de tarjetas de crédito, de marketing y de finanzas, entre muchas otros.

¿Pero qué hay de los equipos de ingeniería?

En Nu, tenemos más de 500 ingenieros divididos en 45 equipos diferentes. Esto significa que existe un lugar particular en la oficina donde se encuentren “las personas de ingeniería”, sino que se distribuyen entre los diferentes proyectos y productos.

Aún más, nuestra ingeniería se despliega por cuatro países: Brasil, donde se encuentra nuestra sede; Berlín (Alemania), donde tenemos un equipo de ingeniería de datos; México, donde comenzamos las operaciones de Nu en 2019; y Argentina, donde el mismo año se inauguró un hub tecnológico.

Para que todo esto funcione, la estructura de ingeniería en Nu es muy flexible. “Como estamos en un momento de rápido crecimiento, necesitamos tener las habilidades necesarias en los equipos adecuados”, dice Hanna Figueiredo, ingeniera de software para el equipo de Bill & Payments.

En síntesis, nos ocupamos activamente de encontrar las mejores combinaciones entre nuestra estrategia y lo más destacado de cada persona, y así ganar escala, ya sea en número de clientes o expandiéndonos a nuevos segmentos y geografías.

¿Cuál es el papel de la ingeniería de software en Nu?

En Nu creemos que si hay inteligencia, ella es colectiva.

Nubank es una empresa de tecnología, entonces todo lo que hacemos se basa en ingeniería de software. Básicamente, tenemos personas que se encargan del front-end, el back-end y otros que apoyan a estos equipos para que actúen.

Los equipos de front-end (la interfaz del usuario) se encargan de las plataformas donde nuestros clientes -y los clientes potenciales- interactúan con nosotros: la app, el sitio web y la aplicación web. También desarrollan el sistema que Xpeers, el equipo responsable de la atención al cliente, utiliza para hacer llamadas. En otras palabras, las personas del front-end son responsables de desarrollar las áreas que las personas ven, tocan, hacen clic.

Los equipos de back-end (o equipo de soporte) tienen el rol categórico de desarrollar todo lo que está detrás de nuestra operación, es la capa imperceptible para el usuario entiende sobre el dominio de cierto problema y se encarga de guardar la información del sistema de manera consistente.

Un ejemplo de esto es el resumen de cuenta que enviamos al correo electrónico de los clientes tan pronto como se cierra la factura de la tarjeta. Parece simple, pero hacerlo requiere un equipo de ingeniería completo centrado en garantizar que nuestros más de 13 millones de clientes con tarjetas de crédito activas tengan un control completo sobre sus compras, cuidando todo el flujo de cierre de la factura hasta el pago.

Para apoyar la operación de los ingenieros, hay equipos responsables de crear herramientas y procesos que ayudan en el día a día de los desarrolladores. Por caso, existe un programa que ayuda a probar la unidad entre diferentes servicios, asegurando la fluidez de la comunicación: hay más de 400 microservicios diferentes en Nu.

También tenemos un equipo que trabaja para garantizar que los ingenieros de Nu tengan el entorno necesario para desempeñar sus tareas de la mejor manera posible. Su función es, entre otras funciones, entender cómo se pueden simplificar los procesos o identificar qué herramientas se pueden optimizar.

Además, tenemos otro equipo responsable de comprender la salud de los sistemas de Nu y alertar a las áreas responsables si se identifican problemas en la operación. En ese sentido, buscamos garantizar que nuestros sistemas estén siempre online y sean funcionales para nuestros clientes.

¿Qué tecnologías se utilizan en Nu?

La ingeniería de Nubank es enorme; por lo tanto, necesitamos tecnologías que nos permitan crecer de manera eficiente y segura.

La mayoría de los servicios de Nu están escritos en Clojure y usamos Datomic como nuestra base de datos. “Como institución financiera, esto es importante para nosotros porque nunca perdemos ninguna información sobre lo que hacemos”, dice Hanna.

En 2019, inclusive, organizamos el evento Clojure más grande de América Latina: Clojure South.

Además, utilizamos otras tecnologías que funcionan bien con Clojure, como la base de datos Datomic y Kafka, como arquitectura de mensajería.

¿Cómo es el flujo de trabajo de ingeniería de software?

En Nu todo lo hacemos con el cuidado necesario que requiere una operación del tamaño de la nuestra: hay más de 20 millones de clientes repartidos en el 100% de los municipios brasileños. En México, en pocos meses de vida ya tenemos miles de clientes.

En este contexto, la demanda del equipo de ingeniería puede surgir de los propios ingenieros, de los gerentes de producto, de los XPeers -que escuchan diariamente los comentarios de los clientes- o de cualquier otra área.

Luego, el equipo necesita comprender cada demanda y dividirla en partes más pequeñas para que la ingeniería ponga manos a la obra. A partir de ello se forma una lista de tareas asignadas a los diferentes equipos, tareas que los ingenieros y las ingenieras tomarán a medida que terminen sus otros trabajos.

El objetivo es garantizar la máxima calidad de todo lo que se entrega, buscando puntos de mejora. Tan pronto como una persona finaliza un código, otra es responsable de revisarlo. 

Una vez que el código es aprobado pasa a la pipeline (“tubería”) de producción. En este paso, realizamos algunas pruebas para verificar si todo funciona bien. Si es así, entonces el código entra efectivamente en producción. Como dividimos cada demanda en pequeñas entregas, tenemos alrededor de 400 deploys (que es cuando el código pasa a producción) por semana.

“Para algunas demandas más grandes (y negocios más críticos), como la reestructuración de un servicio, habilitamos el nuevo código gradualmente”, dice Hanna. “Primero para el 1% de los usuarios. Si todo está bien, pasamos al 5% y así, hasta que alcanzamos el 100%”.

¿Cuál es el rol de la ingeniería en la internacionalización de Nu?

A medida que Nubank crece, los desafíos del equipo de ingeniería también aumentan. Además de garantizar que el sistema en Brasil continúe funcionando con excelencia para nuestros clientes brasileños, también debemos preparar nuestra plataforma para operaciones en México.

Parece fácil replicar un modelo exitoso en otros países, pero las características del sistema financiero de cada país son muy específicas. La misión de nuestros equipos es crear una base igual para todos los países y agregar módulos de acuerdo con las características de cada lugar.

“Esto es algo que comenzamos a hacer hace poco tiempo, por lo que todavía tenemos mucho por crecer”, dice Hanna. “Algo genial sobre Nu es que siempre tenemos una pila de cosas por hacer; siempre tenemos desafíos complejos y además divertidos que nos esperan en el futuro cercano”.

La pileta de pelotitas violetas en el hall de entrada del edificio principal de Nubank Brasil.

Si quisieras formar parte de nuestro equipo de ingeniería, consultá nuestras posiciones abiertas aquí, en nuestro canal Nubank On The Stage (en portugués) o en otros contenidos de nuestro blog:

Introduzca su nombre

Quiero recibir el newsletter