<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: João Moraes</title>
    <description>The latest articles on DEV Community by João Moraes (@ojoaothe).</description>
    <link>https://dev.to/ojoaothe</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F634484%2F0196fee9-3d79-4273-a75d-389752b970d4.jpg</url>
      <title>DEV Community: João Moraes</title>
      <link>https://dev.to/ojoaothe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ojoaothe"/>
    <language>en</language>
    <item>
      <title>IA, transformação digital e engenharia de software</title>
      <dc:creator>João Moraes</dc:creator>
      <pubDate>Tue, 22 Sep 2026 22:01:18 +0000</pubDate>
      <link>https://dev.to/ojoaothe/ia-transformacao-digital-e-engenharia-de-software-5gp</link>
      <guid>https://dev.to/ojoaothe/ia-transformacao-digital-e-engenharia-de-software-5gp</guid>
      <description>&lt;p&gt;Faz muito tempo que estou calado sobre Inteligência Artificial.&lt;/p&gt;

&lt;p&gt;Mas não cheguei nesse assunto ontem.&lt;/p&gt;

&lt;p&gt;Codifico desde 2015 e, em 2018, já trabalhava com IA na HOP, quando Inteligência Artificial ainda estava muito longe do hype que vemos hoje. Naquela época, nosso trabalho chegou a ser reconhecido com uma premiação da IBM.&lt;/p&gt;

&lt;p&gt;Foram vários projetos, grandes empresas, multinacionais, mas também projetos menores. De lá pra cá, vi muita coisa mudar.&lt;/p&gt;

&lt;p&gt;Cloud amadureceu. Microsserviços viraram tendência. DevOps se consolidou. APIs passaram a conectar praticamente tudo. Containers, Kubernetes, CI/CD, observabilidade e arquiteturas distribuídas entraram de vez no mundo corporativo.&lt;/p&gt;

&lt;p&gt;Já tínhamos aplicações com Machine Learning, Deep Learning, Visão computacional...&lt;/p&gt;

&lt;p&gt;E agora chegou a explosão da IA generativa. ChatGPT,Gemini, LLMs, RAG, agentes, copilotos, automações e, mais recentemente, o chamado “vibe coding”. &lt;/p&gt;

&lt;p&gt;Tudo isso é incrível.&lt;/p&gt;

&lt;p&gt;Mas também estou vendo muito hype e muito charlatanismo.&lt;/p&gt;

&lt;p&gt;Gente vendendo IA como solução mágica.&lt;/p&gt;

&lt;p&gt;Gente prometendo substituir equipes inteiras de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Gente construindo uma aplicação em algumas horas e confundindo isso com engenharia de software.&lt;/p&gt;

&lt;p&gt;E talvez esteja na hora de falar mais sobre isso.&lt;/p&gt;

&lt;p&gt;Porque fazer funcionar é apenas o começo.&lt;/p&gt;

&lt;p&gt;Engenharia de software também é segurança, arquitetura, qualidade, testes, escalabilidade, observabilidade, disponibilidade, performance, manutenção e corretude.&lt;/p&gt;

&lt;p&gt;É entender que tecnologia não é religião.&lt;/p&gt;

&lt;p&gt;Não existe linguagem perfeita.&lt;/p&gt;

&lt;p&gt;Existe linguagem adequada para determinado problema.&lt;/p&gt;

&lt;p&gt;Java e C#, por exemplo, possuem tipagem estática, ecossistemas extremamente maduros e são muito utilizados em ambientes corporativos. Em sistemas grandes, domínios complexos, aplicações críticas, sensíveis e projetos mantidos durante anos por grandes equipes, contratos mais explícitos e ferramentas consolidadas podem trazer vantagens importantes.&lt;/p&gt;

&lt;p&gt;Mas isso não significa que uma startup começando hoje precise necessariamente dessa mesma estrutura.&lt;/p&gt;

&lt;p&gt;Node.js, Ruby e outras tecnologias podem proporcionar enorme produtividade, menor cerimônia e ciclos rápidos de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Para uma startup tentando descobrir se alguém realmente quer comprar seu produto, velocidade pode ser muito mais importante do que construir antecipadamente uma arquitetura preparada para milhões de usuários que talvez nunca existam.&lt;/p&gt;

