Desde el momento en el que te inscribes en la lista de espera, pasando por el análisis de tu historial crediticio y el fantástico trabajo humano de nuestro equipo de servicio al cliente 24/7. Todo eso y más, mucho más: el equipo de ingeniería de software Nu está detrás apoyando todo lo que hacemos.
Para esto, al ser una empresa de tecnología que ofrece servicios financieros, tenemos un grupo de personas que están desafiando el status quo a diario. Su misión: hacer un poquito más fácil la vida de todos los colombianos, reducir la complejidad del sistema financiero, inventar productos financieros fáciles de usar, pensados para el usuario y sustentables en el tiempo.
Nuestros #CodeStars promueven nuestra (r)evolución morada desde la tecnología.
Por ello, los programadores que hacen parte del equipo de ingeniería de software Nu son los encargados de sacarla del estadio con sus ideas. En nuestra labor cotidiana, siempre tenemos como motor la invención de las mejores soluciones desde un entorno digital.
Hoy, quiero contarles cómo desarrollamos ese trabajo. En esta entrada, me propongo explicarles los basamentos con que trabajamos día a día en el equipo de ingeniería de software Nu.
¿Cómo están estructurados los equipos de ingeniería de software Nu?
Actualmente las más de 1000 personas que hacen parte del equipo de Ingeniería -contando también Nubank en Brasil y Nu México- se encargan de desarrollar y mantener cientos de microservicios que soportan el servicio que ofrecemos a los más de 40 millones de clientes que tiene Nu.
Estos ingenieros se encuentran distribuidos geográficamente. Principalmente en Brasil, en donde se encuentran nuestras oficinas principales. Luego, en Argentina contamos con un centro de desarrollo; en Alemania tenemos un equipazo de ingeniería de datos. En México y Colombia, que son los dos países en donde iniciamos operaciones en los últimos años, también trabajamos los ingenieros.
Resta decir que también tenemos oficinas en Estados Unidos, en donde se concentran sobre todo los ingenieros que trabajan en Clojure y Datomic, de la antigua Cognitect, que fue adquirida por Nubank el año pasado.
Fuertes y diversos
La conformación de los equipos no suele estar encasillada a un país o región. Por el contrario, lo normal es contar con equipos de personas de diferentes nacionalidades, zonas horarias e idiomas. Usamos el inglés como idioma oficial.
En términos de nuestra vida laboral cotidiana, y por tratarse de una empresa de la era tecnológica, Nu es muy flexible. Cada equipo está conformado por gente de diferentes chapters, squads, o tribes (ya veremos qué es esto) dependiendo de las necesidades del producto.
Esta organización nos permite enriquecer el intercambio entre personas con diferentes perspectivas y habilidades. Asimismo, cada equipo define su metodología de trabajo, siendo lo más común usar prácticas ágiles sin limitarse a una metodología específica o definida para toda la empresa.
Chapters, squads y tribes
De manera sencilla, podemos decir que en Nu nos dividimos en capítulos (Chapters), que son el equivalente a nuestro rol dentro de la empresa. Por ejemplo, Engineering, Data Science, Design, Communication, Customer support, etc.
Las “manadas” (squads) son equipos de personas de diferentes capítulos encargados de un proyecto en particular. Por ejemplo, lanzar la moradita en Colombia.
Y por último, las tribus (tribes) son equipos enfocados en áreas afines, como Data -obtención, procesamiento y aprovechamiento de datos-, Foundation -herramientas y código común o transversal-, Infosec -seguridad de la información de clientes y empleados- o People -todo lo relacionado con los Nubankers-, entre otros.
¿Cuál es el papel del chapter de ingeniería de software Nu?
Por ser una empresa de tecnología, en los equipos de Nu podemos encontrarnos con ingenieros de backend, frontend, mobile, data, devops, etc. Estos ingenieros se encargan de diseñar, implementar, mantener y probar los productos nuevos y los más de 900 servicios que tenemos actualmente.
Con el fin de que todo lo que hacemos en Nu sea posible, contamos con equipos dedicados 100% a lo que llamamos plataforma. vale decir, estamos dedicados 100% a nuestros servicios o código base, las múltiples herramientas que conforman la columna vertebral sobre la que desarrollamos nuestros productos. Así, favorecemos que los squads se enfoquen en los productos y no en código genérico o “transversal”.
La plataforma nos hace más eficientes. Podemos, por ejemplo, crear servicios desde cero y tenerlos desplegados en producción en cuestión de minutos. Así, no tenemos que preocuparnos por cablear despliegues, pipelines, escalamiento, disponibilidad, seguridad y demás.
Y por supuesto, no puede faltar el equipo de soporte interno de Ingeniería. Éste nos facilita la vida brindándonos lo que necesitemos en términos de conexiones, accesos, equipos, simplificación de procesos y todo lo que contribuya a trabajar de manera cómoda, eficiente y segura.
¿Cuáles son las tecnologías utilizadas en Nu?
Podríamos dedicar una sola entrada para hablar de todas las tecnologías que utilizamos en Nu, pero principalmente podemos mencionar Clojure, Datomic y Kafka.
Clojure es el lenguaje principal que usamos para la gran mayoría de nuestros servicios, es un lenguaje funcional no muy común, pero que es eficiente en manejo de recursos, escalable, rápido y seguro en ejecución.
Al ser 100% funcional y tener la inmutabilidad como pilar, nos facilita el adecuado manejo de la información de nuestros clientes, la cual almacenamos en Datomic, una base de datos también inmutable que nos permite ver el estado de la información en distintos puntos en el tiempo.
Para realizar la comunicación entre los servicios usamos Kafka, permitiéndonos producir/consumir más de 9 mil millones de mensajes por semana.
Aprendiendo lenguaje funcional en Nu
Al no ser tecnologías comunes, el conocimiento de Clojure y Datomic se convierten en algo opcional durante el proceso de selección, permitiendo que los procesos de selección se hagan en el lenguaje que los postulantes dominen.
Una vez las personas ingresan a Nu, comienza un período de onboarding en donde se enseñan las bases de las tecnologías que usamos, para luego iniciar un periodo de acoplamiento y participación en sesiones de pairing con ingenieros antiguos en el equipo.
En pocas palabras, Nu da las herramientas y el tiempo para aprender; por eso, buscamos ingenieros con ganas de aprender, excelentes habilidades de comunicación e ideas frescas. Lo principal es que no tengan miedo de aprender fallando, porque así es como día a día todo nuestro equipo busca librar al mundo de la complejidad financiera.
En Nu, no penalizamos el error; al contrario, se lo cobija y se lo usa para escalar en el conocimiento. No hay aprendizaje sin error.
¿Cómo es el flujo de trabajo de Ingeniería?
Principalmente en Nu nos enfocamos en escuchar a nuestros clientes. Siempre estamos pendientes de qué quieren, y buscamos darle solución a los problemas que más los aquejan. Éste ha sido siempre el diferenciador que nos ha permitido llegar a más de 40 millones de clientes al día de hoy, entre Colombia, Brasil, México.
Para esto tenemos diferentes equipos, como el de los Xpeers, quienes ayudan a los clientes diariamente y conocen sus principales solicitudes, problemas o sugerencias de mejora. O al equipo de Producto, que constantemente está analizando el mercado, buscando cómo innovar o proponiendo soluciones que rompan el molde.
Fase de Diseño
Una vez que se identifica una prioridad y se inicia la fase de Diseño, el equipo de ingeniería entra a analizar su viabilidad técnica y a definir un diseño inicial.
Las definición de diseño de producto se suele iterar en varias sesiones de whiteboarding -una “lluvia de ideas” frente a un tablero compartido-, en donde los interesados (de cualquier chapter) pueden participar para encontrar los “peros”. Todos aquí aportan ideas o proponen cambios, sin importar la experiencia, el equipo del que se venga o el conocimiento previo que se tenga.
Fase de Desarrollo
Con el diseño del producto listo, arranca la fase de Desarrollo. Para esto contamos con sesiones de mob o pairing, por las que dos o más ingenieros pueden desarrollar el código en conjunto.
Esta misma forma de trabajo se suele aplicar al momento de solucionar incidentes, o incluso hasta para revisar PRs, generando confianza y conocimiento distribuido de manera natural.
Fase de Validación
Una vez el código está aprobado por el equipo, éste es validado automáticamente por diferentes herramientas de verificación. Éstas revisan que nada se “rompa”, incluyendo pruebas unitarias, integración, validación de esquemas, formato del código, análisis estático, entre otras. Una vez el código se integra, es desplegado directamente a nuestros ambientes de staging y producción.
Actualmente este flujo es bastante eficiente y nos permite tener más de 100 despliegues diarios.
¿Cuál es el papel del chapter de ingeniería en la internacionalización de Nu?
En ingeniería es común que los productos crezcan. Y hacerlo de manera eficiente es quizá uno de los retos más grandes con el que cualquier empresa de tecnología se puede enfrentar, ya que siempre cargamos con lo que hicimos en el pasado.
Arreglar esos detallitos del ayer suelen requerir un esfuerzo gigantesco, que siempre se convierte en una inversión considerable de tiempo y dinero.
Es por esto que a medida que Nu se expande a más países, o por medio de nuevos productos, debemos buscar soluciones más genéricas sin afectar lo que ya existe, y sin perder la calidad, añadir burocracia o perder eficiencia.
El reto es que al ser un negocio que depende de regulaciones o leyes de cada país, no es tan fácil tener un producto genérico. Y nos vemos día a día adaptando o recreando módulos que puedan soportar lo que necesita cada mercado, afectando a veces la salida de nuestros productos.
Al respecto, puedes leer: “¿Por qué la moradita estuvo demoradita?”
Este tipo de retos varían en complejidad, y pueden ir desde usar CC (cédula de ciudadanía) para Colombia y no el CPF (Cadastro de Pessoa Física) que se usa en Brasil, hasta implementar todo el diferente manejo de intereses de tarjeta de crédito colombiano, también diferente del de Brasil.
Por eso, desde ingeniería siempre estamos afrontando retos, implementando productos, nuevos módulos, buscando soluciones, mirando cómo optimizar, cómo traernos lo que ya ha funcionado en otro mercado o como hacerlo genérico.
Todo esto con el fin de que nuestro crecimiento a futuros mercados sea más transparente y que lo que aprendimos hasta hoy sea tiempo ahorrado en lo que haremos mañana.
Por lo anterior es que decimos que en Nu siempre es el Día Uno: Day One.
¿Buscas ser parte del futuro?
Si lo tuyo son los códigos, tú también puedes desafiar lo establecido. Porque #ElFuturo esMorado.
Atrévete a formar parte de esta (r)evolución morada, y haz clic aquí para ver las nuevas oportunidades de unirte a nuestro equipo de ingeniería de software Nu.
Este contenido es parte de la misión de Nu Colombia de devolver a las personas el control sobre sus vidas financieras. ¿Aún no conoces a Nu? Obtén más información sobre nuestros productos e inscríbete en la lista de la moradita aquí.