{"id":25969,"date":"2023-03-28T21:25:56","date_gmt":"2023-03-28T21:25:56","guid":{"rendered":"https:\/\/building.nubank.com\/functional-programming-with-clojure-why-and-how-does-nubank-use-it-and-scale-so-well\/"},"modified":"2024-03-21T16:58:00","modified_gmt":"2024-03-21T16:58:00","slug":"programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem","status":"publish","type":"post","link":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/","title":{"rendered":"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem?"},"content":{"rendered":"\n<p>A programa\u00e7\u00e3o funcional \u00e9 uma abordagem de resolu\u00e7\u00e3o de problemas com ideias focadas em excelente cobertura de testes, maior encapsulamento de c\u00f3digo, reutiliza\u00e7\u00e3o e manuten\u00e7\u00e3o de sistemas. Clojure n\u00e3o tem apenas um paradigma atraente, \u00e9 tamb\u00e9m uma linguagem de programa\u00e7\u00e3o funcional consolidada, com total interoperabilidade com Java e uma bela pilha para completar.<\/p>\n\n\n\n<p>Al\u00e9m disso, quando pensamos em escalabilidade, e na rapidez com que o Nubank teve que se organizar e n\u00e3o perder o controle da qualidade dos servi\u00e7os que estavam sendo criados, uma arquitetura bem definida e de alto padr\u00e3o, a ser utilizada em conjunto com Clojure, foi extremamente \u00fatil para garantir o sucesso da decis\u00e3o da linguagem e do design de uma cultura para entregar c\u00f3digo de forma mais frequente e confi\u00e1vel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 Programa\u00e7\u00e3o Funcional?<\/h2>\n\n\n\n<p><a href=\"https:\/\/building.nubank.com\/pt-br\/what-is-functional-programming-and-how-do-we-use-that-technology-at-nubank\/\">Programa\u00e7\u00e3o funcional<\/a> \u00e9 um estilo de programa\u00e7\u00e3o que segue o Paradigma Funcional, e para quem n\u00e3o sabe, paradigmas s\u00e3o abordagens para resolu\u00e7\u00e3o de problemas, e o que os diferencia \u00e9 a forma como idealizam a solu\u00e7\u00e3o para um problema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conceitos e diretrizes de programa\u00e7\u00e3o funcional<\/h2>\n\n\n\n<p><strong>Imutabilidade\u00a0<\/strong><\/p>\n\n\n\n<p>Este \u00e9 o conceito de n\u00e3o modificar nenhuma vari\u00e1vel durante a execu\u00e7\u00e3o, de forma que tenhamos apenas vari\u00e1veis salvas como somente leitura, ent\u00e3o assim que voc\u00ea criar uma vari\u00e1vel com um valor n\u00e3o modific\u00e1vel, caso precise utiliz\u00e1-la, uma nova poder\u00e1 ser criada usando o valor da outra mais as outras entradas que voc\u00ea deseja fornecer.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vantagem: Voc\u00ea sabe exatamente qual \u00e9 a vari\u00e1vel em qualquer momento da execu\u00e7\u00e3o, ent\u00e3o a depura\u00e7\u00e3o fica mais f\u00e1cil.<\/li>\n<\/ul>\n\n\n\n<p><em>Imutabilidade \u00e9 a ideia central da programa\u00e7\u00e3o funcional<\/em><\/p>\n\n\n\n<p><strong>Fun\u00e7\u00f5es de Primeira Classe<\/strong><\/p>\n\n\n\n<p>Esta \u00e9 a ideia de que uma fun\u00e7\u00e3o nesta linguagem n\u00e3o tem restri\u00e7\u00f5es ou limita\u00e7\u00f5es e pode ser tratada como uma vari\u00e1vel.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vantagens: Pode ser atribu\u00edda a vari\u00e1veis regulares, pode ser passada como argumentos ou retorno de fun\u00e7\u00f5es e pode ser inclu\u00edda em qualquer estrutura de dados.<\/li>\n<\/ul>\n\n\n\n<p><strong>Fun\u00e7\u00f5es Puras<\/strong><\/p>\n\n\n\n<p>S\u00e3o fun\u00e7\u00f5es nas quais voc\u00ea tem apenas um \u00fanico resultado poss\u00edvel com base em uma entrada, ent\u00e3o voc\u00ea sempre pode fazer uma previs\u00e3o. Por exemplo, na fun\u00e7\u00e3o matem\u00e1tica \u201cx + 2 = y\u201d, se \u201cx\u201d for 2, \u201cy\u201d sempre ser\u00e1 4, e isso \u00e9 exatamente o que \u00e9 uma fun\u00e7\u00e3o pura.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vantagem: Voc\u00ea tem controle total sobre os testes e garante que o que deseja est\u00e1 acontecendo.<\/li>\n<\/ul>\n\n\n\n<p><strong>Composi\u00e7\u00e3o de Fun\u00e7\u00f5es\u00a0<\/strong><\/p>\n\n\n\n<p>Como o nome diz, voc\u00ea pode usar a composi\u00e7\u00e3o de fun\u00e7\u00f5es para obter o resultado tencionado conforme desejar.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vantagem: Isole l\u00f3gicas em muitas fun\u00e7\u00f5es pequenas, o que aumenta a facilidade de testar e desacoplar l\u00f3gicas.<\/li>\n<\/ul>\n\n\n\n<p><strong>Express\u00f5es\u00a0<\/strong><\/p>\n\n\n\n<p>As fun\u00e7\u00f5es sempre devem retornar algo. A programa\u00e7\u00e3o funcional n\u00e3o aprova a cria\u00e7\u00e3o de fun\u00e7\u00f5es de instru\u00e7\u00e3o, que possuem resultados nulos, com procedimentos realmente dif\u00edceis de controlar e prever o que est\u00e1 acontecendo dentro dela.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vantagem: Melhor cobertura dos testes.<\/li>\n<\/ul>\n\n\n\n<p><strong>Recurs\u00f5es<\/strong><\/p>\n\n\n\n<p>Sem La\u00e7os, ent\u00e3o a itera\u00e7\u00e3o \u00e9 feita com base no princ\u00edpio de que n\u00e3o temos vari\u00e1veis mut\u00e1veis e a recurs\u00e3o usar\u00e1 o \u00faltimo resultado para aplicar o seguinte sem quebrar a ideia, e tamb\u00e9m evitando efeitos colaterais que s\u00e3o bastante comuns em intera\u00e7\u00f5es de la\u00e7o.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vantagem: Mais controle sobre o c\u00f3digo, pois n\u00e3o perdemos o controle do que \u00e9 feito em cada itera\u00e7\u00e3o de um la\u00e7o. Redu\u00e7\u00e3o de efeitos colaterais.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Por que o Nubank optou por usar Clojure como sua principal linguagem de programa\u00e7\u00e3o?<\/h2>\n\n\n\n<p>Quando o Nubank foi fundado, precis\u00e1vamos de uma linguagem poderosa para nos ajudar a construir a melhor aplica\u00e7\u00e3o de tecnologia financeira e quer\u00edamos que ela fosse a melhor em termos de <strong>qualidade, consist\u00eancia e velocidade de desenvolvimento<\/strong>. E todas essas ideias foram refletidas em Clojure. Houve algumas coisas que avaliamos como vantagens:<\/p>\n\n\n\n<p><strong>Linguagem objetiva<\/strong><\/p>\n\n\n\n<p>Clojure \u00e9 direto ao ponto e muito sucinto para criar cen\u00e1rios complexos, qualidades que o tornam uma linguagem de poucas palavras. Isso nos permitiu codificar mais em menos tempo.<\/p>\n\n\n\n<p><em>Incr\u00edvel cobertura de testes! Equipes de Garantia de Qualidade n\u00e3o foram necess\u00e1rias.<\/em><\/p>\n\n\n\n<p><strong>Testar enquanto codificamos<\/strong><\/p>\n\n\n\n<p>Pudemos ter uma infraestrutura pr\u00e9-configurada para executar os testes ao mesmo tempo em que a modific\u00e1vamos, com quase 100% de cobertura de teste de unidade mais teste de integra\u00e7\u00e3o. E tudo isso garantiu a qualidade do servi\u00e7o e do que foi feito, ent\u00e3o n\u00e3o precisamos de mais gente para validar esses cen\u00e1rios para n\u00f3s.&nbsp;<\/p>\n\n\n\n<p><strong>Interoperabilidade Java<\/strong><\/p>\n\n\n\n<p>Para quem n\u00e3o conhece muito bem Clojure, a linguagem \u00e9 constru\u00edda em cima da JVM (Java Virtual Machine) para que possamos utilizar tudo nesse ambiente, como bibliotecas Java, frameworks ou qualquer outra implementa\u00e7\u00e3o com Java. Em todo caso, \u00e9 um benef\u00edcio ter esta vasta tecnologia dispon\u00edvel se precisarmos dela.<\/p>\n\n\n\n<p><strong>Comunidade incr\u00edvel e documenta\u00e7\u00e3o de qualidade<\/strong><\/p>\n\n\n\n<p>Clojure tem um \u00f3timo espa\u00e7o comunit\u00e1rio, no qual as pessoas est\u00e3o envolvidas na discuss\u00e3o e evolu\u00e7\u00e3o da linguagem, ent\u00e3o \u00e9 muito f\u00e1cil come\u00e7ar e descobrir onde voc\u00ea precisa aprender sobre ela. Al\u00e9m disso, as pessoas que estavam no Nubank quando tudo era apenas uma miragem tinham um grande envolvimento e carinho com Clojure, ent\u00e3o foi uma decis\u00e3o f\u00e1cil de tomar.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como o Nubank escalou t\u00e3o bem usando Clojure?<\/h2>\n\n\n\n<p>O Nubank cresceu extraordinariamente nos \u00faltimos anos e a evolu\u00e7\u00e3o do nosso crescimento consistente na parte de engenharia se deve \u00e0 organiza\u00e7\u00e3o e arquitetura t\u00e9cnica que suavizaram esse processo de crescimento.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Arquitetura de microsservi\u00e7os com uma arquitetura de software bem definida.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Hoje, a <a href=\"https:\/\/building.nubank.com\/pt-br\/microservices-at-nubank-an-overview\/\">arquitetura de microsservi\u00e7os do Nubank<\/a> conta com cerca de 1000 microsservi\u00e7os escritos em Clojure. Al\u00e9m disso, todos os microsservi\u00e7os possuem a mesma estrutura de pastas baseada em nossa arquitetura de software definida, a Arquitetura Diplomata. Assim, \u00e9 f\u00e1cil entender como funcionam os microsservi\u00e7os e onde encontrar as coisas. Dito isso, isso facilita a escalabilidade, pois podemos mover engenheiros entre equipes, e eles s\u00f3 precisam aprender o contexto do neg\u00f3cio e como isso \u00e9 organizado na arquitetura de microsservi\u00e7os; no entanto, os servi\u00e7os em si s\u00e3o simples e muito f\u00e1ceis de manipular.&nbsp;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Al\u00e9m disso, podemos aumentar ou diminuir as equipes de acordo com as prioridades, sem nos preocupar com acompanhamento de engenheiros ou tempo de contrata\u00e7\u00e3o.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Ter conven\u00e7\u00f5es de c\u00f3digo, arquitetura de software, cultura de testes e uma \u00f3tima infraestrutura j\u00e1 preparada para aceitar tudo isso permite que equipes e empresas cres\u00e7am de forma mais otimizada, focando muito mais na resolu\u00e7\u00e3o de problemas do que em manter o funcionamento baseado em pessoas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quais s\u00e3o os benef\u00edcios e vantagens que nos fizeram escolher uma linguagem de programa\u00e7\u00e3o t\u00e3o diferente? <\/p>\n","protected":false},"author":178110183,"featured_media":24972,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2497,2586],"tags":[2581,2580,2587,2498],"ppma_author":[2395],"class_list":["post-25969","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering-pt-br","category-software-engineering-pt-br","tag-clojure-pt-br","tag-engineering-pt-br","tag-nubank-pt-br","tag-software-engineering-pt-br"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem? - Building Nubank<\/title>\n<meta name=\"description\" content=\"Quais s\u00e3o os benef\u00edcios e vantagens que nos fizeram escolher uma linguagem de programa\u00e7\u00e3o t\u00e3o diferente?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem? - Building Nubank\" \/>\n<meta property=\"og:description\" content=\"Quais s\u00e3o os benef\u00edcios e vantagens que nos fizeram escolher uma linguagem de programa\u00e7\u00e3o t\u00e3o diferente?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Nubank\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-28T21:25:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T16:58:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/12\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Heloisa Carbone - Senior Software Engineer at Nubank\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Heloisa Carbone - Senior Software Engineer at Nubank\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/\"},\"author\":{\"name\":\"Heloisa Carbone - Senior Software Engineer at Nubank\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/f4c4df17c8d3f1dc13bc0c1021863c19\"},\"headline\":\"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem?\",\"datePublished\":\"2023-03-28T21:25:56+00:00\",\"dateModified\":\"2024-03-21T16:58:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/\"},\"wordCount\":1163,\"image\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"keywords\":[\"Clojure\",\"Engineering\",\"Nubank\",\"Software engineering\"],\"articleSection\":[\"Engineering\",\"Software Engineering\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/\",\"url\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/\",\"name\":\"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem? - Building Nubank\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"datePublished\":\"2023-03-28T21:25:56+00:00\",\"dateModified\":\"2024-03-21T16:58:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/f4c4df17c8d3f1dc13bc0c1021863c19\"},\"description\":\"Quais s\u00e3o os benef\u00edcios e vantagens que nos fizeram escolher uma linguagem de programa\u00e7\u00e3o t\u00e3o diferente?\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nubank.com\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1\",\"width\":1200,\"height\":675,\"caption\":\"People working together with data\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/\",\"name\":\"Building Nubank\",\"description\":\"We make the extraordinary happen\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/f4c4df17c8d3f1dc13bc0c1021863c19\",\"name\":\"Heloisa Carbone - Senior Software Engineer at Nubank\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/avatar_user_178110183_1680038246-96x96.pngdb367e5ebdbd4425e8eb0cd1eda9d96b\",\"url\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/avatar_user_178110183_1680038246-96x96.png\",\"contentUrl\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/avatar_user_178110183_1680038246-96x96.png\",\"caption\":\"Heloisa Carbone - Senior Software Engineer at Nubank\"},\"description\":\"Heloisa Carbone is responsible for building internal Data platforms, helping to connect the Data universe with Nubank's products. She has a degree in Computer and Information Science from Universidade de S\u00e3o Paulo. Heloisa has extensive experience working on backend applications. Before joining Nubank, in 2019, she has worked in companies such as Accenture, IBM and some Startups. In her spare time, Heloisa is a speaker and mentor to other women engineers that are starting careers in technology.\",\"url\":\"https:\\\/\\\/building.nubank.com\\\/pt-br\\\/author\\\/heloisa-carbone\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem? - Building Nubank","description":"Quais s\u00e3o os benef\u00edcios e vantagens que nos fizeram escolher uma linguagem de programa\u00e7\u00e3o t\u00e3o diferente?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/","og_locale":"pt_BR","og_type":"article","og_title":"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem? - Building Nubank","og_description":"Quais s\u00e3o os benef\u00edcios e vantagens que nos fizeram escolher uma linguagem de programa\u00e7\u00e3o t\u00e3o diferente?","og_url":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/","og_site_name":"Building Nubank","article_published_time":"2023-03-28T21:25:56+00:00","article_modified_time":"2024-03-21T16:58:00+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/12\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1","type":"image\/jpeg"}],"author":"Heloisa Carbone - Senior Software Engineer at Nubank","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Heloisa Carbone - Senior Software Engineer at Nubank","Est. tempo de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/#article","isPartOf":{"@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/"},"author":{"name":"Heloisa Carbone - Senior Software Engineer at Nubank","@id":"https:\/\/building.nubank.com\/pt-br\/#\/schema\/person\/f4c4df17c8d3f1dc13bc0c1021863c19"},"headline":"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem?","datePublished":"2023-03-28T21:25:56+00:00","dateModified":"2024-03-21T16:58:00+00:00","mainEntityOfPage":{"@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/"},"wordCount":1163,"image":{"@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/12\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1","keywords":["Clojure","Engineering","Nubank","Software engineering"],"articleSection":["Engineering","Software Engineering"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/","url":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/","name":"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem? - Building Nubank","isPartOf":{"@id":"https:\/\/building.nubank.com\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/#primaryimage"},"image":{"@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/12\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1","datePublished":"2023-03-28T21:25:56+00:00","dateModified":"2024-03-21T16:58:00+00:00","author":{"@id":"https:\/\/building.nubank.com\/pt-br\/#\/schema\/person\/f4c4df17c8d3f1dc13bc0c1021863c19"},"description":"Quais s\u00e3o os benef\u00edcios e vantagens que nos fizeram escolher uma linguagem de programa\u00e7\u00e3o t\u00e3o diferente?","breadcrumb":{"@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/#primaryimage","url":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/12\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1","contentUrl":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/12\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1","width":1200,"height":675,"caption":"People working together with data"},{"@type":"BreadcrumbList","@id":"https:\/\/building.nubank.com\/pt-br\/programacao-funcional-com-clojure-por-que-e-como-o-nubank-usa-e-escala-tao-bem\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/building.nubank.com\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Programa\u00e7\u00e3o funcional com Clojure: por que e como o Nubank usa e escala t\u00e3o bem?"}]},{"@type":"WebSite","@id":"https:\/\/building.nubank.com\/pt-br\/#website","url":"https:\/\/building.nubank.com\/pt-br\/","name":"Building Nubank","description":"We make the extraordinary happen","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/building.nubank.com\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/building.nubank.com\/pt-br\/#\/schema\/person\/f4c4df17c8d3f1dc13bc0c1021863c19","name":"Heloisa Carbone - Senior Software Engineer at Nubank","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/03\/avatar_user_178110183_1680038246-96x96.pngdb367e5ebdbd4425e8eb0cd1eda9d96b","url":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/03\/avatar_user_178110183_1680038246-96x96.png","contentUrl":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/03\/avatar_user_178110183_1680038246-96x96.png","caption":"Heloisa Carbone - Senior Software Engineer at Nubank"},"description":"Heloisa Carbone is responsible for building internal Data platforms, helping to connect the Data universe with Nubank's products. She has a degree in Computer and Information Science from Universidade de S\u00e3o Paulo. Heloisa has extensive experience working on backend applications. Before joining Nubank, in 2019, she has worked in companies such as Accenture, IBM and some Startups. In her spare time, Heloisa is a speaker and mentor to other women engineers that are starting careers in technology.","url":"https:\/\/building.nubank.com\/pt-br\/author\/heloisa-carbone\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/building.nubank.com\/wp-content\/uploads\/2022\/12\/Functional-Programming_Feature_1200x675.jpg?fit=1200%2C675&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pbKBB5-6KR","jetpack_sharing_enabled":true,"authors":[{"term_id":2395,"user_id":178110183,"is_guest":0,"slug":"heloisa-carbone","display_name":"Heloisa Carbone - Senior Software Engineer at Nubank","avatar_url":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/03\/avatar_user_178110183_1680038246-96x96.png","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/posts\/25969","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/users\/178110183"}],"replies":[{"embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/comments?post=25969"}],"version-history":[{"count":5,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/posts\/25969\/revisions"}],"predecessor-version":[{"id":28841,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/posts\/25969\/revisions\/28841"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/media\/24972"}],"wp:attachment":[{"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/media?parent=25969"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/categories?post=25969"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/tags?post=25969"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/building.nubank.com\/pt-br\/wp-json\/wp\/v2\/ppma_author?post=25969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}