&lt;p&gt;Engenharia é contexto e trade-off.&lt;/p&gt;

&lt;p&gt;E isso vale para praticamente tudo.&lt;/p&gt;

&lt;p&gt;SQL ou NoSQL?&lt;/p&gt;

&lt;p&gt;Monólito ou microsserviços?&lt;/p&gt;

&lt;p&gt;AWS, Azure, Google Cloud ou infraestrutura própria?&lt;/p&gt;

&lt;p&gt;REST, eventos ou mensageria?&lt;/p&gt;

&lt;p&gt;Java, C#, Node.js, Python, Ruby, Go?&lt;/p&gt;

&lt;p&gt;PostgreSQL, SQL Server, MongoDB, Redis?&lt;/p&gt;

&lt;p&gt;Não existe uma resposta universal.&lt;/p&gt;

&lt;p&gt;Um monólito bem construído pode ser muito melhor do que uma arquitetura de microsserviços criada apenas porque microsserviços estão na moda. Ainda mais se seu time for pequeno e você precisa correr pra lançar.&lt;/p&gt;

&lt;p&gt;Assim como uma arquitetura extremamente sofisticada pode ser um enorme desperdício para uma empresa que ainda nem validou seu produto.&lt;/p&gt;

&lt;p&gt;E agora estamos cometendo o mesmo erro com Inteligência Artificial.&lt;/p&gt;

&lt;p&gt;A primeira pergunta virou:&lt;/p&gt;

&lt;p&gt;“Dá para colocar IA nisso?”&lt;/p&gt;

&lt;p&gt;Quando deveria existir uma série de perguntas antes e depois dela.&lt;/p&gt;

&lt;p&gt;Qual problema estamos tentando resolver?&lt;/p&gt;

&lt;p&gt;Os dados podem ser enviados para um modelo externo?&lt;/p&gt;

&lt;p&gt;Existem dados pessoais ou sensíveis envolvidos?&lt;/p&gt;

&lt;p&gt;Como LGPD, privacidade e governança estão sendo tratadas?&lt;/p&gt;

&lt;p&gt;Onde esses dados ficam armazenados?&lt;/p&gt;

&lt;p&gt;Quem possui acesso?&lt;/p&gt;

&lt;p&gt;O modelo pode alucinar?&lt;/p&gt;

&lt;p&gt;Qual é o impacto se ele entregar uma resposta errada?&lt;/p&gt;

&lt;p&gt;Precisamos de RAG?&lt;/p&gt;

&lt;p&gt;Precisamos realmente de um agente ou uma automação tradicional resolveria melhor?&lt;/p&gt;

&lt;p&gt;Como avaliamos a qualidade das respostas?&lt;/p&gt;

&lt;p&gt;Existe human-in-the-loop quando necessário?&lt;/p&gt;

&lt;p&gt;Existe auditoria?&lt;/p&gt;

&lt;p&gt;Logs?&lt;/p&gt;

&lt;p&gt;Métricas?&lt;/p&gt;

&lt;p&gt;Tracing?&lt;/p&gt;

&lt;p&gt;Monitoramento?&lt;/p&gt;

&lt;p&gt;Fallback?&lt;/p&gt;

&lt;p&gt;Controle de acesso?&lt;/p&gt;

&lt;p&gt;Testes?&lt;/p&gt;

&lt;p&gt;Como fazemos deploy?&lt;/p&gt;

&lt;p&gt;Como fazemos rollback?&lt;/p&gt;

&lt;p&gt;Como sabemos que a versão nova ficou melhor e não simplesmente diferente?&lt;/p&gt;

&lt;p&gt;E quando milhares de pessoas começarem a utilizar isso simultaneamente?&lt;/p&gt;

&lt;p&gt;Quanto vai custar?&lt;/p&gt;

&lt;p&gt;Porque uma POC funcionar no notebook de um desenvolvedor não significa que existe um produto pronto para produção.&lt;/p&gt;

