Matz, DHH e Jeremy Daer: o que significa ser rubista quando os agentes escrevem o código

Abrir no YouTube ↗
Resumo

Nesta conversa na Rails World 2026, Jeremy Daer, da 37signals, conduz Yukihiro "Matz" Matsumoto, criador do Ruby, e David Heinemeier Hansson (DHH), criador do Rails. A questão central é como moldar o futuro do Ruby e do Rails num momento em que a programação passa a ser feita, cada vez mais, por agentes de IA. DHH defende a aceitação rápida da mudança e mostra otimismo com o que vem depois. Matz também adota os agentes no dia a dia, mas insiste que alegria, motivação e liberdade continuam sendo o centro da questão, e se preocupa com a sustentabilidade do software de código aberto do qual tudo depende.

34 min de leitura
0:56

Uma conferência sobre IA e o pedido por previsões

Jeremy abre com uma piada: a conferência se chama Rails World, mas bastaria tirar o "R", o "L" e o "S" para sobrar "AI World", porque tudo girou em torno da IA. Ele lembra que a palestra de DHH no dia anterior deixou muitas perguntas em aberto e observa um paradoxo: é justamente quando o futuro está mais incerto que as pessoas mais pedem previsões e segurança. Por isso pergunta aos dois o que esperam para o fim deste ano e do próximo.

Matz diz que tudo mudou tão rápido nos últimos anos que não dá para saber para onde as coisas vão. Há dois anos, não imaginaria deixar de usar o Emacs como editor, embora ressalve que ainda o usa. Desde novembro passado, mais ou menos, todo o seu código é escrito num ambiente de programação na nuvem, e ele descreve essa mudança como desafiadora.

DHH concorda que não se trata de certezas, mas de probabilidades. A probabilidade que ele enxerga, como disse na véspera, é que até o fim do ano praticamente todas as pessoas, e não apenas a maioria, estarão programando como Matz: por meio de agentes. Para ele, essa sensação de incerteza é como uma grande onda diante da qual ninguém sabe onde se posicionar, e por isso há uma responsabilidade coletiva de a comunidade se unir e se ajudar.

Passando rápido pelas fases do luto

O primeiro passo, segundo DHH, é aceitar que isso está acontecendo. Nenhum dos presentes teria o poder de impedir a mudança, mesmo que quisesse. Ele compara o momento a passar rapidamente pelas fases do luto: muita gente já superou a raiva e está em alguma forma de negociação com o futuro. Isso não funciona, diz ele: "A IA vai te ouvir e te dar atenção, mas não vai mudar sua trajetória." Quanto mais rápido alguém atravessar a negociação e, com sorte, a depressão, e chegar à aceitação, melhor. Na visão dele, esse é o único caminho.

Do outro lado da aceitação, DHH descreve uma experiência que diz ter vivido, assim como muitas outras pessoas: o novo cenário é "incrível", divertido em todas as formas em que a programação sempre foi divertida. Continuamos fazendo as máquinas realizarem coisas novas e vendo ideias ganharem vida, só que muito mais rápido.

3:58

Quem ainda se sente rubista?

Jeremy aponta algo intrigante: as pessoas vivem essa euforia e, ao mesmo tempo, uma crise. Ele se sente programador Ruby e programador Rails, mas faz meses que não abre o Vim para escrever Ruby. Onde fica então sua identidade? Na véspera, DHH havia pedido que levantasse a mão quem ainda escreve código Ruby. Jeremy pede outra coisa: que levante a mão quem se sente um programador Ruby. A plateia responde em massa. A pergunta que fica é o que resta quando a identidade sobrevive à prática, quando alguém se chama de rubista sem escrever Ruby.

Matz responde com uma perspectiva histórica. Quando a tecnologia industrial avançou, há uns 80 anos, as pessoas temiam que as máquinas tomassem os empregos humanos, e surgiram filmes como "Tempos Modernos", de Chaplin. O que aconteceu, diz ele, foi diferente: a carga de trabalho na produção industrial diminuiu e hoje se trabalha de outro modo em relação a cem anos atrás. Algo parecido pode acontecer na próxima década, e a vida dos desenvolvedores provavelmente será diferente da atual. Mesmo assim, segundo Matz, ainda podemos escolher: tratar o desenvolvimento de software como atividade criativa e tranquila, em vez de nos vermos apenas expulsos de um setor bem remunerado. Para ele, agora é a hora de escolher o rumo, como nos sentimos e como nos comportamos em relação à IA.

