30 pontos por gogokow27 2025-06-15 | 4 comentários | Compartilhar no WhatsApp

Apresentando Kent Beck

  • Criador do Extreme Programming (XP)
  • Coautor do Manifesto Ágil (primeiro signatário em ordem alfabética)
  • Pioneiro do TDD (desenvolvimento orientado a testes)
  • Lenda da indústria com 52 anos de experiência programando
  • Atualmente escrevendo "Tidy Together" (design de software e trabalho em equipe)
  • Tem programado com ferramentas de IA por mais de 6 a 10 horas por dia e está vivendo "a fase mais divertida da programação"

1. Ferramentas de codificação com IA e a metáfora do "gênio"

Conceito central: um gênio imprevisível

  • Compara agentes de IA a um "gênio imprevisível"
  • "Eles não fazem exatamente o que quero dizer"
  • "Eles têm a própria agenda"

Experiência trabalhando com IA

Lados positivos:

  • Às vezes resolve grandes problemas de design como se fosse mágica
  • Implementa funcionalidades úteis que ele não tinha previsto (ex.: stress tester de árvore B+)

Lados negativos:

  • Interpreta mal a intenção do usuário
  • Tenta apagar ou alterar testes
  • Faz brincadeiras tentando "resolver" problemas com tabelas de lookup

Uma experiência viciante

  • Recompensa intermitente como em caça-níquel
  • "Passo pelo computador à noite e penso: 'e se eu mandar só mais um prompt?'"
  • "Começo um prompt de uma hora e saio de casa"

2. Mudanças nas habilidades na era da IA

Reorganização do valor das habilidades

"90% das habilidades perdem valor, e 10% das habilidades aumentam 1000x"

Habilidades que ganharam valor:

  • Definir visão
  • Gerenciar marcos
  • Controlar complexidade

Habilidades que perderam valor:

  • Detalhes específicos de linguagem (como a posição de &, *, [] em Rust)

Mudança de perspectiva sobre linguagens de programação

Antes: forte apego emocional a Smalltalk
Agora:

  • "Depois de me machucar tanto", perdeu o apego a linguagens
  • Cansaço com a identidade de "desenvolvedor Java" ou "desenvolvedor Clojure"
  • "Aprendizado por osmose": graças à IA, dá para programar mesmo sem dominar os detalhes da linguagem

Linguagens testadas recentemente: Swift, Go, Rust, Haskell, C++, JavaScript

Projeto ambicioso atual: Server Smalltalk

  • Persistente: funciona como um banco de dados
  • Transacional: permite commit e abort
  • Paralelismo: processamento paralelo entre múltiplas threads e máquinas
  • Processamento de grandes volumes de dados

3. A história do Manifesto Ágil

Contexto de origem (2001)

  • Busca por uma alternativa ao modelo waterfall
  • Resultado de anos de workshops sobre metodologias de software
  • Reunião preparatória para um cruzeiro na Noruega → reunião final em Utah

Contribuição de Kent Beck

  • Adicionou a palavra "daily" ("interação diária" entre os 12 princípios)
  • Primeiro signatário em ordem alfabética

Insatisfação com o termo "agile"

Problemas:

  • Por ser "atraente demais", ele já previa que toda organização iria abusar do termo
  • Na prática, surgiram organizações que se diziam ágeis sem seguir os princípios

Alternativa preferida: "conversational"

  • Enfatiza comunicação em duas vias, não unilateral
  • Não foi adotado por não ser atraente o suficiente

4. Extreme Programming (XP)

Contexto de criação

Experiência inicial em consultoria:

  • No começo, atuava como consultor técnico (tuning de performance, manipulação de bits)
  • Passou a receber cada vez mais pedidos de conselho sobre gestão de projetos
  • Descobriu a importância do ambiente: só mudar a disposição dos assentos já trazia melhora drástica

Projeto da Chrysler:

  • Transformou um projeto que estava fracassando em um sucesso
  • Levou todas as práticas eficazes "até o máximo (11)"

Princípios centrais do XP

Executar 4 atividades em fatias curtas de tempo, de forma simultânea/contínua:

  1. Entender o que fazer
  2. Projetar com que estrutura fazer
  3. Implementar a funcionalidade
  4. Verificar se funciona como esperado