&lt;p&gt;Esse é outro ponto que o boom da IA está deixando de lado: código é apenas uma parte de um sistema.&lt;/p&gt;

&lt;p&gt;Software sério precisa de engenharia ao redor dele.&lt;/p&gt;

&lt;p&gt;Precisa de testes automatizados.&lt;/p&gt;

&lt;p&gt;Pipeline de CI/CD.&lt;/p&gt;

&lt;p&gt;Versionamento.&lt;/p&gt;

&lt;p&gt;Revisão de código.&lt;/p&gt;

&lt;p&gt;Gestão de secrets.&lt;/p&gt;

&lt;p&gt;Controle de permissões.&lt;/p&gt;

&lt;p&gt;Observabilidade.&lt;/p&gt;

&lt;p&gt;Backup.&lt;/p&gt;

&lt;p&gt;Recuperação de desastre.&lt;/p&gt;

&lt;p&gt;Monitoramento.&lt;/p&gt;

&lt;p&gt;Gestão de dependências.&lt;/p&gt;

&lt;p&gt;Políticas de segurança.&lt;/p&gt;

&lt;p&gt;Documentação.&lt;/p&gt;

&lt;p&gt;E pessoas capazes de entender o que acontece quando alguma coisa dá errado.&lt;/p&gt;

&lt;p&gt;IA também mudou profundamente a maneira como programamos.&lt;/p&gt;

&lt;p&gt;Hoje um desenvolvedor consegue produzir em horas aquilo que alguns anos atrás poderia levar dias.&lt;/p&gt;

&lt;p&gt;Isso é uma evolução extraordinária.&lt;/p&gt;

&lt;p&gt;Eu uso IA e acredito profundamente no potencial dela.&lt;/p&gt;

&lt;p&gt;Mas existe uma diferença enorme entre utilizar IA para acelerar engenharia e utilizar IA para substituir conhecimento de engenharia.&lt;/p&gt;

&lt;p&gt;Esse talvez seja um dos maiores riscos do chamado “vibe coding”.&lt;/p&gt;

&lt;p&gt;Você descreve o que quer.&lt;/p&gt;

&lt;p&gt;A IA gera.&lt;/p&gt;

&lt;p&gt;Você executa.&lt;/p&gt;

&lt;p&gt;Funcionou.&lt;/p&gt;

&lt;p&gt;Ótimo.&lt;/p&gt;

&lt;p&gt;Mas quem entende aquele código?&lt;/p&gt;

&lt;p&gt;Quem sabe quais dependências foram adicionadas?&lt;/p&gt;

&lt;p&gt;Quem percebe uma vulnerabilidade?&lt;/p&gt;

&lt;p&gt;Quem identifica uma query que funcionará com 500 registros, mas destruirá o banco quando existirem 50 milhões?&lt;/p&gt;

&lt;p&gt;Quem percebe um problema de concorrência?&lt;/p&gt;

&lt;p&gt;Quem entende por que aquela arquitetura não escala?&lt;/p&gt;

&lt;p&gt;Quem verifica se existe uma falha de autorização expondo dados de outro usuário?&lt;/p&gt;

&lt;p&gt;Quem assume quando a IA gerou algo aparentemente correto, mas conceitualmente errado?&lt;/p&gt;

&lt;p&gt;Código que compila não é necessariamente código correto. Ele pode ter efeitos colaterais ainda assim.&lt;/p&gt;

&lt;p&gt;E código correto hoje não é necessariamente um sistema sustentável amanhã.&lt;/p&gt;

&lt;p&gt;É aí que entra algo que nenhuma ferramenta deveria substituir: fundamento técnico e capacidade de decisão.&lt;/p&gt;

&lt;p&gt;Saber programar não é decorar sintaxe.&lt;/p&gt;

&lt;p&gt;É entender estruturas de dados, algoritmos, bancos de dados, redes, concorrência, segurança, arquitetura, sistemas distribuídos e, principalmente, saber analisar problemas.&lt;/p&gt;

&lt;p&gt;As ferramentas mudam.&lt;/p&gt;

&lt;p&gt;Os frameworks mudam.&lt;/p&gt;

