most read
Life at Nu
Conheça a sede do Nubank em Pinheiros, São Paulo/Brasil jan 11
Design
A nova aparência do Nubank: conheça nossa nova logo maio 17
Culture & Values
Como os valores e a cultura da Nu moldam os produtos que criamos ago 7
Careers
We are building diverse teams with the most creative and innovative professionals for each position we open.



No Nu Engineering Meetup #15, a programação funcional saiu do rótulo de nicho e virou prática concreta. Alberto Souza, Engenheiro de Software no Nubank e criador do ecossistema Dev + Eficiente, abriu a noite conectando paradigmas a decisões de design do dia a dia.
Rafael Ferreira, Programador Python Sênior, educador na Rocketseat e fundador da iniciativa Programador Lhama, apresentou uma visão de arquitetura funcional que nasce na teoria e desemboca em código testável e previsível. Marcelo Arbore, Diretor de Engenharia na Oracle Brasil com mais de quinze anos de experiência em nuvem híbrida e distribuída, trouxe um experimento unindo Clojure, Datomic e Oracle 23AI para busca vetorial e aplicações com dados multimodelo.
Este post organiza as principais ideias e costura o tema com dúvidas recorrentes de quem olha para o Nubank e pensa que não se encaixaria por não conhecer linguagens funcionais.
Antes de tudo, uma boa pergunta
Essa pergunta aparece com frequência em entrevistas, eventos e comentários de blog: “preciso saber Clojure para trabalhar no Nubank?”. A resposta é tão direta quanto a pergunta. Não. O que buscamos é curiosidade, fundamentos sólidos e vontade de aprender.
A linguagem é uma ferramenta a serviço dos princípios de engenharia que valorizamos. Essa discussão já apareceu em conversas com a comunidade, como na entrevista que Alex Miller deu ao Hammock Podcast. Lá, ele falou de jornadas de aprendizado e posicionou as escolhas de linguagem como meios, não fins. Você pode explorar essa conversa aqui.
Check our job opportunies
O que é programação funcional e por que ela importa
A programação funcional é uma abordagem que favorece estruturas imutáveis, funções puras e composição previsível. Com ela, temos mais clareza sobre o que muda e onde muda.
Em termos práticos, isso significa que as transformações de dados retornam novos valores em vez de atualizar variáveis no lugar; que efeitos colaterais ficam concentrados; e que o caminho dos dados pode ser lido como um pipeline.
Uma introdução acessível a esse modo de pensar está no texto Functional programming with Clojure, que mostra como princípios se traduzem em decisões de design que facilitam teste, paralelismo e manutenção.
Como isso se traduz em Clojure no Nubank
Clojure é a nossa linguagem principal em muitos sistemas. A escolha dialoga com a ênfase em imutabilidade e com o uso de bancos orientados a histórico, como o Datomic.
Essa história já foi contada por aqui em Clojure’s journey at Nubank, onde detalhamos razões técnicas e culturais para adotar o ecossistema. A decisão não cria um clube exclusivo. Ela cria um ambiente que incentiva foco em regras de negócio, clareza de efeitos e experimentação responsável.
Para quem quer mergulhar nos bastidores, a série especial Clojure turns 15 registra debates sobre evoluções da linguagem e seu impacto no nosso dia a dia.
Chegar sem saber Clojure é possível
Muita gente que entrou no Nubank nunca havia programado em Clojure. Alberto Souza, durante sua fala, contou como aprendeu do zero e como princípios funcionais passaram a influenciar seu código em outras linguagens.
A mensagem central é libertadora. Paradigmas não são dogmas, eles são lentes. Você pode levar imutabilidade, coesão e funções puras para Java, Python e JavaScript, do mesmo jeito que traz conceitos de coesão e modelagem orientada a domínio para o Clojure.
No Hammock Podcast, exploramos essa jornada pessoal e técnica no episódio Journeys in Code: Clojure, Datomic e crescimento pessoal. A conclusão é que aprender a linguagem vem com o contexto certo, com pares por perto e com problemas interessantes para resolver.
Do quadro branco ao código em produção
As três apresentações do meetup mostram como a teoria se traduz em prática.
Alberto destacou como a imutabilidade simplifica a depuração e reduz bugs ao concentrar mutações em pontos únicos do fluxo. Rafael apresentou padrões de arquitetura funcional em Python, como o “service handle” e o “tagless final”, que isolam efeitos e mantêm a previsibilidade do sistema.
E Marcelo, por sua vez, demonstrou um experimento unindo Clojure, Datomic e Oracle 23AI para construir um serviço de busca vetorial com embeddings, uma prova de que o paradigma funcional pode coexistir com tecnologias modernas de dados e IA.
Essas abordagens refletem uma filosofia de engenharia orientada à simplicidade e clareza. Cada decisão, da função pura ao pipeline declarativo, é pensada para manter o sistema compreensível a longo prazo.
Aprendizado como parte do trabalho
Quando dizemos que não é preciso conhecer Clojure para participar dos nossos processos seletivos, falamos também sobre como apoiamos o aprendizado desde o primeiro dia. O onboarding técnico é estruturado para isso: combinar contexto de produto, pares experientes e um ambiente seguro para fazer perguntas, explorar e errar.
Ao longo das primeiras semanas, quem entra tem contato com conceitos do ecossistema funcional e aprende na prática, por meio de pair programming, revisões de código e mentorias. A curva de aprendizado existe e é compartilhada.
O que muda na prática
Trabalhar em um ambiente orientado à programação funcional não é apenas mudar a sintaxe, mas transformar a forma de pensar.
Esses princípios atravessam linguagens e paradigmas e explicam por que a engenharia funcional é uma mentalidade que molda o jeito de construir produtos no Nubank.
A programação funcional é um convite a pensar de forma mais clara sobre dados, efeitos e evolução de sistemas. No Nubank, criamos um ambiente que estimula aprendizado contínuo, colaboração e experimentação segura. Se você se identifica com essa maneira de construir, este é um ótimo ponto de partida para a sua jornada.
Check our job opportunies