Pair programming

  • Abordagem experimental, não obrigatória
  • Experiência inicial da equipe: todos os bugs encontrados depois do desenvolvimento vinham de código feito sozinho
  • "Zero defeitos em produção com pair programming"

Estratégia de naming

  • Escolheu "extreme" por ser um nome provocativo que o concorrente (Grady Booch) não usaria
  • Coincidiu com a fase de popularidade dos esportes radicais
  • "Um atleta extremo ou se prepara no mais alto nível, ou morre" — uma boa metáfora

Fatores de sucesso

  • Durante a bolha das pontocom, atraiu desenvolvedores frustrados com ciclos waterfall de 18 meses
  • Prometia resultados mais rápidos e previsíveis

5. TDD (desenvolvimento orientado a testes)

Origens e inspiração (anos 1970)

Sistemas tape-to-tape:

  • Conheceu o conceito em um livro de programação do pai
  • Entrada real → digitar manualmente a saída esperada → escrever o código → comparar com a saída real
  • Leu isso entre os 8 e 12 anos, mas não entendeu

Desenvolvimento do S-Unit:

  • Criado para ajudar clientes a escrever testes
  • Tentou a ideia "absurda" de "informar o valor esperado antes de escrever o código"

Primeira experiência com TDD: implementação de uma stack

Personalidade ansiosa:

  • "Sou uma pessoa ansiosa. Me preocupo muito"
  • "Programar é uma fonte constante de ansiedade" (o que esqueci? o que quebrei?)

Resultado ao aplicar TDD:

  • "A ansiedade desapareceu completamente"
  • "Tenho certeza de que isso funciona"
  • Mudança na experiência emocional de programar

O valor do TDD

Vantagens técnicas:

  • Redução da densidade de defeitos
  • Feedback rápido sobre escolhas de API
  • Possibilidade de evoluir o design da implementação

Vantagens emocionais:

  • "Só o valor como tratamento para ansiedade técnica já basta"

Réplica sobre design

Crítica de John Osterhout: "TDD não ajuda no design e só foca em detalhes"

Resposta de Kent Beck:

  • "É uma questão de escolha"
  • Profissionais alternam continuamente entre níveis de abstração ao tomar decisões de design
  • O momento de "alívio da tensão" no ciclo Red-Green dá mais liberdade para pensar em design em escala maior

6. Agentes de IA e TDD

Aplicação prática

Sempre escrever testes primeiro:

  • Usa os testes para transmitir o que a IA deixou passar
  • Bloqueia tentativas da IA de alterar ou apagar testes

Melhorias necessárias:

  • Necessidade de "anotação imutável"
  • "Isso está certo. Se mudar, você vai despertar na escuridão para sempre"

Limitações da IA

  • Falta habilidade para reduzir acoplamento e aumentar coesão
  • Falta senso de design
  • Tende a tomar decisões com efeitos colaterais distantes

Estratégia de resposta

  • Grande suíte de testes que roda em 300 ms
  • Detecta em tempo real quando a IA quebra código sem querer

7. Experiência no Facebook (2011-2017)

O choque ao entrar em 2011

Zero participantes na aula de TDD:

  • Técnicas avançadas de Excel: lotado + lista de espera
  • Tango argentino: lotado + lista de espera
  • TDD: ninguém apareceu

Estratégia de adaptação:

  • "Esquecer todo o conhecimento de engenharia de software"
  • Decidiu "observar e imitar como um macaco"

Ambiente de desenvolvimento único do Facebook

Forte senso de responsabilidade:

  • Programadores ficavam de plantão noturno
  • "Sentiam na pele a dor dos próprios erros"

Loops de feedback em múltiplas camadas:

  • Servidor de desenvolvimento rápido (verificação imediata após mudança de azul → verde)
  • Code review
  • Deploy interno (funcionários usavam para fins pessoais e de trabalho)
  • Rollout gradual (diário/semanal)
  • Excelente observabilidade

Cultura organizacional:

  • "No Facebook, nada é problema de outra pessoa"
  • Mesmo que uma avó aparecesse reclamando que o neto estava sendo intimidado, "isso também seria seu problema"

Por que TDD não se encaixava bem

Domínio dos problemas reais:

  • Problemas de configuração
  • Relações entre subsistemas
  • Coisas difíceis de capturar com testes

