mais lidos
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
Carreiras
Reunimos grandes mentes de diversas origens que permitem a discussão e o debate e melhoram a resolução de problemas.
Saiba mais sobre nossas carreiras



O podcast The Hammock é ideal para pessoas engenheiras que querem tirar alguns minutos para fazer uma pausa e relaxar a mente. Enquanto elas descansam, podem ouvir conversas sobre temas relevantes para a comunidade de desenvolvimento de software.
O papo no terceiro episódio foi sobre a utilização do Datomic e do Clojure, desenvolvimento pessoal e desafios na interoperabilidade de dados empresariais. Desta vez, Filipe Andrade e Robson Filho, lead software engineer e senior software engineer do Nubank, respectivamente, conversaram com Enzzo Cavallo, engenheiro de software apaixonado pela linguagem Clojure.
Nesse artigo, você vai aprender sobre a evolução do Clojure e do Datomic, a natureza dinâmica do Clojure, bancos de dados externos, desafios de modelagem, migração, memória e ownership de dados e muito mais!
Você pode escutar o “The Hammock” nos seguintes canais: Spotify, Apple Podcasts, Google Podcasts, Amazon Music e Anchor.
Enzzo Cavallo tem uma jornada singular na linguagem Clojure. Ao contrário de muitos desenvolvedores que transitam entre várias linguagens ao longo de suas carreiras, Enzzo optou pelo Clojure desde o início de sua trajetória profissional. Antes, porém, nos dias da faculdade de Física, ele teve contato com outras linguagens, mas apenas para executar tarefas simples, como scripts.
Por coincidência, a primeira empresa em que ele trabalhou usava o Clojure no seu dia a dia. Além disso, ela tinha como prática contratar profissionais sem experiência prévia em Clojure, o que mostra como a comunidade Clojurian é acolhedora e inclusiva.
Abraçando Datomic e Clojure
O Datomic foi o primeiro banco de dados com o qual Enzzo trabalhou profissionalmente. Sua introdução a ele foi bastante orgânica, pois seu empregador já utilizava o Clojure junto ao Datomic. Em poucos meses, ele já era capaz de usá-lo, explorando seus limites.
Para Enzzo, uma das melhores partes de ter usado o Clojure ao dar seus primeiros passos profissionais foi descobrir o Clojurians, um grupo no Slack para entusiastas da linguagem. Historicamente, esta plataforma é inestimável para os devs adeptos do Clojure, sejam eles novatos ou experientes. Muitos desenvolvedores de bibliotecas participam ativamente do grupo, tornando-o um espaço dinâmico de aprendizado e colaboração.
O podcast também falou sobre o crescimento da comunidade Clojure no Brasil. Apesar de ainda ser pequeno, o mercado da linguagem no país é vibrante. A versatilidade do Clojure, que pode ser executada em vários hosts, como JVM ou JavaScript, oferece possibilidades quase infinitas aos desenvolvedores.
Conheça nossas oportunidades
Jornadas e reflexões pessoais
Tanto os apresentadores quanto o convidado refletiram sobre suas jornadas pessoais na tecnologia, desde o início como técnicos de computador até a evolução para desenvolvedores de software. Entre eles, há uma sensação de nostalgia e alegria por suas escolhas e pelas oportunidades que surgiram ao longo do caminho.
Enzzo, que é do Rio de Janeiro, lançou luz sobre o cenário tech da cidade, onde, segundo ele, a linguagem Python domina. Na sequência, a conversa seguiu um rumo mais leve: eles discutiram sistemas operacionais e Enzzo compartilhou sua preferência pelo Arch Linux, por sua estabilidade e controle.
Depois disso, falaram sobre a documentação do Clojure. Para eles, ter uma documentação que evolui constantemente e em tempo real é uma das principais vantagens da linguagem. No entanto, moderar esse conteúdo pode ser complicado.
Afinal, quem decide se um exemplo enviado é relevante e preciso? Apesar dessa preocupação, a natureza dinâmica do Clojure (especialmente com seus múltiplos targets) pode tornar a documentação interativa. É possível executar exemplos de código diretamente no navegador, o que aprimora a experiência de aprendizado.
A transição do Datomic para outros bancos de dados
Enzzo começou sua jornada usando Datomic on-prem e testemunhou o nascimento da Datomic Cloud. A transição do Datomic para bancos de dados convencionais, como SQL, expandiu horizontes. Recursos que eram dados como certos no Datomic, como visualizar o valor anterior de um campo, não existiam no SQL. Isso exigiu uma mudança de mentalidade.
Usar Datomic também simplificou o processo de testagem. Seu modo in-memory acelera os testes de integração, que passam a se comportar como testes de unidade. Tamanha flexibilidade não existe em bancos de dados convencionais, nos quais é necessário usar containers para fazer testes. Apesar de oferecer autonomia e reduzir a dependência da infraestrutura, o Datomic não está livre de desafios. Algumas questões podem surgir, como serialização de dados e depuração dentro de funções de transação, por exemplo.
Quando comparada a outros bancos de dados, a API do Datomic parece mais um ORM (Object-Relational Mapping) do que um simples conector de banco de dados. Sua interface é amigável para desenvolvedores e facilita a manipulação e o manuseio de dados. Essa abordagem contrasta com ferramentas tradicionais, baseadas em SQL, nas quais o desenvolvedor interage mais diretamente com o banco de dados.
Em ORMs tradicionais, os dados da tabela transformam-se em objetos de linguagem. No Clojure, porém, a estrutura de dados padrão não é de objetos, mas de mapas e vetores.
Desafios em modelagem, migração, memória e ownership de dados
Fazer a transição para o Datomic pode ser desafiador para os desenvolvedores, principalmente àqueles que estão acostumados com os modelos centrados em tabelas do SQL. No entanto, usar o Datomic exige uma mudança de mentalidade. Em vez de tabelas, é preciso pensar em termos de atributos. Alguns desenvolvedores, inclusive, chegam a adotar a seguinte abordagem: primeiro, eles esboçam suas consultas ao estilo Datomic e depois as traduzem para SQL.
Uma vantagem significativa do Datomic é sua base de dados in-memory, que facilita interações rápidas e aprimora a testabilidade. Ao trabalhar com SQL, não é fácil fazer com que modelos evoluam. Já o Datomic oferece flexibilidade e permite que os desenvolvedores façam iterações sem precisar de muito planejamento.
Além disso, o processo de migração do Datomic é menos complexo do que os bancos de dados SQL tradicionais. Aquele permite adicionar atributos facilmente, enquanto este exige versionamentos complexos.
Apesar do Datomic agora ser gratuito, algumas empresas ainda hesitam em usá-lo. Na opinião de Enzzo, a principal preocupação está em usar um sistema de banco de dados proprietário. Embora seja possível acessar dados mesmo após o fim da licença, ainda há relutância quanto a esse formato.
Porém, Filipe diz que isso não é exclusivo do Datomic. Se você armazenar dados no PostgreSQL, por exemplo, eles estarão confinados àquela plataforma, a menos que você execute o software PostgreSQL. A chave aqui é transparência. As empresas querem garantias de que podem recuperar seus dados sem depender de um software de terceiros. Enzzo sugeriu que uma ferramenta de código aberto capaz de ler e exportar dados do Datomic poderia mitigar essas preocupações.
Sem dúvida, há muito valor em compartilhar experiências. Ter uma comunidade ativa é muito importante para superar desafios e obstáculos. Com isso, é possível ter não apenas clareza, mas também ajudar a comunidade a evoluir e se tornar mais inclusiva.
Sobre o The Hammock
“The Hammock” é um podcast desenvolvido e produzido por alguns dos engenheiros do Nubank, incluindo Filipe Andrade, lead software engineer; Robert Randolph, engineering manager; Christian Romney, director of engineering; e Jaret Binford, senior product manager.
O nome “The Hammock” captura a essência da filosofia de Rich Hickey, que consiste em reservar um tempo para contemplar problemas complexos. Com seu lançamento, o Nubank pretende explorar ideias inovadoras, tendências tecnológicas em evolução e destacar a inovação que ocorre no seu dia a dia.
Conheça nossas oportunidades