Episodes

  • 036 - Ouça o Seu Cérebro de Lagarto - The Pragmatic Programmer
    Jul 25 2025

    Neste episódio do Entrelinhas do Código, mergulhamos no fascinante Tópico 37 de "The Pragmatic Programmer": "Ouça o Seu Cérebro de Lagarto"! 🎧✨Descubra como essa parte não consciente do seu cérebro 🧠 atua como um detector de padrões e repositório de "conhecimento tácito" 💡. Ele se comunica conosco não através de palavras, mas por meio de sensações ou sentimentos, como o nervosismo ou a percepção de que algo "parece demasiado trabalho".Os hosts explicam as duas situações clássicas onde essa intuição se manifesta na programação: o "Medo da Página em Branco" 📝 (sinalizando dúvida subjacente ou Síndrome do Impostor) e a sensação de que "O Código que Luta Contra Você" está te exaurindo 😵‍💫 (indicando que a tarefa é "mais difícil do que deveria ser", que o design pode estar errado, ou que você está criando muitos bugs).Aprenda as estratégias pragmáticas para "falar lagarto" e transformar essas sensações em insights produtivos:• Parar e Dar um Tempo 🚶‍♀️💤 para permitir que o cérebro reorganize as ideias.• Externalizar o Problema 🗣️ (com rabiscos, diagramas ou explicando a um "Patinho de Borracha" 🦆) para clarear as suposições.• A poderosa técnica de prototipagem 🛠️, que encoraja a experimentação e o descarte de código, focando nas lições aprendidas 💎.Entenda como ignorar seu "Cérebro de Lagarto" pode levar à "Programação por Coincidência" 🚫, e como ouvir essa intuição se conecta a princípios cruciais como o ETC ("Easier to Change") ✅ (essência de um bom design), a Refatoração ✨, a resolução de "Problemas Impossíveis" 🤯 e o uso de Diários de Engenharia 📔.Não perca os insights que vão te ajudar a cultivar a autoconsciência e a confiança nos seus instintos para "THINK!" 🤔 e moldar o futuro do seu código. 🚀#CerebroDeLagarto #ProgramacaoPragmatica #PragmaticProgrammer #IntuiçãoNaProgramacao #DesenvolvimentoDeSoftware #THINK #CodigoLimpo #SoftwareDesign #Protótipos #RubberDucking #ETC

    Show More Show Less
    8 mins
  • 035 - Quadros-Negros: Concorrência e Comunicação Desacoplada - The Pragmatic Programmer
    Jul 19 2025

    🎧Episódio: A Magia dos Quadros-Negros ✨ (Concorrência e Comunicação Desacoplada)Olá, amantes do código e desvendadores de mistérios da programação! 🚀 Sejam bem-vindos a mais um episódio de Entrelinhas do Código!Neste episódio, vamos mergulhar no fascinante Tópico 36 do livro "The Pragmatic Programmer": os Quadros-Negros (Blackboards) [podcast: 37, 38; 1, 7]. Prepare-se para descobrir um conceito que, embora não seja novo, é incrivelmente relevante para a programação moderna [podcast: 37, 42].O Quadro-Negro é essencialmente uma combinação inteligente de um armazenamento de objetos e um broker de publicação/assinatura [podcast: 38; 2, 12, 27]. Pense nele como o mural de recados superinteligente do seu sistema, um local central onde diferentes partes do seu software podem depositar e consumir informações, sem precisar conhecer a existência uma da outra [podcast: 38; 2, 27]. É a mágica da comunicação indireta! 🤫Para entender melhor, o livro usa uma analogia brilhante: imagine uma equipe de detetives tentando resolver um assassinato 🕵️‍♀️ [podcast: 39; 3, 13, 28]. A inspetora chefe inicia o "Quadro-Negro" com a grande pergunta: "H. Dumpty: Acidente ou Assassinato?" [podcast: 39; 3, 13, 28]. Cada detetive, agindo como um agente independente, posta suas descobertas – seja um pedaço de casca de ovo 🥚, um depoimento de testemunha ou uma evidência forense 🔍 [podcast: 40; 4, 13, 28]. O mais importante é que ninguém precisa saber quem está postando o quê; eles confiam que a informação está lá, ativando suas próprias "regras" e contribuindo para a solução do mistério [podcast: 40; 4, 13, 29].Os benefícios são poderosos 💪:• Desacoplamento Espetacular: Componentes não precisam saber da existência uns dos outros, interagindo apenas com o mural. Isso significa menos dor de cabeça na hora de mudar e maior resiliência à mudança [podcast: 39; 6, 20, 29].• Concorrência Simplificada: Adeus, problemas de acesso a memória compartilhada! Quadros-Negros permitem que diferentes partes do código trabalhem "ao mesmo tempo" sem pisar nos calos umas das outras, porque a comunicação é via mensagens, não via estado direto compartilhado [podcast: 43; 7, 12, 30, 31].• Quebra do Acoplamento Temporal: A ordem dos eventos não precisa ser superrígida. Se uma informação chega atrasada, o sistema ainda pode processá-la quando ela aparecer, pois a ação é disparada pela disponibilidade da informação, não pela sua ordem de chegada [podcast: 43; 7, 19, 30]. Isso é ótimo para o "mundo real" imprevisível 🌍.Historicamente, os Quadros-Negros surgiram em aplicações de inteligência artificial como reconhecimento de fala [podcast: 41; 8, 14, 32]. Sistemas como Linda, JavaSpaces e T Spaces foram pioneiros [podcast: 41; 8, 15, 32]. Embora não "decolaram" de imediato, talvez porque o mundo ainda não estivesse pronto para tanta coordenação assíncrona [podcast: 42; 8, 15, 32].Mas o tempo é um senhor sábio! 🕰️ Hoje, eles estão por toda parte, camuflados. Quando você usa microserviços que se comunicam através de sistemas de mensageria como Kafka ou NATS, você está, de certa forma, usando um Quadro-Negro gigante! 🌐 Esses sistemas modernos oferecem persistência e a capacidade de buscar mensagens por padrões, tornando-os ideais para a "dança" de atores (Tópico 35) [podcast: 42; 8, 16, 33].Claro, nem tudo são flores 🌸. Esses sistemas podem ser "mais difíceis de raciocinar" porque as interações são tão indiretas que você não vê o fluxo claro de chamadas de função [podcast: 44; 9, 17, 34]. Além disso, com mais "partes móveis", a "implantação e gerenciamento" podem ser "mais problemáticos"

    Show More Show Less
    9 mins
  • 034 - Atores e Processos, concorrência sem Estado Compartilhado - The Pragmatic Programmer
    Jul 18 2025

    🎧 Entrelinhas do Código: Desvendando Atores e Processos – Concorrência Sem Dores de Cabeça! 🚀Prepare-se para uma imersão profunda no Tópico 35 do aclamado "The Pragmatic Programmer": "Atores e Processos"! Em um cenário de software onde concorrência e paralelismo são mais do que tendências – são requisitos básicos – este episódio é seu guia para construir sistemas que se adaptam e lidam com responsabilidade.Diga adeus às abordagens tradicionais de concorrência baseadas em estado compartilhado, que são uma fonte constante de bugs e dores de cabeça! 🤕 Vamos desvendar a poderosa filosofia do Modelo de Atores como uma alternativa mais gerenciável.Neste episódio, você descobrirá que:• Cada ator é um processador virtual independente 🤖, com seu próprio estado local e privado, e uma caixa de correio para mensagens.• A comunicação é exclusivamente por mensagens unidirecionais e assíncronas 📩, eliminando a necessidade de chamadas diretas ou inspeção do estado interno de outros atores.• Um ator processa cada mensagem até a conclusão, uma por vez e sem interrupções 🎯 – o que chamamos de processamento sequencial.• A grande sacada: atores não compartilham nada! 🎉 Isso simplifica a concorrência ao extremo, pois você não precisa escrever código explícito para gerenciá-la, já que não há estado compartilhado para proteger.Aprenda como essa abordagem descentralizada promove desacoplamento inerente (Tópico 28) 🔗, facilita a escalabilidade em diferentes infraestruturas (um núcleo, múltiplos núcleos ou múltiplas máquinas em rede), e constrói sistemas de alta resiliência e tolerância a falhas.Exploraremos o exemplo notável de Erlang 🧡, um pioneiro do modelo de atores, que demonstra milhões de "processos" leves comunicando-se por mensagens, com supervisão para reiniciar falhas e a capacidade de hot-code loading para atualizações sem parar o sistema.Usamos a prática analogia do restaurante 🍽️ com Cliente, Garçom e Balcão de Tortas para ilustrar a comunicação assíncrona e o estado local em ação.E não paramos por aí! Conectamos o Modelo de Atores com outros pilares pragmáticos:• Programação Transformacional (Tópico 30): Atores como etapas de um pipeline de dados 🔄.• Shared State Is Incorrect State (Tópico 34): Atores como a solução definitiva para os perigos do estado compartilhado 🚫.• Quadros Negros (Tópico 36): Como sistemas de mensageria modernos podem suportar a concorrência e o desacoplamento dos atores ✍️.Preparamos você para os desafios propostos pelo livro: reescrever código com exclusão mútua usando atores e estender o exemplo do restaurante para "torta à moda" 🍦.Sintonize em "Entrelinhas do Código" para transformar sua mentalidade de programação e aprender a construir sistemas que podem "dobrar, mas não quebrar"! 💪Aperte o play e eleve o nível do seu desenvolvimento! 🚀

    Show More Show Less
    8 mins
  • 033 - Estado Compartilhado - O Calcanhar de Aquiles da Concorrência
    Jul 3 2025

    Bem-vindos a mais um episódio do Entrelinhas do Código! No papo de hoje, mergulhamos em um dos maiores desafios do desenvolvimento de software: concorrência e estado compartilhado.

    Por que sistemas concorrentes são tão difíceis de construir corretamente? Qual é o verdadeiro vilão por trás dos bugs misteriosos que só aparecem “de vez em quando”? O livro The Pragmatic Programmer responde sem rodeios no Tópico 34: “Shared State Is Incorrect State”, ou, em bom português, “Estado Compartilhado é Estado Incorreto”.

    Com exemplos práticos (como a clássica disputa pela última torta na lanchonete 🍰), explicamos os riscos de múltiplas partes do código acessarem os mesmos dados ao mesmo tempo — e os desastres que isso pode gerar.

    💡 Neste episódio, você vai entender:

    • O que é estado compartilhado e por que ele é tão perigoso;

    • Como surgem condições de corrida, deadlocks e inconsistências;

    • Ferramentas e estratégias para mitigar esses problemas: semáforos, locks, operações atômicas, modelos baseados em atores, imutabilidade e muito mais;

    • Lições pragmáticas para quem quer escrever código concorrente mais seguro, robusto e livre de dores de cabeça.

    Se você já sofreu com bugs que "só acontecem na máquina do cliente" ou com aquele sistema que trava sem motivo aparente... esse episódio é pra você!

    🚀 Dá o play e vem aprender a navegar (sem naufragar) pelos mares turbulentos da concorrência!

    Show More Show Less
    7 mins
  • 032 - Quebrando o Acoplamento Temporal: Liberte seu Código do "Depois"!
    Jun 26 2025

    Bem-vindos a mais um episódio do Entrelinhas do Código! Neste episódio imperdível, Alex e Bia mergulham no Tópico 33 do aclamado livro "The Pragmatic Programmer: Your Journey to Mastery", parte do Capítulo 6 sobre Concorrência, para desvendar um conceito crucial: o Acoplamento Temporal12.Você já se perguntou por que seu sistema parece lento ou inflexível? O acoplamento temporal pode ser o culpado3. Descubra o que é essa "armadilha" onde seu código impõe uma sequência de eventos que não é realmente necessária para resolver o problema, forçando uma mentalidade de "faça isso E DEPOIS faça aquilo", mesmo quando as coisas poderiam acontecer simultaneamente34. Entenda como isso limita a flexibilidade, o realismo e o aproveitamento do hardware do seu sistema45.Alex e Bia explicam por que quebrar esse acoplamento é tão importante: você ganha flexibilidade, reduz dependências baseadas no tempo e constrói sistemas mais fáceis de raciocinar, mais rápidos, confiáveis, otimizados e resilientes56.Aprenda a identificar onde o acoplamento temporal se esconde com a poderosa ferramenta visual sugerida pelo livro: o diagrama de atividades78. Descubra como as ações (caixas arredondadas) e barras de sincronização (linhas grossas) podem revelar quais atividades poderiam ser executadas em paralelo, expondo gargalos temporais79. Usando o divertido exemplo do robô preparando uma piña colada, veja como um diagrama de atividades desvenda oportunidades de concorrência que uma lista simples de passos ocultaria, permitindo que várias tarefas aconteçam concomitantemente9....Além disso, entenda a fundamental distinção entre concorrência (como o código age como se múltiplas tarefas acontecessem ao mesmo tempo) e paralelismo (a execução real e simultânea que aproveita o hardware)12.... Ao quebrar o acoplamento temporal, você não só melhora a concorrência do seu software, mas também identifica as melhores oportunidades para o paralelismo em trabalhos independentes, como na compilação paralela de módulos do compilador Elixir1516.Não perca este guia pragmático para construir sistemas mais eficientes, adaptáveis e resilientes, questionando as sequências "óbvias" e estruturando seu código de forma mais flexível17.... Junte-se a Alex e Bia para pensar nas "entrelinhas" do seu código e praticar um pensamento de programação verdadeiramente pragmático!

    Show More Show Less
    7 mins
  • 031 - Evite o Código Dodô: O Poder da Configuração Pragmática - The Pragmatic Programmer
    Jun 19 2025

    Neste episódio, mergulhamos no Tópico 32: Configuração do livro "The Pragmatic Programmer", explorando por que manter valores que mudam ou variam entre ambientes/clientes externos ao código-fonte é absolutamente crucial para criar software resiliente 💪.Descubra por que hardcodificar informações como credenciais de banco de dados 💾, URLs de APIs 🌐 ou regras de negócio específicas 👤 viola o princípio DRY (Don't Repeat Yourself) 💧⛔ e é a receita para criar "Código Dodô" 🦤 – código inflexível que não consegue se adaptar e se torna obsoleto rapidamente ⏳.Aprenda a dica essencial: "Coloque a Configuração em Seu Lugar" ✅. Esse "lugar" deve ser externo ao código, como arquivos 📝 ou variáveis de ambiente 📦.Exploramos também como a configuração se conecta a outros princípios pragmáticos fundamentais:•DRY: Evitando a duplicação do conhecimento 💡.•The Power of Plain Text: Aproveitando a legibilidade humana 📖, a manipulação por ferramentas ✏️ e a compatibilidade com controle de versão 💾 do texto plano para gerenciar sua configuração1....•Domain Languages: Vendo formatos como YAML e JSON como linguagens de domínio simples que tornam a configuração clara e compreensível3....•Decoupling: Desacoplando a lógica da sua aplicação dos detalhes específicos do ambiente ou cliente, tornando-a mais flexível para implantação em diferentes contextos 🔗↔️6....Entenda como externalizar a configuração permite alterar o comportamento da aplicação sem reconstruir ou reimplantar o código 🚀💨, reduzindo drasticamente o risco de introduzir novos bugs 🐞➡️🚫.Não deixe seu projeto (ou sua carreira!) seguir o caminho do dodô 🦤. Sintonize para dominar a arte da configuração pragmática! ✨Tópicos Relacionados abordados: DRY, The Power of Plain Text, Domain Languages, Decoupling.

    Show More Show Less
    7 mins
  • 030 - O Custo Oculto da Herança em Programação - The Pragmatic Programmer
    Jun 12 2025

    💰 Você já sentiu que "herdou" mais problemas do que soluções ao usar herança de classes na sua programação? Neste episódio, exploramos o conceito de "Imposto de Herança" (Inheritance Tax), conforme apresentado no Tópico 31 do livro "The Pragmatic Programmer" 📚.Descubra por que a herança tradicional (subclassing) pode criar um acoplamento forte e introduzir custos invisíveis no seu código 🚧. Assim como herdar um casarão antigo vem com suas dívidas e problemas estruturais, herdar classes pode te prender a detalhes de implementação indesejados, tornando seu código frágil e difícil de mudar 🏚️💔.Mas não se preocupe! O episódio também apresenta alternativas pragmáticas para evitar essa armadilha e construir sistemas mais desacoplados e resilientes:✨ Interfaces, Protocolos ou Traits: Foque no O QUÊ uma classe faz, não no COMO, permitindo polimorfismo sem acoplamento de implementação. 🎯1 🤝 Delegação: Em vez de herdar, use outros objetos para realizar tarefas, aumentando o desacoplamento e controlando a interface do seu objeto. 🛠️2 🧬 Mixins: Adicione funcionalidades flexíveis a classes existentes sem usar herança profunda, ideal para compartilhar código e comportamentos (como validação!). 🧩34Entenda por que herança raramente é a melhor escolha56 e aprenda a usar essas técnicas para escrever código mais limpo, ortogonal e fácil de evoluir. Prepare-se para desafiar o uso de hierarquias de classes complexas e escolher a abordagem que melhor expressa sua intenção! 😉🎧 Aperte o play e livre-se do imposto da herança! #ProgramaçãoPragmatica #POO #OrientacaoAObjetos #Acoplamento #Desacoplamento #DesignDeSoftware #InheritanceTax #DesenvolvimentoDeSoftware

    Show More Show Less
    10 mins
  • 029 - Programação Transformadora e o Fluxo de Dados - The Pragmatic Programmer
    Jun 6 2025

    🎙️ Bem-vindos ao Entrelinhas do Código!
    Este é o episódio 29 do nosso podcast — e hoje vamos mergulhar na ideia poderosa por trás da Programação Transformadora e o Fluxo de Dados 🔄📊⚙️.

    👨‍💻👩‍💻 Nossos apresentadores trazem uma conversa afiada (e bem-humorada 😄) sobre como pensar programas como transformações de dados, em vez de interações entre objetos, pode te ajudar a escrever códigos mais limpos, desacoplados e flexíveis.

    📌 Neste episódio, você vai descobrir:

    • Como pensar seu código como uma linha de montagem de dados 🏭

    • O que Unix pipes 🧪 e Elixir 🧬 têm a ver com isso

    • Como compor funções para transformar dados com elegância e clareza ✨

    • E como tratar erros de forma mais fluida e consistente 🚨➡️✅

    🎯 Ideal pra quem quer sair do modo "orientado a objeto pra tudo" e começar a enxergar o poder das transformações funcionais na prática!

    Show More Show Less
    6 mins