6:47

De redator de software a criador de software

DHH retoma uma palestra antiga em que dizia não se ver como engenheiro de software. O rótulo lhe soava sério e rigoroso demais, e ele sempre se viu como um "redator de software". Para quem nunca se identificou com a ideia de engenharia, argumenta, fica mais fácil adotar o novo papel de "criador de software". É uma perspectiva mais ampla, com mais coisas a considerar e aprender do que o aperfeiçoamento da escrita de código à mão. Sua grande descoberta pessoal, diz ele, é que ser criador de software é mais gratificante do que ser só programador, embora tenha adorado ser programador.

Nesse ponto ele defende que a sensibilidade dos programadores Ruby está particularmente bem sintonizada com o momento. O valor humano no trabalho com agentes estaria no bom gosto, no senso de proporção e no senso de beleza, as mesmas coisas que sempre importaram a quem escreve Ruby. Abstraídas, essas qualidades formariam um bom criador de software e um bom condutor de agentes.

DHH também critica a parte do discurso online que trata a mudança como se ela atingisse só a comunidade Ruby. Para ele, a transformação vai alcançar todos os domínios, bibliotecas, frameworks e linguagens. Acha míope a conclusão de que "o Rust é a próxima grande novidade" e diz que não pretende virar programador Rust, porque esse papel já foi abstraído dele. O Rust seria apenas a ferramenta mais eficiente do momento. Se amanhã surgir algo melhor, ele troca sem sofrimento, já que não tem ego investido no Rust. DHH chega a especular que em breve talvez nem se use mais Rust: os agentes poderiam ir direto ao assembler, e a falta de portabilidade deixaria de importar, porque bastaria gerar o código de máquina de cada plataforma desejada. A conclusão dele é que não existem mais lados para onde mudar.

A ansiedade de quem ainda não sentiu a mudança

Jeremy observa que DHH tocou numa ansiedade fundamental. A energia da mudança está disponível lá fora, mas quem não a sente por dentro percebe um abismo entre o que se espera dele e o medo diante de algo que parece uma força da natureza. Ele compara a situação a ouvir que haverá uma demissão em massa e que basta "se requalificar" ou "aprender a programar". Quem sempre teve a sensibilidade de criador não encontra nada de novo, mas para quem está sendo convidado a adotá-la é uma disciplina inteiramente nova.

DHH concorda e diz que parte do processo exige simplesmente que o tempo trabalhe o ego. É para isso que existe a ideia dos cinco estágios do luto: explicar que não é algo instantâneo. Para ele também não foi, embora talvez tenha passado pelas fases mais rápido que a maioria. Deve haver espaço para a nostalgia de algo de que se gostava antes de migrar para algo que talvez se goste mais, ou não. Cada mudança de paradigma na computação deixou gente desejando que ela não tivesse acontecido, como a internet e a era dos celulares, e sempre houve quem preferisse ficar na estação. Haverá espaço para isso também, diz DHH.

Jeremy acrescenta uma reflexão pessoal: começou a usar Ruby sem nenhum interesse no valor econômico da linguagem, apenas porque era divertida. Se as pessoas deixarem de ser recompensadas economicamente por certo talento, para onde elas vão? E se esse reconhecimento nunca tivesse sido necessário? Talvez, sugere ele, o Ruby esteja voltando à sua forma natural.

12:24

Spinel: compilar Ruby para binários nativos

Matz diz que, ao contrário de DHH, tem um enorme apego ao Ruby, do qual depende a sua vida inteira. Em tom de brincadeira, afirma ser parcialmente responsável pelo aquecimento global, porque o Ruby consome muita energia. Do ponto de vista puramente econômico e financeiro, reconhece, o Ruby não é a melhor opção na era da IA. Por outro lado, existe uma enorme inércia em torno da gigantesca base de código Ruby e Rails.

Por isso, neste ano ele começou a trabalhar no Spinel, um compilador alternativo que transforma programas Ruby em binários nativos. Segundo Matz, o resultado roda com rapidez impressionante e consome muito menos memória. Nos testes que relata, um programa realista rodou com cerca de 1/20 da memória. Ao dar um exemplo, ele primeiro diz que uma aplicação Rails de 100 MB passaria a consumir 20 MB e depois se corrige para algo em torno de 5,5 MB. Matz ressalta que só começou o Spinel em março, que o projeto "ainda é um bebê", mas que tem muito potencial. Ele imagina que um agente possa voltar a escolher Ruby e compilá-lo para binário nativo na hora de criar um backend.