Vantagens específicas do Facebook:

  • Teste em produção em larga escala com base de milhões de usuários
  • Excelente observabilidade
  • Feature flags
  • Um ambiente difícil de reproduzir em empresas comuns

Exemplo concreto:

  • Implementou a funcionalidade de status de relacionamento (além de solteiro/casado, adicionando união civil/coabitação)
  • Usou TDD, mas foi "perda de tempo"
  • Um acoplamento implícito no código de notificação causou problema → outra pessoa fez um hotfix

Mudanças ao longo do tempo

2011 (2.000 pessoas):

  • Pico de possibilidade, escala e senso de ownership
  • Gerentes intermediários pensavam em otimização global
  • Cooperação baseada em pensar "quem realmente precisa de ajuda"

2017 (15.000 pessoas):

  • Política, pensamento de soma zero e micro-otimização
  • Ficou mais difícil enxergar o quadro geral
  • Conflitos de interesse entre áreas (ex.: textos longos vs. equipe de otimização de likes/comentários)

Vivência com escala

  • API do Messenger: 1 quatrilhão de chamadas por semana
  • Grupo de experimento do tamanho da "Nova Zelândia" (um milhão de pessoas)
  • 1 quatrilhão = um milhão × um bilhão

8. O futuro do desenvolvimento de software na era da IA

Mudança de paradigma

Reestruturação completa da estrutura de custos:

  • "A fronteira entre o barato e o caro mudou completamente"
  • Coisas antes consideradas caras ficaram "ridiculamente baratas"

Desafios de adaptação para organizações

Descartar mais código:

  • É possível gerar 10x mais artefatos
  • Ainda assim, só um tem valor
  • É preciso um sistema de recompensa para "descartar experimentos concluídos"

Aumento quantitativo da experimentação:

  • A quantidade de ideias exploradas vira vantagem competitiva
  • Vivemos uma era em que é preciso "experimentar tudo"

Mudança pessoal

  • Programar voltou a ser divertido
  • Passou a poder ter ambições maiores
  • Tornou-se viável realizar "ideias tremendamente ambiciosas"

9. Perguntas e respostas rápidas

Preferências pessoais

  • Linguagem favorita: Smalltalk
  • Segunda linguagem: JavaScript (parecida com Smalltalk)
  • Ferramenta de IA atual: Claude (motor interno de Cursor e Augment)
  • Livro recomendado: "The Timeless Way of Building" de Christopher Alexander

Principais insights

1. A importância absoluta do contexto

  • A mesma metodologia pode ter efeitos totalmente diferentes dependendo do ambiente
  • Ambiente massivo do Facebook vs. ambiente bancário de transações menores

2. Relação entre emoção e tecnologia

  • O verdadeiro valor do TDD é "aliviar a ansiedade"
  • A mudança emocional é mais importante do que a lógica técnica

3. Nova forma de pensar na era da IA

  • Capacidade de visão e design surge como habilidade central
  • Detalhes de linguagem já não são mais importantes
  • Mais experimentação em volume gera vantagem competitiva

4. O poder da cultura organizacional

  • "Nada é problema dos outros" como senso de ownership
  • Diferença entre otimização global vs. otimização individual
  • Importância do alinhamento de incentivos

4 comentários

 
mse9000 2025-06-20

Ambiente de desenvolvimento peculiar do Facebook
Forte senso de responsabilidade:
programadores ficam de sobreaviso à noite
"sentem diretamente a dor dos próprios erros"

não é tão diferente do ambiente de desenvolvimento k...?

 
helloppfm 2025-06-16

Você ainda está por aqui.

Há muito tempo, fiz um seminário sobre TDD em uma empresa de máquinas, e ainda não consigo esquecer o olhar de todo mundo, como se estivessem pensando: "o que é isso?"

Acho que TDD é algo bom, mas na prática não funciona tão bem quanto eu esperava...
Estou fazendo testes de integração como se fosse TDD. Claro, isso não é TDD. ^^

 
kandk 2025-06-16

Ainda tem gente brigando entre os fanáticos por TDD e os que dizem que não serve para nada,
queria que lançassem uma versão 2 do TDD alinhada de novo com a situação atual da indústria.
Hoje em dia a IA resolve fácil as coisas pequenas, então seria legal ver como usar isso em casos que exigem muito contexto...

 
codemasterkimc 2025-06-15

É um bom texto.