&lt;p&gt;As linguagens mudam.&lt;/p&gt;

&lt;p&gt;A infraestrutura muda.&lt;/p&gt;

&lt;p&gt;Agora até a maneira como escrevemos código está mudando.&lt;/p&gt;

&lt;p&gt;Mas os fundamentos continuam extremamente importantes.&lt;/p&gt;

&lt;p&gt;E existe ainda outro problema silencioso: débito técnico.&lt;/p&gt;

&lt;p&gt;IA consegue gerar código em uma velocidade absurda.&lt;/p&gt;

&lt;p&gt;Consequentemente, também consegue gerar dívida técnica em uma velocidade absurda.&lt;/p&gt;

&lt;p&gt;Uma empresa pode acreditar que está economizando porque entregou algo em três semanas em vez de três meses.&lt;/p&gt;

&lt;p&gt;Até descobrir, meses depois, que ninguém consegue evoluir o sistema sem quebrar alguma coisa.&lt;/p&gt;

&lt;p&gt;Velocidade sem arquitetura pode virar retrabalho.&lt;/p&gt;

&lt;p&gt;Escalabilidade sem necessidade pode virar custo.&lt;/p&gt;

&lt;p&gt;Segurança tratada depois pode virar incidente.&lt;/p&gt;

&lt;p&gt;IA sem governança pode virar risco.&lt;/p&gt;

&lt;p&gt;E transformação digital sem engenharia pode virar apenas uma demonstração bonita.&lt;/p&gt;

&lt;p&gt;Por isso decidi começar a falar mais sobre esses assuntos.&lt;/p&gt;

&lt;p&gt;Depois de anos trabalhando com software e acompanhando IA desde muito antes dessa explosão recente, quero compartilhar conhecimento sobre Inteligência Artificial, desenvolvimento, arquitetura, cloud, segurança, dados e transformação digital.&lt;/p&gt;

&lt;p&gt;Sem demonizar tecnologia nova.&lt;/p&gt;

&lt;p&gt;Sem defender tecnologia antiga apenas porque é antiga.&lt;/p&gt;

&lt;p&gt;E principalmente sem vender mágica.&lt;/p&gt;

&lt;p&gt;Estou disposto a ajudar desenvolvedores, gestores e empresas a entenderem onde IA realmente gera valor e onde estão apenas colocando IA porque alguém disse que precisam colocar.&lt;/p&gt;

&lt;p&gt;Porque acredito muito no que está acontecendo.&lt;/p&gt;

&lt;p&gt;A IA vai transformar profundamente a maneira como construímos software e como empresas operam.&lt;/p&gt;

&lt;p&gt;Só que transformação digital séria precisa ser construída com segurança, qualidade, escalabilidade, governança e corretude.&lt;/p&gt;

&lt;p&gt;A IA está tornando cada vez mais fácil criar software.&lt;/p&gt;

&lt;p&gt;E isso é fantástico.&lt;/p&gt;

&lt;p&gt;Mas talvez justamente por isso nunca tenha sido tão importante entender a diferença entre:&lt;/p&gt;

&lt;p&gt;gerar código&lt;/p&gt;

&lt;p&gt;e&lt;/p&gt;

&lt;p&gt;fazer engenharia de software.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>What you need to know to get started with Serverless Databases</title>
      <dc:creator>João Moraes</dc:creator>
      <pubDate>Sat, 04 Nov 2023 16:16:33 +0000</pubDate>
      <link>https://dev.to/ojoaothe/what-you-need-to-know-to-get-started-with-serverless-databases-4pch</link>
      <guid>https://dev.to/ojoaothe/what-you-need-to-know-to-get-started-with-serverless-databases-4pch</guid>
      <description>&lt;p&gt;Serverless databases: what they are, where they are, and examples&lt;/p&gt;

&lt;p&gt;Serverless databases are a new way to store data in the cloud. They are fully managed by the cloud provider, which means that developers do not need to worry about infrastructure tasks such as provisioning, scaling, and maintenance.&lt;/p&gt;

&lt;p&gt;Basic concepts&lt;/p&gt;

