Índice
Compartilha os principais insights obtidos com a leitura de 45 livros técnicos nos últimos dois anos e revisita como eles influenciaram a formação de uma forma de pensar como engenheiro de software, especialmente em relação à era da IA e a processos de desenvolvimento eficientes.
Introdução ao podcast e retrospectiva do 2º aniversário
Introdução ao Book Overflow
- É um podcast de livros técnicos para engenheiros de software, com o objetivo de melhorar as habilidades lendo os melhores livros técnicos toda semana.
Planejamento do episódio de 2º aniversário
-
Para celebrar o 2º aniversário do podcast, eles revisitam todos os livros lidos nos últimos dois anos e compartilham o único insight de cada obra que mais ficou marcado e continua influenciando até hoje.
-
O foco vai além de simplesmente lembrar o conteúdo dos livros, concentrando-se em como eles ajudaram a moldar sua forma de pensar como engenheiros de software.
Mudanças nos últimos dois anos
-
Os apresentadores do podcast, Carter e Nathan, passaram por grandes mudanças pessoais nos últimos dois anos.
-
Nathan se mudou para outro país, ambos concluíram a pós-graduação, e Nathan está esperando a chegada de um filho.
-
Também houve mudanças profissionais. Nathan passou para consultoria em tempo integral, e Carter saiu de uma big tech para uma startup.
-
-
Mesmo com essas mudanças pessoais, eles conseguiram manter o podcast graças ao apoio e interesse dos ouvintes, e expressam sua gratidão por isso.
Principais insights dos principais livros técnicos
The Practice of Programming (Brian Kernighan, Rob Pike)
-
Insight principal: Reúne a filosofia de programação que fundamenta a linguagem Go e, embora algumas partes estejam datadas, as ideias centrais continuam válidas.
-
Como programador Go e fã de Rob Pike, ele se lembra deste livro e relembra que muitas das ideias centrais de uma boa programação vieram daqui.
-
Também é mencionado que algumas partes, como o parser de CSV, estão datadas.
-
A Philosophy of Software Design (John Ousterhout)
-
Insight principal: O conceito de "Design It Twice" enfatiza que, em vez de tentar criar um design perfeito logo de início, é possível chegar a um design melhor aprendendo e melhorando ao longo da construção do sistema.
-
Na era da IA, o uso de LLMs reduz o esforço necessário para projetar duas vezes, permitindo um design ainda mais eficiente.
-
Mesmo tendo sido publicado em 2018, este livro continua exercendo grande influência e foi citado em muitos outros livros.
-
-
Insights adicionais
-
Apresenta ideias fortes sobre encapsulamento da complexidade, design de interfaces e tratamento de erros.
-
Por meio de uma entrevista com o autor, John Osterhout, foi possível ouvir sua visão e suas críticas sobre TDD.
-
Refactoring: Improving the Design of Existing Code (Martin Fowler)
-
Insight principal: Refatoração pode ser interrompida a qualquer momento sem problema; como é um trabalho de melhorar o design sem alterar a saída do código, pode ser feita de forma contínua e em pequenas etapas.
- Muitas vezes se entende refatoração de forma equivocada como reescrever todo o código, mas a definição de Fowler é muito mais restrita.
-
Caso de aplicação real
-
Recentemente, ao melhorar o uso de Next.js e React para otimizar o desempenho do roborobato.com, foi aplicada uma refatoração de verdade.
-
Sem mudar funcionalidades nem a UI, a estrutura do código foi reorganizada e dividida em 5 commits, o que facilitou a revisão e a aplicação.
-
What Is ChatGPT Doing and Why Does It Work? (Stephen Wolfram)
-
Insight principal: Ajudou a entender como os LLMs funcionam, especialmente o mecanismo de previsão do próximo token e o conceito de temperatura (
temperature).- Explica que a aleatoriedade inerente aos LLMs é justamente o que gera seu poder.
-
Valor do livro
-
Oferece uma análise bem estruturada que explica temas complexos de forma fácil de entender.
-
Fornece vocabulário básico e um framework para compreender LLMs, algo que continua sendo conhecimento importante.
-
Fundamentals of Software Architecture (Mark Richards, Neal Ford)
-
Insight principal: Enfatiza a importância da capacidade de vender a visão de arquitetura para stakeholders técnicos e não técnicos, tratando isso como um elemento fundamental da arquitetura.
- É preciso se comunicar constantemente e provar o próprio valor; uma postura do tipo "vai ser como eu disser" não é desejável.
-
Princípios adicionais
-
Em vez de ficar em uma torre de marfim, é preciso estar junto do código e da equipe, vivenciar o design na prática e se adiantar alguns passos para prever problemas potenciais.
-
Destaca o papel do ADR (Architectural Design Document), afirmando que é importante registrar e evoluir o processo de tomada de decisão.
-
Registrar e compartilhar decisões é essencial para evitar o "fenômeno do Groundhog Day".
-
The Clean Coder (Robert C. Martin, "Uncle Bob")
-
Insight principal: Explora o que é o verdadeiro profissionalismo, apresentando em especial as visões radicais do Uncle Bob sobre prazos e estimativas.
- Na cultura de engenharia, é comum confundir estimativas com prazos, mas para agir com profissionalismo é preciso separar claramente essas duas coisas.
-
Características do livro
-
Traz muitas histórias e permite conhecer mais a fundo a figura do Uncle Bob.
-
O livro é bem escrito e fácil de ler, sendo adequado para leitura de capa a capa.
-
Working Effectively with Legacy Code (Michael Feathers)
-
Insight principal: Código difícil ou assustador de modificar é código mal projetado, e qualquer pessoa pode torná-lo mais fácil de alterar.
-
Legacy code é definido como código sem cobertura de testes ou cujo funcionamento não é bem compreendido.
-
Oferece orientação sobre como começar quando não se está em um projeto greenfield ou quando se tem pouco controle sobre a base de código.
-
-
Valor do livro
- Cada seção é independente, o que o torna ótimo como referência; em vez de ler de capa a capa, é mais eficaz consultar as partes necessárias.
Web Scalability for Startup Engineers (Artur Ejsmont)
-
Insight principal: Nos estágios iniciais de uma startup, é mais importante se mover rápido do que buscar otimização excessiva ou alta disponibilidade, investindo no momento certo.
- Startups em estágio inicial não devem tentar alcançar tolerância a falhas perfeita ou alta disponibilidade quando ainda têm poucos clientes.
-
Limitações de época e sugestões
-
Os temas tratados no livro eram importantes nos anos 2010, e hoje muitas dessas questões já foram resolvidas por empresas de SaaS e PaaS.
-
Uma versão atualizada precisaria virar um manual para fundadores de primeira viagem ou líderes técnicos.
-
Recoding America (Jennifer Pahlka)
-
Insight principal: Mostra a ineficiência do software governamental e seu potencial de melhoria, sugerindo que software para governo também pode ser feito com boa qualidade.
-
Software governamental é avaliado pelo cumprimento de checklists, então o fato de realmente funcionar não recebe a devida importância.
-
Enfatiza a importância de aplicar ao desenvolvimento de software governamental os princípios centrais do ágil: "colaboração próxima com o cliente" e "entrega contínua de software funcionando".
-
Building Evolutionary Architectures (Neal Ford, Rebecca Parsons, Patrick K. Kua, Pramod Sadalage)
-
Insight principal: Por meio do conceito de "Fitness Functions", apresenta uma forma de avaliar objetivamente se o sistema está funcionando como esperado e como construir arquiteturas evolutivas.
-
Fitness Functions são essenciais para acompanhar a evolução do sistema e verificar se as decisões de design estão funcionando como pretendido.
-
É preciso organizar equipes e projetar sistemas levando em conta o impacto que estruturas organizacionais, como a Lei de Conway, têm sobre a arquitetura de software.
-
Looks Good to Me (Adrian Bergeron)
-
Insight principal: Embora os conselhos específicos do livro não tenham ficado na memória, ele serviu para reforçar mais uma vez a importância dos pull requests (PRs).
-
Ao refletir sobre a migração recente realizada na empresa, percebo que fomos negligentes na revisão de PRs e sinto a necessidade de revisitar este livro.
-
Valor do livro
-
Oferece uma boa orientação sobre contratos sociais e definição de padrões dentro da equipe.
-
Livros técnicos são úteis para revisitar quando necessário e desenvolver ideias.
-
Slow Productivity (Cal Newport)
-
Insight principal: Com a mensagem de “trabalhe menos e foque no que importa”, o livro alerta contra a pseudo-produtividade (pseudo-productivity) e enfatiza a necessidade de se concentrar em atividades de alto valor.
-
É um livro que mostra a forma profunda de pensar de Cal Newport, que reduziu atividades desnecessárias para focar em trabalhos importantes, como produzir seu podcast.
-
À medida que a carreira avança, é preciso focar nas atividades de maior alavancagem e valor, e a pseudo-produtividade atrapalha isso.
-
The Unicorn Project (Gene Kim)
-
Insight principal: Explica a importância dos processos de DevOps sob a ótica da engenharia de software e destaca que é preciso resolver problemas fundamentais para acelerar o desenvolvimento.
- Um sistema que depende de um gerente de release é ineficiente, e qualquer pessoa deveria ser capaz de gerenciar releases por meio de processos automatizados.
-
Estrutura e influência do livro
-
Ao contrário da obra anterior, The Phoenix Project, explica DevOps do ponto de vista da engenharia de software, o que o torna aplicável a mais desenvolvedores.
-
Transmite conteúdos técnicos com facilidade em formato de fábula e ajudou a impulsionar a tendência de combinar narrativa com livros técnicos.
-
Tidy First (Kent Beck)
-
Insight principal: Enfatiza a “opcionalidade” (Optionality) na estrutura do código, ou seja, o valor da flexibilidade e da extensibilidade, que, assim como o valor do tempo, gera ganhos potenciais no futuro.
- Como é difícil prever no momento inicial quais funcionalidades serão necessárias no futuro, é importante escrever código de forma que possa ser alterado com flexibilidade.
-
Características e valor do livro
-
É um livro curto e conciso, mas oferece insights profundos e faz sentir o prazer do desenvolvimento de software.
-
Aplicar ao software ideias vindas de outros setores, como negociação de opções, é sinal de desenvolvimento maduro.
-
Unix: A History and a Memoir
-
Insight principal: Passei a entender o funcionamento e a importância dos “pipes”, um dos blocos fundamentais do Unix.
- Graças à filosofia Unix, em que cada programa recebe uma entrada e retorna uma saída, é fácil conectar a saída entre programas por meio do operador pipe.
-
O papel de Doug McIlroy
- Doug McIlroy teve um papel importante na integração das ideias do Unix por meio dos pipes e contribuiu para moldar a filosofia Unix.
The Twelve-Factor App
-
Insight principal: Apresenta 12 princípios para construir aplicações cloud-native, mas destaca que aplicá-los de forma equivocada pode, na verdade, aumentar a complexidade.
-
São princípios criados na época da Heroku, e ao olhar para os fundamentos, é natural concordar com eles.
-
Assim como acontece quando se adota uma tecnologia específica, como Kubernetes, sem entendê-la de fato, esses princípios também podem ser mal utilizados.
-
The Agile Manifesto
-
Insight principal: O ágil surgiu como reação ao modelo em cascata, com o objetivo de entregar software funcional rapidamente e incorporar o feedback do cliente com agilidade.
- A essência do ágil é colaborar de perto com clientes e stakeholders para melhorar o software de forma iterativa.
-
Aplicação moderna e críticas
-
A essência do ágil é familiar para muitos desenvolvedores, mas sem esforço consciente seu significado se perde com facilidade.
-
Está tão profundamente enraizado no desenvolvimento moderno de software que, mais do que aprender algo novo, leva a revisitar práticas já existentes.
-
Foi muito eficaz como reação ao modelo em cascata e enfatiza que, por causa da complexidade do software, é importante entregar valor em pequenas partes, em vez de depender de planejamento de longo prazo.
-
The Software Engineer's Guidebook (Jorge Orozco)
-
Insight principal: Com o avanço da carreira, é preciso focar em trabalhos de alta alavancagem e gerenciar a própria trajetória de forma proativa.
- Destaca a importância de gestores e patrocinadores: o gestor apoia sua promoção, e você deve se esforçar para corresponder a essas expectativas.
-
Características do livro
-
Assim como a newsletter The Pragmatic Engineer, oferece conselhos práticos sobre gestão de carreira.
-
Fornece frameworks para entender trajetórias profissionais complexas e para se posicionar de forma ativa.
-
Hypermedia Systems (Carson Gross, et al.)
-
Insight principal: Tecnologias como HTMX mostram que é possível construir aplicações web suficientemente dinâmicas com renderização no servidor, reduzindo a necessidade de clientes JavaScript complexos.
- Aproveitando as vantagens da ideia original da web como sistema de hipermídia, é possível implementar muita coisa no lado do servidor, independentemente da tecnologia de backend, desde que haja boas especificações.
-
Vantagens e limites do HTMX
-
O código escrito com HTMX é simples, fácil de manter e tem maior chance de durar mais do que frameworks modernos.
-
O HTMX pode não ser o futuro do desenvolvimento web, mas opiniões contrárias como essa ajudam a tomar decisões melhores como engenheiro.
-
Team Topologies (Matthew Skelton, Manuel Pais)
-
Insight principal: As equipes devem ser organizadas para minimizar as interdependências que exigem coordenação, e a estrutura da equipe influencia diretamente a arquitetura do software.
-
Team Topologies foca em reduzir a coordenação entre equipes para otimizar o fluxo.
-
Como a estrutura da equipe determina a estrutura do software, é preciso ter cuidado ao montar times.
-
Ace the System Design Interview (Alex Xu)
-
Insight principal: Em entrevistas de system design, é importante usar “back-of-the-napkin math” para estimar escala e requisitos de desempenho.
-
Ao memorizar valores comuns, como tempo e tamanho de dados, e usá-los para concretizar os requisitos do sistema, é possível fazer um design baseado em fundamentos, e não em suposições.
-
Por exemplo, ao precisar processar o número de tweets por hora, se você souber quantos bytes há por tweet e o tamanho de um tweet, pode calcular o armazenamento e a vazão necessários.
-
-
Como usar em entrevistas
-
Pensar em voz alta junto com o entrevistador e compartilhar o processo de cálculo ajuda a obter feedback e construir um design melhor.
-
Não basta apenas listar tecnologias modernas; é importante apresentar o raciocínio por trás da escolha de cada tecnologia.
-
The Good News Factory (Kent Beck)
-
Insight principal: Para que uma equipe de software se torne uma “fábrica de boas notícias”, capaz de entregar continuamente resultados positivos, é essencial construir código limpo e sistemas escaláveis.
- Se a equipe não consegue mostrar resultados positivos com consistência, uma narrativa negativa pode se formar externamente.
-
Características do livro
- É um livro curto e conciso, em formato de relatório, que transmite sua mensagem central com eficácia.
Thinking in Systems (Donella Meadows)
-
Insight principal: O conceito de “stocks and flows” ajuda a entender a natureza dinâmica dos sistemas e oferece um framework útil para analisar sistemas complexos.
- Assim como é importante entender a diferença entre PIB (fluxo) e valor de mercado (estoque), também é essencial distinguir o estado atual de um sistema e sua taxa de mudança.
-
Valor do livro
- Embora seja abstrato, oferece insights de alto nível para o pensamento estratégico e sistêmico.
Grokking Concurrency (Karol Bobrov)
-
Insight principal: É importante fazer o “right-sizing” do modelo de concorrência; tanto fragmentá-lo demais quanto torná-lo amplo demais tem desvantagens.
- O livro mostra como entender as unidades de trabalho que podem ser paralelizadas ou divididas em tarefas concorrentes e como ajustar o sistema.
Rework (Jason Fried, David Heinemeier Hansson)
-
Insight principal: É possível transformar o fato de ser pequeno e pouco conhecido em vantagem, usando isso para iterar, se reinventar e construir o sucesso.
- A desvantagem de ainda não ser famoso pode, na verdade, ser uma oportunidade de inovação, e vale a pena aproveitá-la para não perder os benefícios do sucesso.
-
Características e influência do livro
- É um livro lógico e bem escrito, que inspira quem quer fazer bootstrap ou construir algo fora das noções convencionais de sucesso.
-
Por meio do caso de sucesso da Basecamp e da 37signals, prova que a filosofia deles continua válida mesmo com o passar do tempo.
In the Plex (Steven Levy)
-
Principais insights
-
A capacidade dos engenheiros do Google de reinventar de forma criativa conceitos complexos como teoria dos leilões é o tipo de resultado que se obtém ao contratar pessoas inteligentes e confiar nelas.
-
Como o sucesso de uma startup não é garantido, é preciso se esforçar continuamente e contribuir para o futuro da empresa.
-
-
Conexão com o autor
-
Steven Levy, o autor, é um excelente escritor, e seu outro livro, 'Crypto', também vale a recomendação.
-
Foi muito interessante ter passado pela experiência de entrevistar para uma empresa cujo CEO atual apareceu no livro.
-
Thinking Like a Large Language Model (Mukund Sundararajan)
- Principal insight: Embora a lembrança específica deste livro esteja um pouco vaga, ele ajudou a entender a forma de pensar dos LLMs.
The DevOps Handbook
-
Principais insights
-
Forneceu orientações práticas sobre implementação real de DevOps, como pipelines de CI/CD, rollback automático e observabilidade aprimorada, elevando bastante a capacidade de engenharia de software da equipe.
-
Apresenta a técnica de "shadow traffic", em que, ao implantar um novo recurso como uma "nova funcionalidade de busca", parte do tráfego real é enviada para a nova API para observar os resultados.
-
Enfatiza a importância de separar deployment de release, e como feature flags permitem lidar rapidamente com regressões que possam surgir durante migrações.
-
-
Autores e valor do livro
- Conta com autores renomados como Gene Kim, Jess Humble, Patrick Dubois, Nicole Forsgren e John Willis, e traz conteúdo complementar a 'Unicorn Project' e 'The Phoenix Project'.
Just for Fun: How Linus Torvalds Started an Accidental Revolution
-
Principal insight: Linus Torvalds criou o Linux ao se concentrar no que achava divertido, e isso acabou mudando o mundo.
- Focar no que é divertido é o que mais motiva a trabalhar com intensidade, e isso pode levar a um grande sucesso inesperado.
-
Inovação do software de código aberto
- Linus Torvalds abriu caminho para uma forma não convencional de gerar receita com software de código aberto sem abrir mão de seus princípios, o que influenciou fortemente a operação de servidores e a forma de fazer commits de código.
Made to Stick
-
Principal insight: Ideias memoráveis seguem certos padrões, e mesmo sem ser um gênio criativo é possível usar esses padrões para comunicar ideias com eficácia.
- A mensagem "foque no que é divertido e acredite que você vai trabalhar mais duro naquilo que mais te diverte" teve grande influência em decisões pessoais de carreira.
Staff Engineer (Will Larson)
-
Principal insight: No nível de Staff Engineer, é preciso focar em trabalhos de alta prioridade e alto impacto, e isso é um critério importante ao longo de toda a carreira.
- Não existe um caminho fixo para se tornar Staff Engineer; pessoas com origens diversas resolvem problemas complexos.
Finite and Infinite Games (James P. Carse)
-
Principal insight: O "jogo finito" tem vitória e derrota claras, enquanto o "jogo infinito" tem como objetivo aproveitar o próprio jogo; buscar jogos infinitos na vida é importante.
- Quando Linus Torvalds criou o Linux, ele perseguia um jogo infinito — criar o melhor sistema operacional e construir uma comunidade — e não o jogo finito de criar o sistema operacional mais popular.
Radical Candor (Kim Scott)
-
Principal insight: Dar feedback direto e honesto é, na verdade, uma forma de se importar com a outra pessoa, e é preciso evitar a "empatia ruinosa (ruinous empathy)".
-
O feedback direto é dado porque há preocupação genuína com o bem-estar da outra pessoa, e isso é diferente de grosseria.
-
Ao dar feedback, é importante considerar os sentimentos da outra pessoa, mas transmitir o ponto central com clareza.
-
Mastering OpenTelemetry and Observability (Steve Flanders)
-
Principal insight: Deve-se evitar vendor lock-in e usar OpenTelemetry, mas a era da IA levou a repensar como a importância do vendor lock-in pode mudar.
- A conveniência de ferramentas como DataDog pode tornar o vendor lock-in atraente, mas é preciso considerar riscos como mudanças de preço ou fusões e aquisições.
Beyond Vibe Coding (Addy Osmani) & Advanced React (Nadia Makarevich)
-
Principais insights
-
'Beyond Vibe Coding' apresenta o conceito de "IA aumentada (augmented AI)", em que engenheiros produtivos escrevem código em colaboração com agentes de codificação.
-
'Advanced React' é útil como material de referência.
-
The Tao of Programming (Jeffrey James)
-
Principal insight: Construir um sistema operacional exige apenas precisão técnica, mas modelar o mundo real, como em um sistema de folha de pagamento, é mais difícil porque envolve questões complexas como stakeholders.
- Isso pode não ser intuitivo para programadores e sugere que modelar o mundo real em software traz uma complexidade inerente.
-
Relação com o ensaio "Worse Is Better"
- 'The Tao of Programming' e "Worse Is Better" são textos curtos, mas do mesmo tipo que provoca reflexões profundas.
Mastering the Behavioral Interview (Austin McDonald)
-
Principal insight: Em entrevistas técnicas no estilo do Vale do Silício, é possível aprender a contar a própria experiência encaixando-a em arquétipos como o do "hacker solitário".
- A habilidade de contar histórias de forma eficaz em entrevistas é muito importante, e este livro mostra concretamente como fazer isso.
Designing Data-Intensive Applications (Martin Kleppmann)
-
Principal insight: Aborda em profundidade conceitos fundamentais de sistemas distribuídos, como confiabilidade, latência versus throughput e resiliência versus recuperação rápida.
- Também trata de temas como privacidade de dados e exploração da atenção, o que leva a uma reflexão mais profunda ao construir sistemas de alta demanda.
Reflections on Trusting Trust (Ken Thompson) & Coding Machines (Lawrence Kesteloot)
- Principal insight: Na era em que a IA gera código, esses textos levam a pensar profundamente sobre a confiança no código gerado e sobre possíveis intenções maliciosas (por exemplo, esteganografia).
Frictionless (Nicole Forsgren, Abby Noda)
-
Principal insight: Como este livro foca principalmente na implementação de iniciativas de experiência do desenvolvedor (DevEx) voltadas a líderes de grandes empresas, ele não teve grande impacto no estágio atual da carreira.
- Traz um excelente conteúdo sobre DevEx, mas pode ser mais importante para empresas a partir da Série C.
Project Hail Mary (Andy Weir)
-
Principal insight: O futuro não é algo a ser temido, mas um problema a ser resolvido, e o livro apresenta uma visão otimista sobre o papel da humanidade e da tecnologia.
- Transmite uma mensagem esperançosa de que, mesmo em situações difíceis, é possível realizar coisas extraordinárias por meio de foco e inovação.
2 comentários
Askno YouTube, acho que não haveria problema mesmo sem resumir todo o conteúdo. Na verdade, o que mais me deixou curioso foi o motivo de você ter compartilhado isso; quanto ao conteúdo, acho que até um resumo em 3 linhas já seria suficiente.O endereço do site está abaixo.
https://bookoverflow.io/