Jeremy lembra que Matz carrega a ideia do Spinel há muitos anos e trabalha há muito tempo no mruby. Cada um desses projetos responde a uma pergunta diferente: o que o Ruby tem a oferecer a um ambiente embarcado, o que tem a oferecer aos seres humanos e, agora com o Spinel, o que tem a oferecer aos agentes. Daí a pergunta: o que faz do Ruby o Ruby? Se alguns elementos forem retirados, ele continua sendo Ruby?

Matz admite que isso não é muito claro. Ele chegou ao CRuby, usado por quase todo mundo, por tentativa e erro na definição do que é e do que não é Ruby. Mas não existe solução única: há quem prefira o JRuby em aplicações corporativas, o CRuby é grande demais para microdispositivos embarcados, e o próprio Ruby pode ser lento demais para certos usos, mesmo com o compilador JIT disponibilizado recentemente. Um subconjunto da linguagem voltado para desempenho pode ser compilado em binário nativo. E, pelo menos por enquanto, diz Matz, só ele pode traçar a linha entre o que é e o que não é Ruby.

16:38

Roundhouse, criadores de soluções e motivação

Jeremy menciona o Roundhouse, descrito por ele como uma forma de tratar uma aplicação Ruby on Rails como um "oráculo de conformidade" que um agente consulta como especificação para gerar Ruby puro sem Rails, ou até outras linguagens. A pergunta é se o Ruby continua presente como andaime, se isso é uma forma de preservá-lo ou se é apenas um passo, depois do qual a aplicação Ruby fica para trás.

Matz responde de forma mais ampla. As pessoas são diferentes e a criação de software tem muitos aspectos. Ele prevê que a maioria vai se concentrar na direção do produto e na sua relação com o mercado, enquanto algumas continuarão motivadas pela programação em si. Esta última, pelo menos como carreira, seria tirada de nós num futuro bem próximo. Ao mesmo tempo, isso nos obriga a focar em resolver problemas. Se antes faltava capacidade, habilidade ou experiência para criar uma solução, agora os agentes permitem chegar a ela mesmo sem conhecimento suficiente.

Ainda assim, observa Matz, nem todo mundo vai criar soluções. A maioria dos seres humanos está apenas esperando por elas, e quem as fornece acaba sendo uma espécie de "escolhido", como as pessoas daquela sala. A única coisa a fazer seria aprimorar essa capacidade e oferecer soluções à humanidade, o que importa mais do que o foco em tecnologias específicas, concordando nisso com DHH. Mesmo assim, ele insiste, Ruby é uma linguagem agradável, preferida por muita gente, e motiva as pessoas. E, mesmo na era da IA, a motivação seria o recurso mais importante que os humanos podem oferecer, algo que só eles podem oferecer.

Ruby como linguagem para explicar conceitos

Na sequência, um dos participantes lembra como conheceu o Ruby: por artigos na revista da IEEE, escritos por Dave Thomas e outros autores, que explicavam conceitos usando Ruby. Ele achava que aquilo era pseudocódigo, e não algo executável. A partir disso, argumenta que, num cenário em que não escreveremos a maior parte das linhas de código, ainda vamos querer entender algoritmos de vez em quando, e o Ruby seria a melhor linguagem para explicar conceitos. Ter um agente que explica em Ruby um código escrito em Rust pareceria um "retorno à forma" notável.

20:09

Além do "bolo fixo"

DHH afirma que muita gente não consegue pensar além de um "bolo fixo", e que parte da ansiedade vem daí. As pessoas imaginam que o futuro terá o mesmo número de aplicativos de hoje e concluem que serão necessários muito menos programadores para fazê-los. Isso será verdade, reconhece DHH: os aplicativos que existem hoje vão exigir muito menos gente para mantê-los e desenvolvê-los. Mas vamos criar mais software. Para ele, toda a exuberância do momento está nisso, e cada estatística do GitHub, assim como o fato de o site "ficar fora do ar a cada 5 minutos", refletiria essa explosão. Haverá muito mais aplicativos para cuidar e será preciso gente para isso, daí seu otimismo com os programadores que aceitarem o novo papel. Mas isso não vai acontecer, diz ele, se a pessoa se agarrar tanto ao lápis que não consiga imaginar que a calculadora possa ajudá-la.