&lt;p&gt;Serverless databases are based on the infrastructure as a service (IaaS) model. This means that the cloud provider provides all the infrastructure needed to run the database, including servers, storage, and networking. The developer simply connects to the database and starts using it.&lt;/p&gt;

&lt;p&gt;Where are they?&lt;/p&gt;

&lt;p&gt;Serverless databases are run in the cloud. They can be located in any region of the world, which makes them ideal for global applications.&lt;/p&gt;

&lt;p&gt;Examples&lt;/p&gt;

&lt;p&gt;Some examples of serverless databases include:&lt;/p&gt;

&lt;p&gt;CosmosDB (Microsoft): a flexible schema NoSQL database that is automatically scaled.&lt;br&gt;
Cloud Firestore (Google): a document-based NoSQL database that is ideal for mobile and web applications.&lt;br&gt;
DynamoDB (AWS): a key-value NoSQL database that is ideal for high-performance applications.&lt;br&gt;
Advantages and disadvantages&lt;/p&gt;

&lt;p&gt;Serverless databases offer a number of advantages, including:&lt;/p&gt;

&lt;p&gt;Simplicity: Developers do not need to worry about infrastructure tasks, which can save time and money.&lt;br&gt;
Scalability: Serverless databases are automatically scaled, which means that developers do not need to worry about scaling.&lt;br&gt;
Cost savings: Serverless databases are charged based on usage, which can lead to savings compared to traditional databases.&lt;br&gt;
However, serverless databases also have some disadvantages, including:&lt;/p&gt;

&lt;p&gt;Performance limitations: Serverless databases may have performance limitations for applications with large volumes of data or transactions.&lt;br&gt;
Reduced control: Developers have less control over database resources than in a traditional database.&lt;br&gt;
Conclusion&lt;/p&gt;

&lt;p&gt;Serverless databases are an attractive option for developers who are looking for a simple, scalable, and economical data storage solution. However, it is important to carefully evaluate the advantages and disadvantages before choosing a serverless database.&lt;/p&gt;

&lt;p&gt;Assessment of examples&lt;/p&gt;

&lt;p&gt;CosmosDB&lt;/p&gt;

&lt;p&gt;CosmosDB is a flexible schema NoSQL database that is automatically scaled. It supports multiple data models, including documents, graphs, key-value, and columns. CosmosDB is a good option for applications that need horizontal scalability and data flexibility.&lt;/p&gt;

&lt;p&gt;Advantages:&lt;/p&gt;

&lt;p&gt;Scalability: CosmosDB is automatically scaled, which means that developers do not need to worry about scaling.&lt;br&gt;
Flexibility: CosmosDB supports multiple data models, which makes it a good option for applications with different data requirements.&lt;br&gt;
Global availability: CosmosDB is available in multiple regions around the world, which makes it a good option for global applications.&lt;br&gt;
Disadvantages:&lt;/p&gt;

&lt;p&gt;Cost: CosmosDB can be expensive for applications with large volumes of data.&lt;br&gt;
Complexity: CosmosDB can be complex to use, especially for developers who are not familiar with NoSQL databases.&lt;br&gt;
Cloud Firestore&lt;/p&gt;

&lt;p&gt;Cloud Firestore is a document-based NoSQL database that is ideal for mobile and web applications. It is based on the Google Cloud Platform and supports a variety of features, including offline synchronization, enterprise-level security, and integration with other Google Cloud services.&lt;/p&gt;

&lt;p&gt;Advantages:&lt;/p&gt;

&lt;p&gt;Ease of use: Cloud Firestore is easy to use, even for developers with little database experience.&lt;br&gt;
Integrity: Cloud Firestore supports a variety of security features, including authentication and authorization.&lt;br&gt;
Global availability: Cloud Firestore is available in multiple regions around the world, which makes it a good option for global applications.&lt;br&gt;
Disadvantages:&lt;/p&gt;

