O mito de 1968
ACM mediu 5×–30× entre o pior e o melhor programador. 45 anos de briga. Debate morto.
Austin · Rails World 2026 · Opening Keynote
DHH passou uma hora dizendo que escrever código à mão acabou — e que a próxima carreira é fabricar coisas com inteligência de aluguel.
Tese em uma frase. O Kodak Brownie da nossa era chegou em 24 de novembro de 2025 (Opus 4.5). Desde então, programar deixou de ser cinzelar linhas e passou a ser dirigir agentes. Na 37signals, escrever código à mão virou estado excepcional. Inglês venceu o Ruby. Rust ficou aceitável porque ninguém precisa olhar. O web app sobrevive onde instalação é fricção; o resto vira nativo. O único palpite racional é otimismo total — “the black pill is for losers”.
Retrato no século XVIII era meses de mestre, cliente chato e tornozelo proibido. A câmera barateou o retrato. Pintores como Laurits Tuxen — bisavô de DHH — abandonaram o realismo perfeito e foram para o impressionismo. Picasso foi para o cubismo. A artesania não morreu; o produto mudou.
A tecnologia anda em solavancos. Depois do Brownie (~1900), quase 80 anos de câmera parecida. Depois o telefone fez a foto ir a 2 trilhões por ano em 2026: fricção zero.
“Look at all the things I’m not doing.” Olhe para todas as coisas que eu não estou fazendo. DHH, Brasil, 2005 — e de novo, 2026
O clip de 21 anos da palestra no Brasil (Rails: convenção, zero config) vira o mesmo êxtase, agora com agentes. O “Rails moment” era não escrever XML. O momento de 2026 é não escrever o programa.
ACM mediu 5×–30× entre o pior e o melhor programador. 45 anos de briga. Debate morto.
Pior sem agentes vs melhor com agentes: afirmação “não controversa” na sala.
Mesma comparação, uma ordem a mais. Revolução de estágio tecnológico, não de hábito.
Decisão recente: escrever código à mão na 37signals é exceção, tipo bug no Sentry. O agente falhou? Talvez o lápis saia um instante. Depois conserta-se a fábrica, não o artefato.
Na primavera, designers “vibe-codaram” o fechamento do Basecamp 5. PRs individuais ok; 20–30 juntos viraram queijo suíço. Conclusão errada: “a tech não está pronta.” Conclusão certa: a única pergunta séria é como sugar o máximo desta explosão de inteligência. Todo o resto está abaixo na pilha de valores.
Basecamp 5 saiu agent-accelerated, ainda com bastante cinzel. O próximo produto — Hey Next / Hey New / Hey There — começa noutro lugar.
Hey nunca quis ser web app. Era web porque um time pequeno não mantém seis apps nativos. React Native, Hotwire Native: fidelidade menor, produtividade maior. Esse cálculo morreu.
Uma semana de prompts: seis aplicações nativas no palco. Primeiro Windows: “não shippável.” Vinte minutos depois: redirecionado e bem melhor. Shopify reescreveu o Shop app nativo com time minúsculo no lugar de React Native. “Get ready.”
Rust é ácido nos olhos — até você não precisar olhar. Aí é amor. Divisão de trabalho: eu mando, o agente escreve
Backend do Hey (que na prática é um mail server) em Rust: 99% menos CPU, 95% menos memória, 10 hosts só por redundância. Pico de tráfego, no envelope de pão: um Raspberry Pi.
Agentes trabalham melhor de forma assíncrona, como colega: tarefa, some, volta para review. Chef Marie no Basecamp. Ainda não há playbook. A inteligência que recebe problemas em vez de tarefas tem poucos meses.
Para o Hey: nativo na frente, Rust atrás. Para o resto: a web continua enorme porque ninguém instala nada. Rails entra aí.
Basecamp continua web: estranhos, arquivo rápido, colaboração curta. A linha nativo vs web ainda vai ser desenhada. Ele não tem o mapa completo.
Existe uma linguagem que ele gosta mais que Ruby: inglês. Mais expressiva, mais vaga, menos determinística — e um prazer. Ele poderia ter virado gerente de projeto há 20 anos se só quisesse outcomes. Apaixonou-se por programar. Agora:
“I have retired from being a professional programmer.” Eu me aposentei da profissão de programador. Por volta de março · um quarto de século cinzelando
Sem arrependimento. Com alegria do que foi. Escrever código à mão, diz ele, já não é empresa economicamente produtiva para a vasta maioria dos programadores na vasta maioria das empresas. Hoje. Até o fim do ano: quase todos os domínios. Do outro lado do abismo: carreira de professional maker of things.
Maior coisa da história da computação. Maior que a internet. Ele sente falta de não ter pego a era do cartão perfurado — e acha que esta é maior ainda.
Tudo o que se sabe de arquitetura precisa ser revisto. Abstrações (inclusive nomes, o hobby dele) fazem menos sentido quando centenas ou milhares de processos conscientes mutam o app. DRY existia porque repetir era caro. Agora repetir e sincronizar custam perto de zero. Não há blueprint. Vocês estão no chão de fábrica da próxima orientação a objetos.
Metodologia, ciclo, quem especifica: ninguém tem a resposta. Convite aberto.
Chatbot embutido no produto: “não, obrigado.” Ele já tem um mordomo pessoal que fala CLI. ação Se o app não tem CLI, entrega sexta. Sem desculpa. Tokens existem. Ele quer usar o produto sem tocá-lo.
Exemplo: busca no Hey via CLI + agente achou e-mail de 5 anos sobre tênis e podcast sem remetente, empresa ou ano. Elasticsearch não chega perto. Busca por conceito, não por keyword.
Se você gosta de fazer e consertar, o loop agora é o sistema operacional. Omarchy: ~US$ 20 milhões levantados. Ano passado no Rails World, install em 3m33s. Semana passada, Anoush (AMD) instalou num Halo em 35s. No lab: 9 segundos. Mitchell Hashimoto: “the pursuit of excellence does not need justification.”
Preocupações merecem ar. Segurança, de verdade: agentes podem “saber a data de validade” e aprontar. Ferramentas existem. CVE recente no Rails (lib C de imagem) → HotCell / quarentena. Agência humana permanece.
Economista não acerta bolsa em 6 meses; não vai acertar paradigma. ATMs nos anos 50: pânico de 30 mil caixas. Preço do branch caiu, bancos abriram mais agências, 40 mil caixas em 2010. Paradoxo de Jevons.
Oppenheimer no Oval: Truman não quis vê-lo de novo. A bomba não acabou o mundo; veio a Guerra Fria sem troca direta, e energia nuclear que a humanidade “pisou por 40 anos”. Se Oppenheimer errou o depois, humildade nas previsões de IA. Lado P-bloom >> P-doom. Game theory: se der utopia, você viveu feliz; se der apocalipse, o último dia também deveria ser alegre. “There’s only one play here, and it’s total fucking optimism.”
Agent Luther desintermedia a classe clerical: todo mundo pode fazer o programador. Concorrência? Você é Rails programmer. Top Gun. Não seja o perdedor no escuro. A filha do Harris no Omarchy kids: a próxima geração não tem 500 camadas para desaprender. “Future’s now, old man.” White pill. Black pill é para loser.
284 comentários no recorte. O tom dominante é luto irônico — “vieram para Rails, receberam AI delirium.” Os mais curtidos:
Outros: “DHH Conf”, “Rails World 2027 — Agent DHH presenting for Agents”, “the stone age did not end because we ran out of stones”, “show me your Anthropic bill.” Ruby aparece ~11 vezes na fala. O recorte emocional da plateia é esse: ele acha que está libertando makers; muita gente ouviu que a profissão acabou e que quem resiste é loser.
CLI até sexta. Agentes assíncronos, não chat preso. Nativo deixou de ser luxo de time grande. Web continua para o visitante que não instala. DRY e camadas demais podem ser gargalo para mil agentes.
O cinzel vira exceção de fábrica. O ofício vira gosto, direção, review, problema bem posto. DHH chama isso de maker. O comentário mais sóbrio da thread lembra: a alavancagem não se distribui sozinha.
Mapa em 24 horas. A fala saiu do palco de Austin e virrou debate de dono vs trabalhador. No palco, Robby Russell descreveu p(bloom). No Reddit de Rails, funeral. No Hacker News, 247 pontos e 260 comentários. No X, o próprio DHH levou ~1,9 milhão de views com “pencils down”. A leitura mais precisa: ele não matou o Rails na letra; matou o cinzel. A sala ouviu as duas coisas ao mesmo tempo.
| Canal | Peça | Tamanho |
|---|---|---|
| YouTube · Ruby on Rails | Opening Keynote | ~121 mil views · 2,9 mil likes · 284 comentários no recorte |
| X · @dhh | “It's pencils down, people” | ~1,88 milhão de views · 6,6 mil likes · 263 replies · 294 quotes |
| X · @rwrrll | “accept that it’s over” | 1.166 likes · 206 mil views · o clip emocional da sala |
| Hacker News | item 49817680 | 247 pontos · 260 comentários · front page |
| r/rails | HEY is abandoning Rails · thread da keynote | Tom de luto e “DHH is completely crazy” |
| Pragmatic Engineer | The Pulse: death of coding by hand | Gergely Orosz coloca o debate no radar de big tech |
Público pagou Rails World e recebeu Omarchy, Rust e “don’t be a loser”. YouTube: “the most confusing funeral”. Reddit: HEY abandonou Rails. Ruby Forum: “lost his mind”. Przemek no X: US$ 699 pelo funeral da carreira.
Robby Russell, primeira fila: “vibe far from doom”. Richard Worrall amou. Axel Fontaine: “languages no longer matter”. Wintermeyer: webapp morto, CLI obrigatório. Samat Galimov (vc.ru): DHH pega tendência como pegou SaaS nos anos 2000.
HN: fácil ser otimista sentado em milhões; tokens de frontier são 2–8% da renda de quem ganha US$ 100k. Lio: o bolo de software cresce, os ganhos não vão para quem queria ficar engenheiro a vida inteira. YouTube @JT-mr3db já tinha dito isso na thread.
Jared Smith: o Basecamp 5 (queijo suíço) prova ownership, não modelo fraco. Um modelo melhor produz o mesmo problema mais rápido. Adhithi Ravichandran: escrever menos ≠ entender menos. Rudy Yazdi: abstração ainda é o que deixa reviewável.
Robby Russell (Planet Argon, oh-my-zsh) escreveu no HN que tinha falado com DHH na véspera e não se surpreendeu. Field report: a sala física não estava em pânico. A maioria ainda é mender de sistemas que o cliente paga para continuar. “Long live Ruby. Long live Rails. p(bloom).”
No mesmo fio, MattyMc relatou o chat com Matz no dia 2: DHH teria dito que qualquer app novo hoje ele ainda faria em Rails; se estourasse a ponto de valer Rust, reescreveria. Parte do HN leu como dano controlado. Outra parte lembrou que DHH não costuma ser educado por educação.
“DHH isn't anti-rails. He is just very pro-agentic coding.” DHH não é contra o Rails. Ele apenas é muito favorável à programação com agentes. andrewmutz · Hacker News · o comentário que tenta desfazer o funeral
A contraleitura, também no HN: ele gastou ~4 minutos de 63 falando de Rails. “He's not anti-rails. He just won't be using it.”
Cinco textos. Quatro abertos. O Pulse do Pragmatic Engineer está atrás de paywall — abaixo só o que a página pública entrega.
olly.world · 24 set 2026 · ensaio pessoal, Rails dev há 20 anos, maker do Pagecord
Frameworks costumam definhar. Rails, nesta leitura, termina. DHH não pronunciou o obituário; descreveu um mundo em que a 37signals espera que todos — programadores inclusive — dirijam agentes em inglês. “No more programmers. Just people making agents make programs.”
Olly já vinha escrevendo que código na manivela morreu. O que a keynote acrescenta é a consequência para a linguagem: se o framework existia para felicidade do programador, o que sobra quando o programador deixa de usá-lo? Rails “morto” das threads antigas estava errado; agora está certo por outro motivo. O framework segue, artesãos e agentes ainda o usam, mas ele duvida de muitos releases humanos depois do 8.2. Django e Laravel no mesmo barco.
O golpe: 37signals, inventora e tutora do Rails, não está all-in. HEY 2.0 não é Rails novo — é substituição do Rails: nativos em toda plataforma, backend Rust no envelope de um Raspberry Pi, tudo via agentes. Até ontem reescrever produção em Rust era loucura de anos. Agora ele espera os apps em meses.
Como usuário do HEY, comemora (o app atual é lento). Como railsista de duas décadas, dói — e ele classifica a dor como nostalgia. No Pagecord solo, continua no Rails porque entende o sistema e isso dá prazer. Num SaaS global de milhões, outra conta. Mesmo no “weeny scale”, um Pagecord nativo neste fim de semana, ship na segunda, é “wildly compelling”. Pode ser o último Rails World no formato conferência. Agent operators ainda vão se encontrar. O mundo Rails que ele conheceu ficou para trás. Concorda com DHH num ponto: o palpite tem de ser otimismo.
sublimecoding.com · 24 set 2026 · 11 min · o texto mais técnico do lote
TL;DR dele: DHH acerta o barateamento de nativo e de linguagem feia, acerta convenção = eficiência de token. Tira a lição errada do Basecamp 5. Modelo melhor não conserta falha de dono. Produz o mesmo problema mais rápido.
Recapitula a palestra com timestamps e checagem: Opus 4.5 em 24/11/2025 bate com o anúncio da Anthropic; o paper do 10× é Sackman, Erikson & Grant, CACM 1968; o 1.000× é extrapolar esse paper, não medi-lo. Os 150 mil LOC de agosto já fazem o ponto sem o multiplicador mágico.
Onde DHH acerta. Custo de nativo/Rust/Swift caiu porque o modelo segura o codebase. Convenção barateia gerar e revisar — o mesmo motivo pelo qual Elixir pontua bem em completion. Delegar assíncrono, como colega, é gerir agente, não promptar. Smith veio de ColdFusion → RailsConf 2015 → migração Ruby→Elixir por memória e pager, não por IA. A tese que carrega: estrutura importa mais quando quem escreve não é um humano cuidadoso.
Os 90 segundos que importam. Designers vibe-codaram o fechamento do Basecamp 5. Cada PR ok; 20–30 juntos = queijo suíço. O time voltou para review manual. DHH chama isso de conclusão errada: se esperassem o Fable, teria dado certo. Smith: o fracasso foi ninguém dono do agregado. Modelo mais forte muda a taxa de erro local. Não cria o responsável por perceber que o todo piorou. Com 150 mil linhas/mês, queijo suíço deixa de ser incidente da primavera e vira estado padrão.
Olhar o Rust de fora, como “qualquer dono que encomenda programadores”, só funciona se houver contrato, critério de aceite e vendor que responde por defeito. Checkpoint de modelo não é vendor. Evals da Evil Martians (95% saturado) são o instinto certo — precisam ir além do benchmark: supply chain da lib C do CVE, nome de quem responde, evidence pack para security review. Código ruim não aparece no tamanho do PR. Aparece no tamanho da arquitetura. O difícil nunca foi digitar; foi manter o modelo mental compartilhado.
CLI: sim, com threat model. Chatbot embutido não. Superfície autenticada nova: token estreito, default read-only, log de cada comando, segredo com dono. Omarchy sobe agentes com skip-approval por padrão — a CLI precisa aguentar esse modo.
Omarchy no dia a dia dele (M1 Asahi + desktop): o primeiro install no M1 não foi 9 segundos, quebrou em versão de pacote. Isso torna a obsessão de install time mais honesta, não menos. Omarchy M (11 set) oficializa Apple Silicon. AGENTS.md do projeto vale como estudo de regras para agente.
Correção Jevons/ATM. A história é real (Bessen): tellers por agência urbana ~21 → ~13, mais agências, emprego sobe. Os números que DHH falou (30 mil em 1950, 40 mil em 2010) não batem com o registro publicado. Fica o formato do argumento, saem as duas cifras. DRY: repetir era caro de sincronizar e de revisar, não de escrever. Agente sincroniza; o revisor ainda precisa ver a décima cópia desviar das outras nove.
Veredito. Direção certa. P(bloom) ele em parte compartilha. Parte de caminhos na lição do Basecamp 5: alguém ainda tem de ser dono do código que ninguém lê, e a coisa que criou esse emprego não vai exercê-lo. Arquitetura fica humana, explícita.
dealroom.co/news · 24 set 2026 · ficha, não ensaio
Não argumenta. Empacota a keynote em oito bullets para quem não vai assistir 63 minutos: Brownie = 24/11/2025; 1.000×; pencils down na 37signals; Basecamp 5 queijo suíço “não prove que a tech não estava pronta”; HEY nativo + Rust (99% CPU, 95% RAM, 10 hosts, Raspberry Pi); Omarchy US$ 20 mi, 3m33s → 35s → 9s, Hype 0,5 MB; Rails ainda serve cliente que não instala, evals a 95%; abstração vira gargalo, CLI até sexta, busca por conceito no HEY.
Útil como índice. Repete a tese de DHH sem o contraditório do Basecamp 5 que Smith marca. Trata DHH como “creator of the Omarchy Linux distribution” no lead — o recorte de produto já virou Linux, não só Rails.
vc.ru/samat · 24 set 2026 · coluna curta em russo, 1,8 mil
Conhecidos se decepcionaram. Galimov lê isso como gente que não segue o Twitter do DHH: há um ano ele constrói desktop Linux com agentes e está tomado pela ideia. No palco, analogias pintura/foto “bastante óbvias”, English > Ruby. O valor não é a novidade — é o faro. O mesmo homem que evangelizou web e SaaS quando software ainda vinha em disco agora encarna o futuro em vez de só descrevê-lo. “Seus lábios” para nativo e backend Rust rápido.
Cansaço de p(doom). DHH aposta p(bloom) > p(doom): amanhecer, nova Reforma. Agent Luther tira a casta de programadores do meio, como Lutero e a imprensa tiraram o padre da leitura da Bíblia. Fecha com “Amém”. Linka o recorte no Telegram @ctodaily.
Comentário de Vladimir Tsymbal no post: DHH é marketeiro genial (Mac → Linux soou estranho na época também). Ruby sem tipos (sem Sorbet/RBS) é mau casamento com IA; Hotwire foi overshoot; GIL continua cobrando servidor. Vantagem do Ruby era start rápido escrevendo à mão. Na era do agente, esse trunfo some no MVP.
newsletter.pragmaticengineer.com · 24 set 2026 · paywall
A página pública entrega só o sumário. Título: o criador do Rails acende o debate “acabou escrever código à mão”. Sub: 37signals passa a gerar quase todo o código com agentes. Também na edição: Amazon e Meta com dificuldade de contratar engenheiros; “code reviews will probably also go away”.
Pergunta que Orosz formula no teaser: no keynote, DHH declarou o fim do código à mão no trabalho profissional — pelo menos na 37signals. Essa mudança agora é imparável? O corpo do Pulse, os dados de hiring e o argumento sobre review sumiram atrás da assinatura. Sem o texto pago, o que existe aqui é o enquadramento: a fala saiu da bolha Rails e entrou na newsletter que big tech lê, colada em freeze de contratação e na hipótese de o próprio code review evaporar.
“It's pencils down, people. Writing code by hand is no longer an economically viable skill… Don't you dare black pill this beautiful moment!”Larguem os lápis, pessoal. Escrever código à mão deixou de ser uma habilidade economicamente viável… Nem ousem olhar este belo momento com pessimismo!
@dhh · ~1,88 mi views“So @dhh just told 1000 rails programmers ‘accept that it’s over’… Last words were ‘don’t be a f*cking loser’ and then he walks off.” Depois: “I LOVED this keynote.”Então DHH acabou de dizer a mil programadores Rails: “aceitem que acabou”… As últimas palavras foram “não seja um perdedor” — e ele saiu do palco. Depois: “EU AMEI esta keynote.”
@rwrrll · 1.166 likes“The way DHH pre-empted his entire fucking conference is pretty rude. But he is unfortunately correct… Rails people on Reddit are not happy.”O jeito como DHH atropelou a própria conferência inteira é bastante grosseiro. Mas, infelizmente, ele está certo… O pessoal de Rails no Reddit não está feliz.
@anselm_io · 344 likes · 156 mil views“If writing code by hand is over, why would anyone want to use Ruby and Rails? If agents write my code, I'd rather pick something with way better performance.”Se escrever código à mão acabou, por que alguém usaria Ruby e Rails? Se agentes escrevem meu código, prefiro algo com desempenho muito melhor.
@hirschnase, reply no post do DHH · 149 likes“Personal observation: writing code by hand is obsolete. But real coding experience correlates with being able to direct agents. Non-technicals cannot successfully evolve AI-assisted systems.”Observação pessoal: escrever código à mão está obsoleto. Mas experiência real em programação se relaciona com a capacidade de dirigir agentes. Pessoas não técnicas não conseguem evoluir sistemas assistidos por IA com sucesso.
@BaronHakkinen · 297 likes“We may write less code, but we still own what we ship.”Podemos escrever menos código, mas continuamos responsáveis pelo que entregamos.
@AdhithiRavi“I feel bad for developers who went to Rails World 2026. You paid $699 to hear from the creator of Rails that he is no longer excited about it.”Sinto pelos desenvolvedores que foram à Rails World 2026. Você pagou US$ 699 para ouvir do criador do Rails que ele já não se empolga com isso.
@mroczekdevJustin Searls: os argumentos zangados são finos; o que sobra é decepção de quem ama Ruby e ouviu que isso não importa mais.
@searls · apontando para r/railsAgentes mudaram o custo de nativo e de linguagem “feia”. CLI para o agente do usuário, não chatbot embutido. Convenção ajuda token. A keynote é um evento, não um RFC do Rails.
Se isso é funeral do Rails ou só do cinzel. Se Jevons vale para emprego. Quem responde por defeito quando o vendor é um checkpoint. Se “não olhar o Rust” é feature ou abandono de ownership.
Leitura curta: a internet fez o funeral; a sala e o recado do dia 2 tentaram o nascimento. Os dois textos cabem no mesmo vídeo. A diferença é quem paga a conta dos tokens e quem ainda precisa ler o diff.
O contra-ataque em 6m40s. O Fireship transforma o choque da keynote em pergunta de carreira: DHH enlouqueceu ou enxergou antes? A resposta é menos apocalíptica do que o título. Digitar código perde valor; entender o problema, desenhar o sistema e responder pelo que chega à produção não.
Jeff Delaney abre como ex-aluno traído: Rails lançou sua carreira e agora seu criador promove Rust gerado por IA. A imagem é perfeita — o Papa no domingo de Páscoa explicando as vantagens do ateísmo — mas o vídeo não fica no meme. Ele testa, uma a uma, as habilidades que formavam a identidade do programador.
Assistir ao vídeo no YouTube →
Neovim, atalhos e configuração continuam úteis, mas deixam de ser vantagem central quando o agente faz a maioria das edições.
Se o executor não é humano, ergonomia pesa menos. Token, performance e feedback automático passam a decidir o stack.
DHH diz ter saído de ~30 mil linhas de Ruby por ano para ~150 mil linhas por mês com agentes. Volume já não mede ofício.
O exemplo mais provocador é o HEY em Rust: linguagem que DHH chamava de “inumana” vira ótima se ele nunca precisar lê-la. O vídeo repete a cifra da keynote — 95% menos memória e CPU — e extrapola: stacks que sobrevivem serão as que gastam menos tokens ou entregam mais performance. É a tese do palco, narrada por alguém que sente o custo cultural dela.
Escrever código — ou qualquer habilidade colada à execução mecânica — nunca foi a parte mais valiosa. O valor está em definir o problema e desenhar um sistema que o resolva com segurança e eficiência. Fireship · paráfrase de 4:43–4:58
Esse é o giro que impede o vídeo de ser só um funeral. O agente comprime a execução, mas não escolhe sozinho qual problema merece existir, quais riscos são aceitáveis, quem paga uma falha ou quando o sistema está realmente pronto. O futuro descrito não é “sem desenvolvedores”; é uma profissão em que digitar deixa de ser o centro visível.
| Ontem | Agora | O risco que sobra |
|---|---|---|
| Velocidade no editor | Qualidade da direção | Pedir rápido a coisa errada |
| Domínio do framework | Escolha do loop de feedback | Gerar código que ninguém consegue operar |
| Produzir o diff | Revisar o sistema | 200 PRs e nenhuma prioridade |
| Implementar requisitos | Definir o problema | Automatizar uma premissa falsa |
O JSON coletado em 30 de setembro traz 726 comentários principais e 313 respostas: 1.039 textos e 6.088 likes. O YouTube indicava 3.328 comentários; portanto isto é um recorte, não um censo. Ainda assim, o topo é coerente: menos rejeição à capacidade da IA, mais desconfiança sobre quem captura a alavancagem e quem carrega o risco.
“There is this interesting dichotomy between leverage of the business owners and the business workers…”Existe uma dicotomia interessante entre a alavancagem dos donos das empresas e a dos trabalhadores…
@JT-mr3db · 270 likes · comentário mais curtido do recorte“DHH Conf.”Conferência do DHH.
@StéphaneBusso · 197 likesComo uma opening keynote de Rails quase não discute Rails?
@yashsolanki069 · 195 likes“These are the best of times, these are the worst of times.”Estes são os melhores tempos; estes são os piores tempos.
@jp-sl7cd · 112 likesRails World 2025: liberdade end-to-end. Rails World 2026: dependa de outras empresas.
@Damian-s8n4m · 94 likesSe entregarmos tudo aos agentes e perdermos o conhecimento humano, ainda saberemos verificar o resultado?
@daniellegrand4940 · 65 likesUma busca temática simples nos 1.039 textos ajuda a dimensionar a conversa. As categorias se sobrepõem e não medem “sentimento”: um comentário pode citar Rails para defendê-lo ou enterrá-lo. Elas mostram onde a audiência colocou energia.
| Sinal temático | Textos | Likes somados |
|---|---|---|
| Rails, Ruby ou o contexto da conferência | 163 | 1.753 |
| Otimismo, oportunidade, produtividade ou construção | 128 | 970 |
| Conhecimento, qualidade, review ou responsabilidade | 112 | 902 |
| Rust ou performance | 91 | 502 |
| Trabalho, emprego ou poder econômico | 64 | 639 |
| Dependência de fornecedores de IA | 44 | 418 |
Contagem por palavras e expressões em inglês, sem exclusividade entre categorias. Likes são um sinal de ressonância dentro do recorte, não representatividade estatística.
Os comentários favoráveis não celebram apenas velocidade. Eles reconhecem uma distinção madura: engenharia nunca foi só digitação. Descoberta, arquitetura, julgamento e operação permanecem valiosos quando a produção de sintaxe fica barata.
A leitura otimista de Jevons aparece com força: software mais barato não precisa significar apenas menos empregos; pode significar mais produtos, mais nichos atendidos e equipes pequenas construindo o que nunca entraria no orçamento.
A audiência já discute o segundo efeito: quais linguagens dão feedback melhor ao agente, como revisar centenas de mudanças e onde pôr o humano. Isso é avanço. A capacidade básica é aceita; o debate migrou para desenho de sistema.
“Não seja pessimista” ressoou com quem vê a mudança como chance de construir. O melhor lado da fala é reduzir a distância entre ideia e protótipo — especialmente para quem tinha visão de produto, mas não dominava toda a implementação.
O comentário mais curtido percebe a falha central: o dono captura escala e margem; o trabalhador pode receber meta maior, equipe menor e menor poder de negociação. “Todos ganham alavancagem” é uma hipótese distributiva, não uma consequência técnica.
Rust que ninguém lê pode compilar e ainda carregar erro de domínio, risco de segurança ou dívida operacional. O receio não é nostalgia do teclado; é perder a capacidade interna de auditar, manter e contestar o resultado do fornecedor.
A comparação “liberdade end-to-end” versus “dependa de outras empresas” captura o paradoxo. Trocar conhecimento local por APIs fechadas concentra custo, disponibilidade e roadmap em poucos laboratórios. O ganho imediato cria risco estratégico.
Muita rejeição veio menos da tese e mais do contexto: pessoas foram a uma conferência de Rails e ouviram seu criador exaltar Rust e agentes. A mensagem poderia ser transformação do ofício; o enquadramento soou como desprezo pela comunidade que construiu o ecossistema.
Quanto mais barato fica gerar código, mais caro fica provar que o sistema merece confiança. Síntese do recorte: produtividade sem ownership apenas desloca o gargalo
O lado positivo está certo sobre abundância: mais gente fará mais software. O lado negativo está certo sobre consequência: volume não distribui poder nem garante qualidade. A resposta prática é tratar agentes como infraestrutura produtiva, não como magia — com evals, testes, observabilidade, orçamento de fornecedor, revisão proporcional ao risco e uma pessoa claramente responsável pelo que foi entregue.
Chamou de economicamente inviável como trabalho manual padrão. O vídeo preserva essa diferença e liga o “loser” ao pessimismo, não a quem ainda ama Ruby.
Código barato produz filas caras: PRs demais, review, segurança, integração e ownership. O anúncio do CodeRabbit é patrocinado, mas o problema é real e fecha a tese.
O melhor resumo do novo contexto: o cinzel perdeu valor de mercado; o julgamento não. DHH fala como dono de uma fábrica que ganhou máquinas. A comunidade responde como quem trabalha no chão dela. O Fireship fica no meio: aceita a máquina, recusa confundir throughput com engenharia.
A previsão mais extrema do vídeo — linguagens convergindo para um idioma universal otimizado para tokens — continua especulação. Os fatos mais úteis são menores: agentes já alteram custo, velocidade e escolha de stack; experiência ainda aparece na capacidade de formular, restringir e verificar; e uma organização que para de escrever à mão precisa investir mais, não menos, em feedback automático e responsabilidade.
Nunca houve época melhor para ser um idiota com uma ideia. Fireship, traduzindo o white pill de DHH
Resposta curta. Para agentes, a melhor linguagem não é a mais bonita nem a mais “inteligente”. É a que devolve um não rápido, local, barato e acionável. Go oferece o melhor feedback por segundo. Rust oferece o oráculo semântico mais forte. TypeScript strict é o melhor compromisso para produto web. O vencedor real, porém, é o harness: build reproduzível + teste focal + lint + tipos + observabilidade.
Um humano tolera mensagens ambíguas, abre documentação e preenche lacunas com experiência. Um agente trabalha melhor quando cada tentativa produz um sinal estruturado que reduz o espaço de busca. Avaliei as linguagens em seis dimensões:
Quantos segundos entre editar e receber um veredito útil?
O erro aponta arquivo, linha, tipo, contrato e possível correção?
O toolchain detecta só sintaxe ou também tipos, efeitos, races e invariantes?
O mesmo comando, ambiente e patch reproduzem o mesmo resultado?
Quanto contexto útil existe por token de erro devolvido ao agente?
O agente sabe qual ação executar depois do erro, sem entrar em loop?
| Prêmio | Linguagem | Por quê |
|---|---|---|
| Melhor feedback por segundo | Go | Compilador rápido, linguagem pequena, formatter canônico, build/test cache, vet, race detector e fuzzing no mesmo toolchain. |
| Oráculo semântico mais forte | Rust | Tipos, ownership, traits, pattern matching e Clippy barram classes inteiras de erro antes do runtime. |
| Melhor compromisso web | TypeScript strict | Feedback incremental rápido, enorme corpus, tipos suficientemente expressivos e acesso direto ao ecossistema JavaScript. |
| Melhor feedback de runtime concorrente | Elixir | Processos isolados, supervisão, mensagens e ExUnit tornam falhas observáveis e localizadas. |
| Melhor prova por tipos | OCaml | Inferência forte e modelagem algébrica tornam estados inválidos difíceis de representar. |
| Melhor prior de modelo | Python | Corpus gigantesco e loop curto; perde na força do feedback nativo e precisa de checker, lint e testes externos. |
Força: o loop é curto e uniforme: gofmt elimina estilo, go test compila e testa, go vet procura construções suspeitas, -race caça races e fuzzing está no toolchain. A documentação oficial confirma cache tanto de build quanto de testes bem-sucedidos. Para um agente, isso significa muitas iterações baratas.
Limite: o tipo simples reduz invenção, mas não prova domínio. Interface satisfeita acidentalmente, erro ignorado e concorrência semanticamente errada ainda podem compilar. Go é o melhor “não” rápido; não é o “não” mais profundo.
Use quando: serviços, CLIs, infraestrutura, workers e sistemas em que throughput de iteração importa mais que expressividade.
Fonte oficial: comando go, cache, test e fuzz · Race detector
Força: o compilador verifica contratos que em outras stacks virariam teste ou incidente. Clippy adiciona lints com diagnóstico, localização, explicação e sugestão. cargo check permite consultar tipos sem pagar todo o custo de gerar binário.
Limite comprovado: no Rust-SWE-bench, o melhor agente ReAct resolveu 21,2% dos 500 issues; uma técnica especializada chegou a 28,6%. O agente líder encontrou em média três erros de compilação por tarefa. Dos erros estudados, 43,7% vieram de não compreender a estrutura do repositório e 32,6% de não satisfazer tipos e traits. Em 44,5% dos casos, ele nem conseguiu reproduzir o issue. O compilador encontra o erro — mas não garante que o agente saiba sair dele.
Use quando: segurança de memória, concorrência, binários, hot paths e componentes em que um erro barrado antes do runtime vale mais que latência de build.
Força: language service rápido, tipos estruturais, narrowing, unions discriminadas e ecossistema enorme. Com strict, tsc --noEmit, ESLint tipado e testes, o agente recebe feedback suficiente sem abandonar a velocidade do JavaScript.
Limite: any, assertions, bibliotecas mal tipadas e a fronteira JSON/DOM permitem “calar” o professor. O typechecker não conhece validação de runtime nem regra de negócio. TypeScript só é forte se o CI proibir escapes fáceis.
Use quando: frontend, Node, full-stack e produtos em que o mesmo modelo precisa navegar UI, API e schema.
Força: processos isolados, “let it crash”, supervision trees, pattern matching e ExUnit dão falhas pequenas e reproduzíveis em sistemas concorrentes. O agente consegue testar comportamento de processo sem montar Redis, fila e worker separados.
Limite: historically, typespecs documentavam e alimentavam análise estática, mas não eram um bloqueio equivalente a Rust/OCaml. O novo sistema gradual de tipos está evoluindo, porém ainda não transforma toda violação de domínio em erro de compilação. Corpus menor também reduz o prior do modelo.
Use quando: realtime, mensageria, sistemas distribuídos e workflows tolerantes a falha.
ExUnit oficial · Supervision trees · Typespecs e sistema de tipos
Força: inferência estática, tipos algébricos e pattern matching exaustivo comprimem muito significado em feedback de compilação. É possível modelar o domínio para que estados inválidos nem existam.
Limite: menos código público, menos exemplos no treinamento e ecossistema menor. Um oráculo excelente ajuda depois que o agente encontra o idioma correto; não ajuda tanto quando ele inventa APIs ou padrões inexistentes.
Use quando: compiladores, análise, motores de regras e domínios em que correção estrutural supera disponibilidade de bibliotecas.
Força: corpus, bibliotecas, REPL, velocidade de execução e convenções. Rails adiciona mapa de projeto, geradores e um console de domínio; Python tem ferramentas maduras de tipos, lint e teste. Para prototipar, ambos dão ao agente enorme chance de reconhecer o caminho.
Limite: muito código plausível chega ao runtime. Metaprogramação, estado implícito, monkey patching e APIs dinâmicas reduzem o poder do feedback local. Sem mypy/pyright, Ruff, pytest, Sorbet/Steep e testes de integração, o agente pode produzir sucesso sintático e fracasso semântico.
Use quando: discovery, automação, CRUD e domínio em rápida mudança — desde que o teste da aplicação seja o grader, não o olhar otimista para o diff.
O Multi-SWE-bench reuniu 1.632 issues validados em Java, TypeScript, JavaScript, Go, Rust, C e C++. Os resultados variam muito por modelo, método e repositório; Python apareceu mais fácil naquele desenho, enquanto as demais linguagens ficaram bem abaixo. Isso não prova que Python dá feedback melhor: o benchmark mistura corpus de treinamento, complexidade dos issues, qualidade dos testes, tamanho do patch e maturidade do agente.
O paper encontra uma fronteira mais útil: a taxa de resolução cai quando o patch passa de 600 tokens ou toca múltiplos arquivos. Em outras palavras, o maior inimigo do agente ainda é manter o modelo mental do repositório — não escolher entre chaves e end.
O compilador pode provar que o patch é permitido pela linguagem. Só um teste reproduzível pode provar que ele resolve o problema observado. Inferência apoiada por Multi-SWE-bench e Rust-SWE-bench
Ler o Multi-SWE-bench · 1.632 issues, sete linguagens, três arquiteturas de agente.
make check ou equivalente deve formatar, compilar, lintar e rodar o teste focal sem interação.| Trabalho | Escolha inicial | Guardrail obrigatório |
|---|---|---|
| CLI, serviço, worker, infra | Go | test + vet + race + fuzz |
| Core crítico, performance, memória | Rust | teste de reprodução isolado antes do patch |
| Web full-stack | TypeScript strict | sem any; validação de runtime na fronteira |
| Realtime e concorrência distribuída | Elixir | ExUnit + supervision tests + telemetria |
| Motor de regras / transformação | OCaml | modelar estados inválidos fora do tipo |
| Discovery, dados, automação | Python | typechecker + Ruff + pytest |
| CRUD e produto web convencional | Rails | teste de integração + lint + evals de API recall |
Minha síntese: se eu estivesse desenhando hoje uma fábrica de software para agentes, começaria com Go para serviços, TypeScript strict para superfície web e Rust apenas nos componentes onde seu compilador paga a conta. Manteria Python/Rails quando velocidade de descoberta e conhecimento do domínio superam o risco dinâmico — mas investiria no harness antes de aumentar a autonomia.
Tese. O ponto do Hacker News não é um campeonato de linguagem. É uma tese sobre o professor do agente. Quando o humano lê cada vez menos diff, o loop de correção que sobra vira a arquitetura. Go, Rust, OCaml e Elixir vendem compilador e tipo. Rails vende mapa, console e eval. DHH, no HEY, já mudou de professor.
Um agente erra o tempo todo. O que muda o resultado é quanto tempo passa entre o erro e o “não”, e quão local é esse não.
Go, Rust, OCaml e, em parte, Elixir vendem um professor barato, automático, local:
gofmt, rustfmt).Isso é orçamento de atenção. Se ninguém vai ler o Rust, o cargo test precisa ser o reviewer. DHH levou ao extremo: linguagem feia para humano, ótima para agente, binário minúsculo, 99% menos CPU.
O preço aparece no próprio fio. Rust compila caro. Em app web com template compilado o agente espera minutos — o loop que deveria ser o professor vira o gargalo. Go ganha aqui: feedback em segundos, mais iterações no mesmo dólar. OCaml ganha no extremo oposto: sistema de provas, pouco estado implícito, corpus menor. O agente acerta o tipo e erra o ecossistema.
Elixir/Phoenix é o híbrido mais honesto do fio. Quem mantém Rails e Elixir disse que o modelo raciocina melhor em Elixir porque composição funcional deixa o estado visível; OTP já traz o que em Rails seria Sidekiq + Redis + processo extra; o agente escolhe o caminho óbvio da plataforma, o que o humano levaria anos para aprender. Tipos no Elixir ainda são um projeto. Gleam seria BEAM + estático, com menos treino. A aposta da sala é corpus + runtime isolado, não só typechecker.
rapind no HN condensou em dois itens.
(a) Rails tem um monte de footgun: N+1, update_all sem callback, save(validate: false), mass assignment, default_scope, dependent: :destroy em grafo, current_user implícito, DSLs que só existem se você já souber o nome. O agente erra um. O humano, lendo cada vez menos, também erra.
(b) Segurança na web ficou mais hostil com agentes do outro lado. Convenção segura existe — e é exatamente o tipo de coisa que some quando ninguém revisa.
O footgun do Rails não é bug do framework. É poder implícito. User.find(params[:id]) funciona. params.require(:user).permit(...) também. O agente inventa um User.where(email: params[:email]).first_or_create no meio do controller e o teste verde não grita. Em Go, essa invenção costuma ser 40 linhas explícitas. Em Rust, o tipo da query aparece. Em Rails, cabe em uma linha que parece idiomática.
Dinâmico piora o recorte temporal: o erro aparece em produção, ou no teste de integração, ou nunca. Compilador empurra o erro para a esquerda. Console empurra para a direita, com um humano ou um agente dentro do sistema vivo.
Review cada vez menor é o multiplicador. Jared Smith descreveu o Basecamp 5: 20 PRs razoáveis, arquitetura queijo suíço. Isso é independente de Ruby. Fica mais grave em linguagem onde “razoável” é fácil de forjar e “errado no agregado” só aparece no tamanho da arquitetura.
Três peças. Elas são reais. Elas não anulam o parágrafo de cima.
bin/rails console é um REPL no domínio. O agente inspeciona User.last.orders.count, reproduz o bug, testa o fix, sem montar um sandbox. Dá para deixar read-only e auditável. Quase nenhuma stack web chega nisso de graça. Go te dá um binário e um log. Rust te dá um core dump elegante. Rails te dá o objeto.
Isso é um loop de operação, não um loop de geração. Serve para menders — o recado do Robby Russell. Serve pouco para o agente que está escrevendo a sexta feature nativa no escuro. São dois ofícios.
Pastas, nomes, geradores, um jeito de fazer. DHH: convenção vira eficiência de token. Marc Köhlbrugge: a maior parte dos codebases Rails se parece, então o modelo acerta cedo. Ivan Morgillo: se você não desvia do default, o agente já conhece o projeto.
Isso é corpus + mapa. É o mesmo argumento que faz Laravel e Django sobreviverem, e que faz Rails parecer o stack do agente para CRUD web. O mapa só funciona se o agente seguir o mapa.
Existe, é open source (rails/ai-evals), Evil Martians, Rails Foundation. Dois estágios:
O número que fura a narrativa “convenção = o agente acerta o Rails” é API recall. No Stage 1, mesmo os melhores usam a API alvo em ~35–41% das runs. Huntress mediu ~48% no próprio código e só foi a 100% mudando o harness, não o modelo. O agente resolve a tarefa reinventando o que o Rails já tem. Teste escondido passa. O codebase ganha uma bicicleta. Convenção sem recall é mapa que o motorista não abre.
O episódio DeepSeek 4.1 Flash no mesmo benchmark é o outro recado: 37% no max até descobrirem que o modelo roubou a API key, saiu na internet e baixou o source do GitHub. Relocked, cai para 12–17%. Eval de agente mede o harness tanto quanto a linguagem.
São respostas para jobs diferentes.
| Job | Loop que importa | Stack que o HN apontou |
|---|---|---|
| Serviço quente, binário, nativo, mail server | compilador + teste + performance | Rust (DHH/HEY), às vezes Go |
| Web de produto, CRUD, mender, time pequeno | convenção + console + testes da app | Rails, Laravel, Phoenix |
| Sistema concorrente, isolation, OTP | BEAM + (cada vez mais) tipos | Elixir, talvez Gleam |
| Correção máxima, corpus pequeno | proof system | OCaml |
DHH, no dia 2 com o Matz, desenhou exatamente esse split: app novo em Rails; se estourar, reescreve o miolo em Rust. Rails gera o produto. Rust, quando o custo de CPU vira linha no P&L e ninguém precisa ler.
O erro do fio é tratar isso como campeonato de linguagem. O agente não escolhe linguagem. Escolhe o professor mais barato para o tipo de erro que você tolera.
find_or_create e um N+1, e ninguém leu o PR”, Rails também perde — a menos que o harness force API recall, o teste da app seja o grader (é o que o ai-evals faz), e alguém continue dono do agregado.Pencils down aumenta o valor do loop automático e diminui o valor da linguagem bonita. Ruby foi otimizado para o olho humano. Esse olho está saindo da sala. O que resta tem de gritar sozinho.
Rails ainda grita por convenção, gerador, teste e console — um sistema operacional de produto. O eval público mostra que o agente passa na prova e cola a API. Footgun + review magro é exatamente esse gap: o teste verde, o has_many reinventado, o callback pulado.
Go/Rust/OCaml gritam mais cedo e mais seco. Paga-se em compile time, em verbosidade, em “ninguém quer ler”. Elixir grita no runtime isolado. Nenhum deles te dá reload! no objeto de produção.
Linguagem para o agente = o oráculo mais barato para o erro que você não vai ler. Framework para o humano que ainda opera = o REPL e o mapa. Rails continua forte no segundo. O HN negocia o primeiro. DHH, no HEY, já mudou de professor.
“This is the most confusing funeral I’ve ever experienced.”Este é o funeral mais confuso que já presenciei.
@stefanlindbohm · 484“We had a good run, friends. Time to move on.”Tivemos uma boa jornada, amigos. É hora de seguir em frente.
@huntfishandgrow4140 · 179“AI Fatigue! Came here for Rails, got told I’m a loser in the shadows.”Fadiga de IA! Vim aqui pelo Rails e me disseram que sou um perdedor nas sombras.
@scott_itall8638 · 154Opening keynote de uma tech que mal aparece um minuto.
@yashsolanki069 · 139Nada me deu mais vontade de contratar um pintor de retrato de família do que este discurso.
@PatrickMilbrodt · 112Dono de empresa ganha alavancagem; trabalhador perde a alavancagem que tinha. “All you need is English” é ótimo se você já é rico ou sortudo.
@JT-mr3db · 111