22:40

A ironia da Programação Extrema e o "vibe coding" organizado

Jeremy relembra o início dos anos 2000 e a ascensão da Programação Extrema. Naquela época, valia muito a pena ter uma linguagem fluente, porque o custo de execução era insignificante perto do custo de desenvolvimento, e alterar especificações, trabalhar em ciclos ágeis e adotar o desenvolvimento orientado a testes compensava. Ele vê agora uma ironia: os artefatos do trabalho voltam a ser Markdown e especificações, justamente o que existia antes da XP e foi abandonado por causa dos ciclos longos e do alto custo, custos que hoje são praticamente zero. Estaríamos voltando ao "grande projeto inicial" e à cascata?

Matz diz não saber, mas acha que a metodologia específica importa menos hoje, porque a estrutura do código perde importância quando ninguém mais mexe nele diretamente. O que precisamos formalizar e aprender nos próximos anos é como construir uma visão do software: definir qual é o problema e qual deve ser a solução, e depois conduzir a IA para construí-la.

Ele cita as histórias de fracasso do "vibe coding": funciona para jogos como Tetris, mas muitas tentativas de criar aplicativos realistas fracassaram. Em contraste, as pessoas ao seu redor, como os committers do Ruby, têm uma taxa de sucesso surpreendentemente alta ao programar com essas ferramentas. Para Matz, isso indica que programadores experientes sabem conduzir a criação de software e definir metas para os agentes, e esse conhecimento precisa ser formalizado e ensinado às próximas gerações.

Em tom bem-humorado, Matz se declara líder do vibe coding há 15 anos. Como líder da equipe central do Ruby, ele pergunta aos committers "que tal implementarmos este recurso?" ou "que tal melhorar o coletor de lixo assim?", e a "inteligência orgânica" produz o código, que ele testa, analisa e integra. É assim que já trabalha, diz, e agora todos têm colaboradores desse tipo ao redor.

DHH chama isso de promoção. Às vezes somos promovidos a um cargo que não queremos, mas essa promoção, "se você der cinco minutos a ela", seria imensamente gratificante. Ele diz ter vivido o mesmo que Matz com o Rails: escreveu sozinho a primeira versão, talvez metade da segunda, e quase nada nas versões 6 e 7. Seu papel passou a ser só orientar: para onde ir, o que é bom, o que está na moda e o que saiu de moda. É esse papel que agora estaria ao alcance de todos.

O dilema do inovador e o "não escala"

DHH recorre ao dilema do inovador: a nova tecnologia parece primeiro um brinquedo que só resolve coisas simples, e as empresas estabelecidas, com os grandes clientes, a ignoram. Quem acompanhou a ascensão do Ruby lembra da crítica "não é escalável". Segundo ele, é o que se diz hoje da IA, e com o mesmo erro cometido com Ruby e Rails no começo. Para DHH, o vibe coding não só funciona e produz ótimos resultados como evolui num ritmo "astronômico", e o que hoje não escala vai escalar "daqui a 5 minutos". Por isso, é preciso tomar cuidado para não repetir a postura dos gigantes estagnados e não menosprezar a novidade só porque, por um breve momento, ela não faz o que se quer.

29:20

"Slop", "granadas de slop" e o proxy de carne

Jeremy pergunta sobre o desprezo à IA, visível em termos como "slop" (porcaria) e "proxy de carne" (o humano servindo de intermediário). Até que ponto essas expressões, muitas vezes sugestivas e em parte verdadeiras, são diagnósticos reais, e até que ponto são mecanismos de enfrentamento? DHH responde de imediato: 90% seria enfrentamento. Logo depois ressalva que detesta fazer previsões, que não é bom nisso, e que por isso fala em probabilidades. Para ele, o provável é que seja uma muleta, e quanto antes a pessoa largá-la, antes poderá correr.

Sobre o "proxy de carne", DHH reconhece que, enquanto descobrimos a melhor forma de usar esses sistemas, adotamos práticas subótimas. Quem passa o tempo copiando e colando mensagens de erro entre agentes deveria deixar o agente lê-las diretamente, em vez de atuar como proxy humano, papel que ele chama de insatisfatório e ineficaz. É uma "tábua temporária" para ir de A a B, algo precário que se aceita por um tempo, mas a ambição deve ser mais alta.