&lt;p&gt;Performance limitations: Cloud Firestore may have performance limitations for applications with large volumes of data or transactions.&lt;br&gt;
Reduced control: Developers have less control over database resources than in a traditional database.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Remote Work</title>
      <dc:creator>João Moraes</dc:creator>
      <pubDate>Sun, 22 Jan 2023 22:27:51 +0000</pubDate>
      <link>https://dev.to/ojoaothe/remote-work-eok</link>
      <guid>https://dev.to/ojoaothe/remote-work-eok</guid>
      <description>&lt;h2&gt;
  
  
  REMOTE WORK: What do you think about ?
&lt;/h2&gt;

&lt;p&gt;The truth is that today's world allows us to work remotely! We have fast internet, several means of communication that allow us to keep in touch in real time and if we need to travel to visit clients, for example, we also have many options. In addition, work in most companies today is results-oriented. You don't need to be physically there at the company to show that you're working.&lt;/p&gt;

&lt;p&gt;Remote work: work from anywhere in the world!&lt;br&gt;
Home office: Requires you to work from home.&lt;/p&gt;

&lt;p&gt;OK, but how are companies positioning themselves in relation to all this?&lt;br&gt;
There are those that are known as remote-first, that is, in that company, working remotely is the standard. These companies have less "paperwork" and more electronic material, the employees' schedules are public to facilitate communication and they do not need to have a physical headquarters.&lt;br&gt;
On the other hand, there are remote-friendly companies that accept the employee to work remotely. They may even open remote work vacancies, but their default is Onsite Work. In these companies, meetings happen in conference rooms, there are more employees on site than remote and they use "paperwork" more than electronic material.&lt;br&gt;
About tools that help with day-to-day tasks and communication for those who work remotely: Slack, Zoom, Google Drive, Trello, Quip, Pipefy, etc.&lt;br&gt;
Disadvantages remote work: limited contact with professionals, loss of focus with day-to-day distractions, getting lost in working hours, putting too many rules at home.&lt;br&gt;
Advantages: time saving, financial savings, schedule flexibility, no dress code.&lt;br&gt;
Companies that accept remote work: Gitlab, Github, Dell, Spotify, Toptal, Amazon, Adobe, StackOverflow, among others.&lt;/p&gt;

&lt;p&gt;In the last 4 years I have been working remotely and it's been a very good experience! &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Basic example of.. FP</title>
      <dc:creator>João Moraes</dc:creator>
      <pubDate>Fri, 28 May 2021 04:11:23 +0000</pubDate>
      <link>https://dev.to/ojoaothe/basic-example-of-fp-47kk</link>
      <guid>https://dev.to/ojoaothe/basic-example-of-fp-47kk</guid>
      <description>&lt;p&gt;Here is a basic example of using functional programming inside javascript language, a multiparadigm language that provides support for functional programming. In the first image, there is an imperative approach to manipulating a list of names. And in the second image, a functional approach is being used to manipulate the same list of names.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ilM9cdVb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cco9tnp5f7v6c0s635ko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ilM9cdVb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cco9tnp5f7v6c0s635ko.png" alt="Alt Text" width="595" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the image above, dealing with the imperative approach, an empty list is created to be filled with the names in lower case. Subsequently, a temporary variable called "i" is created to iterate through the list. Then, each item modified from the list received as a parameter is added to the new list. In this approach, it is possible to see that the machine is being told how it should perform its work, in detail.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---tdRfQpV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0kct13cm9e88pm9r5zx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---tdRfQpV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0kct13cm9e88pm9r5zx7.png" alt="Alt Text" width="596" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the image above, dealing with the declarative / functional approach, the original list calls the javascript map method, which invokes a function in each item covered in the list, in this case a callback function, which in turn is a function that makes lowercase string letters. The map method returns a new list, without modifying the original list and thus guaranteeing the absence of side effects and the presence of immutability.&lt;/p&gt;

&lt;p&gt;The code snippets of both images aim to create a new list with the names in lowercase letters, however, it is easy to see that the code of the second image is smaller, cleaner and more intuitive. Consequently, it is easier to be tested and reused.&lt;/p&gt;

&lt;h1&gt;
  
  
  technology #development #softwaredeveloper #javascript #javascriptdeveloper
&lt;/h1&gt;

</description>
      <category>javascript</category>
      <category>functional</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
