Há pouco mais de um mês, o escritório do Nubank na Vila Leopoldina, em São Paulo, tornou-se o ponto de encontro da comunidade Clojure de toda a América do Sul e de outras regiões. A segunda edição do Clojure South reuniu mais de 200 desenvolvedores, pesquisadores e entusiastas da linguagem para dois dias de compartilhamento de conhecimento, conexões e celebração da programação funcional.

O evento reforçou o papel do Brasil como um dos hubs mais vibrantes para a comunidade Clojure e o papel do Nubank como um ponto focal ativo para comunidades de tecnologia.

Foi nesse ambiente de entusiasmo compartilhado que Alessandra Sierra, Principal Software Engineer no Nubank, abriu a conferência com sua palestra “12 Years of Component” (12 Anos de Component), refletindo não apenas sobre a história de uma das bibliotecas mais influentes de Clojure, mas sobre sua experiência pessoal ajudando a moldar a forma como milhares de desenvolvedores trabalham hoje.

Onde a jornada começou

A história de Alessandra remonta a 2007, quando ela participou de um meetup em Nova York, onde Rich Hickey apresentou publicamente o Clojure pela primeira vez. Ela saiu daquela sessão impressionada, pois o Clojure trazia o poder de um REPL (Read-Eval-Print Loop) interativo para o ecossistema JVM, permitindo que desenvolvedores inspecionassem e modificassem programas em execução e receberem feedback imediato.

Sierra tornou-se uma das primeiras a adotar o Clojure profissionalmente e fez contribuições iniciais significativas para sua biblioteca padrão. Em poucos anos, isso a levou a ingressar na Relevance (posteriormente renomeada para Cognitect), que foi adquirida pelo Nubank em 2020.

Conheça nossas oportunidades

O poder do REPL e a frustração das interrupções

Como consultora na Cognitect, trabalhando com equipes que adotavam Clojure para aplicações reais, Sierra notou um padrão recorrente: o REPL dava aos desenvolvedores enormes vantagens em termos de feedback e velocidade, mas muitas estruturas de aplicação tornavam essa experiência mais difícil do que deveria ser.

No início dos anos 2010, o desenvolvimento web em Clojure frequentemente girava em torno do Ring: simples e elegante, mas com limitações. Rodar um servidor Jetty a partir do REPL poderia bloquear a thread principal, e recarregar o código muitas vezes deixava definições obsoletas na memória. Reiniciar o REPL tornou-se uma rotina cansativa e frustrante.

Sierra queria que os desenvolvedores mantivessem o fluxo do desenvolvimento interativo mesmo em sistemas complexos e com estado (state). A pergunta central era simples, mas fundamental: Como um sistema pode continuar rodando enquanto o desenvolvedor continua a evoluí-lo?

O nascimento do Component

Em vez de aceitar o atrito causado por reiniciar o REPL toda vez que o código mudava, Sierra passou os anos seguintes projetando uma nova disciplina — um fluxo de trabalho que viria a ser conhecido como Reloaded Workflow, nomeado após seu amplamente lido post de blog “My Clojure Workflow, Reloaded”.

O objetivo era direto, porém transformador: os desenvolvedores deveriam ser capazes de evoluir um sistema em execução de forma segura, consistente e sem perder o contexto.

Essa abordagem combinava a biblioteca tools.namespace com o Component, além de práticas de design que incentivavam dependências explícitas, minimizavam o estado global e separavam a lógica pura das fronteiras com estado. O resultado foi uma experiência de desenvolvimento centrada no REPL, onde as aplicações podiam ser iniciadas, paradas, atualizadas e inspecionadas em tempo real, sem quebrar o fluxo de trabalho.

O Component ofereceu uma maneira leve de modelar sistemas como partes independentes com ciclos de vida claros, sem sacrificar o design funcional. Sua pequena interface (API) e estabilidade de longo prazo foram intencionais: as mudanças eram introduzidas de forma lenta e deliberada, ajudando a biblioteca a permanecer simples, acessível e durável.

Um impacto duradouro

Doze anos após sua introdução, o Component continua sendo uma das bibliotecas mais influentes no ecossistema Clojure. Ele já foi referenciado mais de 13.000 vezes no código-fonte de produção do Nubank, continua a moldar extensões e forks, e até inspirou adaptações para outras linguagens — um nível de longevidade raramente alcançado por ferramentas com uma pegada tão mínima.

Sierra encerrou sua palestra reconhecendo a sorte de estar no lugar certo, na hora certa, com o emprego certo, no momento em que o Clojure estava surgindo. Esse tipo de sincronia não pode ser planejado.

Mas seu conselho para quem está começando com Clojure ou código aberto foi universal:

“Trabalhe no que você achar interessante. Encontre um padrão que seja útil, construa ferramentas que ajudem outros a se beneficiarem dele. Mas, acima de tudo, apenas divirta-se, porque essa é a única coisa que você pode escolher.”

Conheça nossas oportunidades