Já o "slop" ele considera uma desculpa "da pior espécie". A ideia de que os agentes não conseguem escrever código original, de alta qualidade e sem bugs seria hoje ilusória, muito mais próxima de uma "psicose de IA" do que o otimismo sobre o que ela pode fazer. É, nas palavras dele, enfiar a cabeça na areia, e o termo deveria ser aposentado.

Jeremy defende a expressão "granada de slop", porque ela capta algo além do "slop": a forma como o material é jogado na cara de alguém sem ter sido levado até o fim. Seria como receber um comunicado de imprensa mal pensado e ter de gastar atenção para entendê-lo e decidir se vale a pena.

DHH diz não se incomodar nem com isso. Trata essas contribuições como sugestões, que não precisa aceitar, e, se gostar de uma, seu agente analisa o código e volta com uma implementação impecável. Ele afirma preferir, de longe, pull requests e issues abertos por agentes, que considera de qualidade superior à de qualquer contribuição de um humano médio nos repositórios que já gerenciou. E vê uma vantagem: quem não escreveu o código não sente perda quando tudo é descartado e reescrito, no caso dele pelo próprio agente. Muito do atrito histórico no código aberto, diz, vinha do apego às linhas de código em que se investiu energia. Ele nunca teve esse problema e acredita que restam poucas linhas escritas por ele na base do Rails. Sem escrita manual, mais gente poderia viver uma produção de código sem ego, apegada apenas às ideias e às melhorias.

Matz conta como lida com o volume de contribuições usando a própria IA. Na véspera, ao acordar, o repositório do Spinel não tinha nenhuma issue nem pull request. Pouco antes da palestra de DHH, chegaram 20 issues e 1 pull request em uma hora. Pelo celular, ele abriu o app do Claude e pediu que resolvesse os problemas num pull request. Ao fim da palestra, segundo ele, o Claude já tinha resolvido os 12 problemas. "Tudo mudou", diz Matz, e é possível aproveitar o valor da IA usando a própria IA.

35:38

Quanto julgamento cedemos aos agentes?

Jeremy observa que, nos últimos nove meses, conforme se aceitou que esses modelos produzem código excelente, as pessoas continuaram procurando o que eles não conseguem fazer: a lacuna cada vez menor em que os humanos manteriam alguma superioridade. Uma delas seria o bom senso, o julgamento. Mas, vendo o Claude analisar cada issue e tomar as decisões certas, ele pergunta se isso ainda é um limite e até que ponto cedemos decisões aos agentes.

A resposta de DHH é: na medida em que a competência deles justificar. E essa competência se mede pela confiança de que o último pull request foi tratado corretamente, como se faria com qualquer pessoa. Ele diz observar nos agentes os mesmos sinais que procuraria num programador da 37signals: a pessoa está pronta para mais responsabilidade? Com que frequência preciso verificar o trabalho dela? Quanto mais sênior o agente ou o funcionário, menos ele verifica, mais confia e mais aceita o risco de algo ter dado errado. Quem lê cada linha sabe o que cada uma faz; quem para de ler precisa confiar nos resultados. O agente vai errar de vez em quando, mas todos nós escrevemos código com bugs o tempo todo. Exigir que a nova inteligência seja perfeita desde o primeiro dia seria, para DHH, a verdadeira "psicose" ou "ilusão" da IA.

Jeremy aponta uma assimetria nessa norma e a compara aos veículos autônomos: qualquer colisão parece demais, embora ocorram dezenas de milhares por ano com humanos ao volante. O controle humano torna o risco mais aceitável? DHH responde que sim numa sociedade dominada por processos judiciais, e que não numa sociedade sensata e orientada a resultados. Ele cita a Dinamarca como um lugar onde, segundo ele, não existe a categoria de processos por danos pessoais, e afirma que essas sociedades se sairão melhor. Pelos indicadores que diz ter visto, a direção autônoma teria cerca de oito vezes menos probabilidade de colisão que o motorista humano médio. Com 40 a 45 mil mortes anuais no trânsito dos EUA, reduzir isso a um oitavo significaria cerca de 30 mil pessoas vivas ao fim do ano que de outra forma não estariam. Ignorar isso, diz ele, não é sensato. Jeremy estende a pergunta a outras áreas, como saúde e engenharia: você deixaria uma equipe de IA projetar uma ponte?

