(Em colaboração com Wilker Lúcio.)

O Nubank ajudou a transformar o cenário dos serviços financeiros no Brasil. Em 2014, nós lançamos nosso primeiro produto: um cartão de crédito sem tarifas. Desde então, nos tornamos a empresa mais inovadora da América Latina e o maior banco digital independente do mundo, com mais de 22 milhões de clientes.

Além do cartão de crédito, nosso portfólio de produtos inclui: a conta Nubank, uma poupança digital; Recompensas Nubank, um programa de recompensas por fidelidade; Empréstimo para empréstimos pessoais; e a Conta PJ, uma conta digital para negócios pequenos e médios. Empréstimo e a Conta PJ são os nossos produtos mais recentes, lançados em 2019, mesmo ano em que anunciamos o início de nossas operações no México e um centro tecnológico na Argentina.

Grande parte do nosso sucesso provém do fato de não sermos uma empresa financeira propriamente dita: somos uma empresa de tecnologia com foco no desenvolvimento de soluções financeiras.

Em outras palavras, a tecnologia está no centro de tudo o que fazemos – e é por isso que a engenharia de software é uma competência essencial do Nubank.

Nós usamos práticas de desenvolvimento de software de ponta; o Nubank conquistou grandes benefícios ao abraçar conceitos práticos de programação funcional para construir nosso negócio. Esses conceitos desempenham um papel essencial na clareza e consistência de nossa base de código, e nos esforçamos muito para garantir que os engenheiros os entendam quando ingressam na empresa.

Estes são alguns exemplos de práticas e técnicas que adotamos:

  • Microsserviços escalonáveis horizontalmente, escritos principalmente em Clojure, usando Finagle e aproveitando técnicas de programação funcional e arquitetura hexagonal (mais sobre isso neste vídeo);
  • Trabalhos de alto rendimento e comunicação entre serviços usando Kafka;
  • Integração e implantação contínuas na AWS;
  • Armazenar dados em Datomic e DynamoDB;
  • Monitoramento e observabilidade com Prometheus;
  • Executar o máximo possível no Kubernetes;

É interessante notar que a maior parte de nossos engenheiros nunca havia trabalhado com essas tecnologias em particular (que estão abstraídas em uma ferramenta, de modo que você não precise conhecê-las a fundo, ou são fáceis de adotar). Eles também não tinham tido contato com serviços financeiros, que são um pouco mais difíceis de adotar. De qualquer forma, teríamos que fazer o mesmo, independentemente da tecnologia.

Conheça nossas oportunidades

Por que Clojure e Programação Funcional?

O mundo em que vivemos tem máquinas conectadas à nuvem, com múltiplos núcleos que nos permitem executar várias coisas em paralelo. Além disso, o Nubank fornece serviços no domínio financeiro, que é muito próximo de funções matemáticas – e a programação funcional é uma excelente opção para os dois casos.

Os sistemas antigos que criamos antes de entrarmos para o Nubank usavam linguagens e estruturas que forçavam você a adicionar códigos em excesso para solucionar um problema, o que torna a evolução do sistema cada vez mais difícil com o passar do tempo. Clojure, por outro lado, tem construtos simples que nos permitem focar no problema que estamos solucionando, tornando a evolução do sistema um pequeno desafio incremental que não fica muito mais difícil com o tempo.

A maior parte da nossa base de códigos pode ser compreendida localmente, olhando para qualquer função pura, entendendo seus resultados para qualquer conjunto de entradas. Raramente é necessário inspecionar ou recriar o estado interno dos objetos. Os dados se movem através do sistema de modo combinável, examinável, consistente e imutável (sem a necessidade de escondê-lo dentro de objetos).

Nós construímos uma série de facilitadores em Clojure nos últimos seis anos – ferramentas úteis que nos ajudam a ser mais rápidos e a escalonar em um ritmo acelerado. Com Clojure, podemos criar facilmente novos produtos. Quando se trata da infraestrutura, por exemplo, temos um pipeline de entrega contínuo que permite a qualquer alteração no master do GitHub iniciar a produção em 30 minutos. Isso é feito com a ajuda de arquivos de configuração de EDN declarativos que definem como são a implantação e o pipeline. É muito mais fácil testar um código funcional, e isso nos dá a confiança para implantar uma média de 50 alterações por dia em um domínio crítico.

Velocidade é fundamental para o Nubank enquanto ampliamos nossa base de clientes e nos expandimos para novos segmentos e geografias. Estamos evoluindo continuamente nossos produtos e estrutura – e é por isso que estamos sempre buscando novos talentos para a nossa equipe.

Confira nossas oportunidades de trabalho 

Engenharia no Nubank

Atualmente, temos mais de 400 engenheiros trabalhando em nossa sede em São Paulo, no nosso centro de engenharia em Berlim e em nossos escritórios na Cidade do  México e Buenos Aires. Nós também cultivamos um ambiente global independentemente da localização, pois acolhemos mais de 30 nacionalidades e adotamos o inglês como idioma principal.

Procuramos indivíduos com dedicação ao que fazem e entusiasmo para resolver problemas complexos em grande escala, tudo isso enquanto trabalham em um ambiente seguro e acolhedor. Procuramos pessoas que queiram fazer um trabalho de impacto positivo na vida de milhões de pessoas que, do contrário, ficariam presas em uma relação burocrática e ineficiente com o próprio dinheiro.

Confira nossas oportunidades de trabalho 

Conheça nossas oportunidades