Das faturas que enviamos por email até o atendimento incrível ao cliente, nossas engenheiras e engenheiros estão por trás de tudo o que fazemos. Entenda!
Quando se fala em engenharia de software no Nubank, é fácil lembrar do app. Afinal, foram engenheiros que o desenvolveram. Mas o trabalho do nosso time de engenharia vai muito além do aplicativo – e não teria como ser diferente.
Somos uma empresa de tecnologia que oferece serviços financeiros. Isso significa que nossas engenheiras e engenheiros estão por trás de tudo o que fazemos – das faturas que enviamos por email até o atendimento incrível ao cliente.
Abaixo, veja como funciona a engenharia de software no Nubank.
Como os times de engenharia do Nubank são estruturados?
Para falar sobre isso, primeiro precisamos explicar como é a estrutura organizacional do Nubank.
Aqui, nos baseamos na metodologia Agile, muito conhecida entre empresas digitais. Por isso, buscamos organizar nossa estrutura para dar mais flexibilidade e autonomia aos times ao dividir as pessoas em squads, chapters, tribes e guilds.
Os squads são equipes de trabalho nas quais as pessoas trabalham pelos mesmos objetivos – como criar um novo produto, lançar uma campanha publicitária ou começar a operação em um novo país.
Cada squad costuma reunir pessoas de diferentes chapters. Um chapter define o tipo de função que uma pessoa desempenha – temos chapters de engenheiros, comunicadores, designers, atendimento, entre outros. Isso reforça nosso valor de construir times fortes e diversos, enriquecendo a troca entre pessoas com perspectivas e habilidades diferentes.
Além disso, os squads com maior afinidade ficam dentro da mesma área, chamada de tribe – aqui no Nu, por exemplo, temos as tribes de cartão de crédito, NuConta, marketing, People, entre diversas outras.
Mas e os times de engenharia?
No Nubank, temos mais de 430 engenheiros divididos em 45 times diferentes. Isso significa que não temos um lugar no escritório onde fica o “pessoal da engenharia” – eles estão espalhados entre projetos e produtos diferentes.
Mais do que isso, nossa engenharia também está em quatro países: Brasil, onde fica nossa sede; Berlim, onde temos um time de engenharia de dados; e México e Argentina, onde também iniciamos operações do Nu.
Para que tudo isso funcione, a estrutura da engenharia no Nubank é bastante flexível. “Como estamos em um momento de crescimento muito acelerado, precisamos ter as habilidades certas nos times certos”, diz Hanna Figueiredo, engenheira de software do squad de Bill & Payments.
Assim, aliamos o melhor de cada pessoa com nossa estratégia para ganhar escala – seja em número de clientes ou expandindo para novos segmentos e localizações.
Qual o papel da engenharia no Nubank?
Como o Nubank é uma empresa de tecnologia, tudo o que fazemos está fundamentado na engenharia. Basicamente, temos pessoas que cuidam do front-end, do back-end e outras que dão suporte para que esses times atuem.
Os times de front-end (ou interface frontal) cuidam das plataformas onde nossos clientes (ou potenciais clientes) interagem com a gente: app, site e web app. Eles também desenvolvem o sistema que os Xpeers, o time responsável pela excelência do cliente, usam para fazer os atendimentos. Em outras palavras, o pessoal de front-end é responsável por desenvolver as áreas que as pessoas veem, tocam, clicam.
Já os times de back-end (ou parte de suporte) têm o importante papel de desenvolver tudo o que está por trás da nossa operação – mas pode não ser visível para a maioria das pessoas.
Um exemplo disso é o boleto que enviamos para o email dos clientes assim que a fatura do cartão fecha. Parece simples, mas fazer isso exige um time inteiro de engenharia focado em garantir que nossos mais de 10 milhões de clientes do cartão tenham total controle sobre suas compras – cuidando de tudo o que tem a ver com o fluxo de fechamento da fatura até o pagamento.
Para suportar a operação dos engenheiros, existem times responsáveis por criar ferramentas e processos que ajudam no dia a dia dos desenvolvedores. Um exemplo é um programa que ajuda a testar a unidade entre serviços diferentes, garantindo a fluidez da comunicação – são mais de 400 micro serviços diferentes no Nu.
Além disso, temos um time que trabalha para garantir que engenheiros e engenheiras do Nubank tenham o ambiente necessário para trabalhar da melhor forma. O papel deles é ver como processos podem ser simplificados, ferramentas que podem ser otimizadas, entre outras funções.
Ainda, temos outro time responsável por entender a saúde dos sistemas do Nubank e alertar as áreas responsáveis caso sejam identificados problemas na operação. Dessa forma, buscamos garantir que nossos sistemas estejam sempre online e funcionais para nossos clientes.
Quais são as tecnologias usadas no Nubank?
Como dissemos, a engenharia do Nubank é enorme e, por isso, precisamos de tecnologias que nos permitam crescer com eficiência e segurança.
A maior parte dos serviços do Nubank são escritos em Clojure e usamos o Datomic como nosso banco de dados. “Como uma instituição financeira, isso é importante para nós porque nunca perdemos nenhuma informação do que fazemos”, conta Hanna.
Em 2019, inclusive, sediamos o maior evento de Clojure da América Latina: o Clojure South.
Além disso, utilizamos outras tecnologias que funcionam bem com Clojure, como o banco de dados Datomic e o Kafka como arquitetura de mensageria.
Como é o fluxo de trabalho da engenharia?
A engenharia tem um papel essencial no Nubank e tudo é feito com o cuidado necessário que uma operação do tamanho da nossa exige – são mais de 15 milhões de clientes espalhados por 100% dos municípios brasileiros.
Uma demanda para o time de engenharia pode surgir dos próprios engenheiros, dos gerentes de produto, dos Xpeers – que ouvem diariamente os feedbacks dos clientes – ou de qualquer outra área do Nubank.
Então, o time precisa entender cada demanda e quebrá-la em pequenas partes que podem ser feitas pela engenharia. Com isso, é formada uma lista de tarefas para os times – as quais os engenheiros e engenheiras vão puxando à medida que terminam outra atividade.
Assim que uma pessoa finaliza um código, outra fica responsável por revisá-lo. O objetivo é garantir a máxima qualidade de tudo o que é entregue, buscando pontos de melhoria.
Código aprovado, ele passa para a pipeline de produção. Nessa etapa, rodamos alguns testes para verificar se está tudo funcionando. Se sim, o código entra em produção. Como quebramos cada demanda em pequenas entregas, temos cerca de 400 deploys (quando o código entra em ação) por semana.
“Para algumas demandas maiores (e mais críticas para o negócio), como a reestruturação de um serviço, ‘ligamos’ o novo código gradualmente”, diz Hanna. “Primeiro para 1% dos usuários. Se estiver tudo certo, passamos para 5% e assim até chegar em 100%”, complementa.
Qual o papel da engenharia na internacionalização do Nubank?
À medida que o Nubank cresce, os desafios do time de engenharia também aumentam. Além de garantir que o sistema no Brasil continue funcionando com excelência para nossos clientes brasileiros, também precisamos preparar nossa plataforma para as operações no México e na Argentina.
Parece fácil replicar um modelo de sucesso em outros países, mas as características do sistema financeiro de cada um são muito específicas. Você sabia, por exemplo, que boleto é uma iguaria brasileira? A missão do nosso time é criar uma base igual para todos os países e acrescentar módulos de acordo com as características de cada lugar.
“Isso é algo que começamos a fazer há pouco tempo, então ainda temos muito espaço para crescer”, conta Hanna. “Algo muito legal no Nubank é que a gente tem uma stack muito madura, mas ainda temos desafios muito complexos e divertidos pela frente”, finaliza.