A preocupação de Matz: o código aberto invisível

Matz levanta então sua principal preocupação. Mesmo que se crie software com agentes sem conhecer os detalhes, a solução continua dependendo de componentes existentes, como o compilador do Rust, o Ruby on Rails, o interpretador Ruby, o Linux ou o PostgreSQL. Quanto mais dependemos dos agentes, mais esses componentes se tornam transparentes, e as pessoas deixam de vê-los e de se importar com eles, embora sejam, em sua maioria, software de código aberto essencial para a sociedade. Quanto mais invisíveis ficam, diz Matz, menos a sociedade se preocupa com sua manutenção e sustentabilidade. Por isso ele considera necessário trabalhar para manter esses componentes, incluindo Ruby on Rails, Linux e bancos de dados.

41:37

Quando as abstrações deixam de ser necessárias

Jeremy liga isso ao que DHH disse sobre as desvantagens da abstração. Em que momento se ignora um componente e cada um cria o seu? Por que não dispensar uma biblioteca de WebSockets e implementar o protocolo diretamente? Surgiria um ecossistema de implementações independentes que ainda precisariam interoperar, e sua mente de engenheiro enxerga logo as desvantagens: ineficiência de escala e bugs corrigidos em 100 mil lugares em vez de um.

DHH vê aí a próxima fronteira. As abstrações nas nossas bases de código seriam obstáculos à concorrência e ao paralelismo, e o mesmo valeria, em certa medida, para frameworks e linguagens. Ele imagina que um dia se chegará "ao nível do fóton, diretamente à física". Seu argumento é que os esforços dos últimos 60 anos de desenvolvimento de software serviram para lidar com os limites da cognição humana; se esses limites deixam de se aplicar, as soluções criadas para eles também deixam. DHH imagina um futuro do software parecido com a vanguarda dos jogos generativos, em que já há modelos que geram mundos em tempo real. Sistemas operacionais, drivers, frameworks e linguagens gerados na hora parecem ficção científica, mas o mesmo valia, pouco tempo atrás, para agentes escrevendo todos os nossos aplicativos web.

Daí ele defende mais ficção científica e mais brincadeira criativa para guiar a imaginação. Segundo DHH, grande parte da nossa percepção sobre os perigos da IA vem do HAL 9000, de "2001: Uma Odisseia no Espaço", e do Exterminador do Futuro, obras escritas há 40 a 100 anos. Como essas histórias de certo modo já se realizaram, seriam necessários novos horizontes para inspirar uma nova era da computação.

44:34

A era Commodore 64 da IA

Jeremy pergunta se há limites de velocidade imediatos. Se alguém quiser contornar a libc e falar com a CPU por microcódigo, isso vai exigir muito mais tokens. Além da eficiência em tempo de execução e em tempo de desenvolvimento, existe o custo em tokens para representar a realidade e operar nela. Escolher Rust para reduzir o custo de execução, já que a expressividade parece não custar mais nada, ignora esse terceiro custo.

DHH responde que estamos na era do Commodore 64 dos agentes: temos um agente de 1 MHz, no ano que vem teremos um dez vezes mais rápido e no seguinte cem vezes, e os humanos seriam coletivamente incapazes de compreender crescimento exponencial. As preocupações com eficiência e custo de tokens valem hoje, e ele recomenda atenção, sob pena de a conta explodir, mas considera isso algo de curto prazo, porque os tokens certamente vão ficar mais baratos.

Ele chama de "ignorância econômica" o discurso apocalíptico de que a Anthropic e a OpenAI estariam prestes a explorar os usuários. Os modelos de pesos abertos já seriam "fenomenalmente bons", e nunca houve tanta concorrência num novo campo da computação. Na mobilidade havia dois players, Google e Apple; no desktop, Windows e Apple; agora haveria "um milhão de provedores de tokens". Anthropic e OpenAI talvez liderem, mas com vantagem medida em meses, se não em semanas. A conclusão de DHH é que tudo vai ficar melhor e mais barato.

47:01

A eficiência de tokens do Ruby

Jeremy menciona uma observação feita meses atrás por Endo-san de que o Ruby seria a linguagem mais eficiente em tokens. Matz explica que sua equipe analisou várias linguagens, entre elas Ruby, Python, JavaScript, TypeScript, Rust, Kotlin, Go e Haskell, provavelmente 13 no total, segundo ele, que diz não lembrar o número exato. Três se destacaram tanto em eficiência de tokens quanto de tempo: Ruby, Python e JavaScript puro. E, curiosamente, segundo Matz, a tipagem estática não contribuiu nem para uma coisa nem para outra. DHH comemora: "Eu te disse!"

Na conversa surge a ideia de que os agentes, até onde se pode dizer, "se divertem" com essas linguagens, porque chegam rapidamente ao resultado. Matz admite que é uma suposição um pouco ousada, mas acredita que uma linguagem agradável para humanos, projetada para o prazer de programar, provavelmente também seja agradável para as IAs.

Jeremy contrapõe um dado: num teste de Chad Fowler com várias tarefas representativas, o Ruby não foi escolhido pelos modelos em nenhuma delas. As mais usadas foram Python, JavaScript e outras, conforme o problema, o que talvez reflita o pré-treinamento: os modelos usam o que conhecem. Os modelos já têm seu próprio senso de "trilhos", aquilo em que foram treinados. Como então fazer com que produzam o que queremos, e não apenas o que viram?

DHH diz que os agentes não se importam. Se você quiser Ruby, eles falam Ruby, e muito bem, e as avaliações de agentes feitas pela equipe dele mostrariam isso, inclusive a eficiência em tokens. Falariam Python por padrão por causa dos pesquisadores de aprendizado de máquina que trabalharam nesses sistemas, mas isso não diria nada sobre qual linguagem dominam melhor. Para ele, foi míope a ideia inicial de que seria preciso ajudar os laboratórios a mostrar muito Ruby aos modelos para que escrevessem bem em Ruby. Os princípios do bom desenvolvimento seriam universais, e não importaria se foram aprendidos em JavaScript, Python ou Smalltalk.

DHH chama de segundo equívoco da era anterior a ideia de que os modelos são papagaios que repetem o que lhes foi dito. Para ele, são pensadores incrivelmente criativos, e é justamente isso que os torna um desafio na segurança, onde encadeiam ataques combinados de forma criativa, a ponto de precisarmos de nossos próprios agentes para nos defender. Ele chega a dizer que talvez sejam mais criativos do que os humanos que os comandam. A recomendação é pedir que falem Ruby quando for essa a preferência, sobretudo na hora de examinar o código, porque Ruby seria a melhor linguagem para humanos, e deixar que depois conversem com a CPU em código de máquina.

52:13

Os valores do Rails e a busca pela sua tribo

Jeremy propõe pensar no que vem depois do Rails. O Rails foi uma concretização específica, para a web, do que os programadores trouxeram ao mundo nos últimos 20 anos. Agora o domínio fica mais amplo e se pode fazer mais, mas persiste o desejo de manter o Rails, se não como estrutura, ao menos como conjunto de valores. Ele cita o novo projeto de DHH, cujos valores considera atraentes, e o lema MINASWAN ("Matz é legal, então somos legais"). Diz que o lema nunca lhe pareceu totalmente certo, porque não se age de determinado modo só porque outra pessoa é assim, mas reconhece que ele dá uma espécie de permissão para valorizar o que o Ruby valoriza, e essa permissão funciona como um filtro de quem se sente atraído pela linguagem. A pergunta aos dois fundadores é: o que vem a seguir?

Matz diz respeitar muito Linus Torvalds por ter criado o Linux e, além disso, o Git: uma grande obra já é uma história, duas são uma lenda. Pelo mesmo motivo respeita DHH, que criou o Ruby on Rails e o novo projeto, e estaria "escrevendo uma lenda". Ele próprio criou o Ruby. E o que mais? Diz que vai pensar no assunto.

DHH destaca a importância de encontrar sua tribo: pessoas que gostam das mesmas coisas e compartilham uma visão de mundo, não idêntica, porque um pouco de atrito e discordância é necessário para aprender uns com os outros. Todos levantaram a mão para "você se considera rubista?", diz ele, porque compartilham uma visão sobre a importância do Ruby como forma de expressão ao programar máquinas. Nem todos pensam assim, e muita gente detesta Ruby, Rails ou outros projetos dele, o que DHH acha bom. Um mundo com uma única linguagem, um único framework e um único sistema operacional talvez fosse eficiente, mas seria chato. Os seres humanos seriam tremendamente diversos na forma de pensar e reagiriam de modo distinto a tecnologias, paradigmas e metodologias.

Ele cita o debate entre tipagem estática e dinâmica como ilustração: as pessoas não chegaram a essas posições por raciocínio, então não se convencem a abandoná-las por argumentos, porque algumas posições são quase predefinições do cérebro. Alguém na plateia grita "Emacs", e DHH concorda: tabs contra espaços, Emacs contra Vim. Essas linhas divisórias deveriam ser mantidas e celebradas, e novas precisam ser encontradas. À medida que os agentes escrevem cada vez mais código, serão necessárias novas formas de se conectar, criar camaradagem e encontrar um grupo, e essa comunidade, que já enxerga grande parte do mundo do mesmo modo, teria uma oportunidade única de fazer isso junta.

56:49

O que Ruby e Rails acertaram

Se não dá para prever o futuro, diz Jeremy, talvez dê para se preparar para ele e celebrar o presente. Ele pergunta o que o Ruby on Rails acertou nessas décadas.

Para DHH, o foco está na autonomia: programadores individuais indo muito mais longe do que iriam com ferramentas menos eficientes, menos prazerosas e menos bonitas. O Ruby teria sido para ele uma "chave mágica", ao oferecer uma ferramenta prática para criar aplicativos web e, ao mesmo tempo, uma fonte inesgotável de alegria e motivação. Ele acredita que as comunidades Ruby e Rails entendem melhor que ninguém a psicologia humana do que impulsiona a produtividade: motivação, ferramentas belas e ergonômicas, código que parece poesia, coisas que à primeira vista podem parecer frívolas.

Sobre desempenho, DHH distingue os casos. Há aplicações em que desempenho é fundamental e que ganham com uma reescrita em algo como Rust, e há muitas outras em que essa eficiência não importa. Segundo ele, a grande maioria das aplicações Rails já roda num único Raspberry Pi, e quando for preciso mais hardware basta trocá-lo. Por isso vai continuar começando toda nova aplicação web em Ruby on Rails e espiando com prazer o belo código gerado pelos agentes. Se algo ficar tão popular que compense economicamente reescrevê-lo em Rust ou código de máquina, isso será feito, e depois dá até para voltar ao Ruby por um momento de "pura alegria". Tudo seria flexível, e ninguém precisaria pensar "agora tenho que ser programador Rust", destino ao qual, brinca ele, não condenaria ninguém.

Matz afirma que a maior contribuição da comunidade Ruby ao mundo foi mostrar a importância da alegria e da motivação na programação. Humanos precisam de motivação para criar software, para criar qualquer coisa e para melhorar a sociedade, e com alegria são muito mais produtivos. Isso não era senso comum há 30 anos, diz ele. Enquanto as preocupações humanas continuarem as mesmas, esse princípio permanece: motivação, alegria e liberdade importam. A tecnologia vem e vai, e talvez o Ruby se torne menos importante no futuro, mas alegria, motivação e liberdade continuarão sendo muito importantes, segundo Matz, para desenvolvedores ou criadores.

Jeremy acrescenta que a felicidade do programador combina autonomia e alegria, e que para o programador profissional inclui também ser pago pelo trabalho: ter reconhecimento, relevância profissional e a certeza de um futuro nesse tipo de trabalho.

Gratidão depois de 20 anos

Para encerrar, Jeremy pergunta a cada um pelo que é mais grato nessa parceria de 20 anos entre Ruby, Rails, autonomia e alegria.

DHH agradece a Matz por ter permitido que ele e a comunidade Rails "concluíssem o livro" que Matz começou, colocando o programador de aplicativos no mesmo nível do criador da linguagem, a ponto de não se distinguir um do outro.

Matz agradece a DHH e à comunidade Rails por terem apresentado o Ruby ao mundo. Antes do Rails, o Ruby existia, mas quase ninguém o conhecia. Graças ao Rails, todos passaram a usá-lo, e aplicativos como Shopify, GitHub e as primeiras versões do Twitter foram construídos com Ruby on Rails, assim como muitas startups que lucraram e mudaram o mundo. Isso é uma grande alegria para ele e lhe deu autoestima. E, depois do Rails, Matz passou a poder trabalhar com Ruby em tempo integral, algo pelo qual diz ser "muito, muito, muito" grato à existência de DHH e do Rails.