Matz, DHH e Jeremy Daer: o que significa ser rubista quando os agentes escrevem o código
Ruby on RailsNesta 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.
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.
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.
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.
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.
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.
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.
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.
"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.
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.
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.
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.
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.
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.
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.
Bem, sejam todos bem-vindos. Sinto que estamos todos participando de uma grande conversa. Esta tem sido uma conferência diferente de todas as outras em que já participei. E sinto que dá para tirar o R, o L e o S daquela palavra inicial ali. Porque tudo gira em torno da IA.
Agora, estamos aqui para falar sobre como moldar o futuro do Ruby on Rails. E a palestra do David ontem deixou muitas questões em aberto. Como estamos moldando o Ruby? Como estamos moldando o Rails? Foi uma visão mais ampla do que o mundo da programação como um todo está enfrentando.
E, nestes momentos, fico ouvindo as pessoas perguntarem sobre o futuro e pedirem previsões. E parece que, justamente quando o futuro está mais incerto, é quando as pessoas mais querem previsões, segurança e uma noção do que está por vir. Então, acho que podemos partir daí. Considerando que ainda não sabemos, o que podemos dizer? O que vocês preveem para o final deste ano, para o final do ano que vem? Começa com você, Matz.
Tudo muda tão rápido nos últimos anos que não dá para saber para onde as coisas estão indo. Por isso, há dois anos, eu não conseguia imaginar que deixaria de usar o Emacs como editor de código. Mas ainda uso o Emacs, aliás.
Todo o meu código está escrito no meu ambiente de código na nuvem desde novembro passado, mais ou menos. E as coisas eram totalmente diferentes de… isso é bem desafiador para mim.
David?
Acho que você está absolutamente certo. O que estamos lidando agora não é com certezas, mas com probabilidades. E a probabilidade que vejo é que, até o final do ano, como disse ontem, não será a maioria das pessoas, mas praticamente todas as pessoas que estarão programando como o Matz por meio de seus agentes.
Agora também entendo por que isso parece tão incerto. Mudar as coisas e misturar tudo dessa forma é como uma grande onda, e a gente não sabe como se equilibrar nem onde se posicionar para superar isso. Mas acho que é por isso que temos a responsabilidade coletiva de nos unirmos e nos ajudarmos mutuamente.
Primeiro, é preciso aceitar. Isso está acontecendo. Nenhum de nós tem o poder, mesmo que quiséssemos, de impedir isso. É como se estivéssemos passando rapidamente pelas fases do luto aqui. É isso que está acontecendo. E sei que muitas pessoas já superaram a raiva e estão em algum estágio de negociação com o futuro. Isso não funciona. A IA vai te ouvir e te dar atenção, mas não vai mudar sua trajetória.
Portanto, quanto mais rápido você passar pelo estágio de negociação — e, com sorte, dar uma passada rápida pela depressão — para então chegar à aceitação, esse é, na minha opinião, o único caminho a seguir. E então, quando você chegar à aceitação, espero que experimente o que eu experimentei, o que tantas pessoas já experimentaram: que o outro lado é incrível. É maravilhoso e divertido de todas as maneiras que a programação é maravilhosa e divertida, pois fazemos as máquinas realizarem coisas novas. Temos ideias e as vemos ganharem vida, e com a IA isso simplesmente acontece muito, muito, muito mais rápido.
Acho que algo particularmente intrigante nessa época é que as pessoas estão tendo essa experiência, mas também estão tendo a outra simultaneamente. Você consegue usar um agente e ver as coisas ganharem vida, mas também há… Quer dizer, eu me sinto um programador Ruby, me sinto um programador Rails, e, no entanto, faz meses que não uso o Vim para escrever código Ruby. Então, onde está minha identidade?
E ontem o David pediu que levantassem a mão quem está escrevendo código Ruby, mas vou pedir que levantem a mão de novo. Quem se sente um programador Ruby? É isso aí, pessoal.
Então, estamos em uma situação diferente — onde nos situamos nesse caminho quando a identidade, de certa forma, pode sobreviver à nossa prática? Quando nos chamamos de “Rubyistas”, mas não estamos escrevendo em Ruby, qual é o resquício que fica para trás?
Embora a tecnologia tenha mudado a nossa vida, acho que agora podemos escolher como nos sentimos nas nossas atividades e no nosso dia a dia. Por exemplo, quando a tecnologia surgiu, digamos, há 80 anos, as pessoas se preocupavam com o fato de que os empregos seriam tirados dos seres humanos e que toda a produção industrial ou algo do tipo seria feita por máquinas. Criaram filmes como “Tempos Modernos”, de Chaplin, mas as coisas aconteceram de maneira diferente, de modo que reduzimos a carga de trabalho na produção industrial ou podemos trabalhar de maneira diferente do que há 100 anos.
Esse tipo de coisa pode acontecer na próxima década, mais ou menos. E provavelmente nossas vidas como desenvolvedores de software seriam diferentes do que são hoje. Mas, mesmo assim, podemos escolher a criação tranquila, a atividade criativa de desenvolvimento de software, em vez de sermos expulsos do setor, de um emprego bem remunerado ou algo do tipo. Acho que agora é a hora de escolher o rumo, o nosso rumo, como me sinto e como nos comportamos em relação à IA.
Acho que isso realmente resume a diferença. Fiz uma palestra há alguns anos em que falei sobre o fato de não me ver como um engenheiro de software. Essa nunca foi uma identidade com a qual me identifiquei. Soava sério demais, rigoroso demais. Eu me via como um redator de software e me vejo assim há muitos anos.
Portanto, para quem já fazia parte desse grupo em que o rótulo de “engenheiro de software” já não se encaixava, acho que vocês estão em uma posição muito melhor para adotar o novo papel de criador de software. Essa é uma perspectiva mais ampla. Na verdade, há mais coisas a se considerar, mais coisas a se aprender do que apenas aperfeiçoar a arte de escrever código à mão. E minha grande descoberta é que é mais gratificante ser um criador de software do que meramente um programador. E eu adorava ser programador, mas a parte da criação, o pacote completo, é simplesmente mais gratificante.
E acho que nossa sensibilidade como programadores Ruby está excepcionalmente bem sintonizada para esta época. Qual é o valor humano que agregamos quando trabalhamos com agentes? É o bom gosto. É o senso de proporção. É o senso de beleza. Tudo o que sempre nos importou ao escrever código Ruby — a abstração disso é o que vai formar um bom criador de software, vai formar um bom desenvolvedor de agentes.
Então, vejo isso como um motivo de comemoração: o fato de a turma do Top Gun aqui estar tão bem posicionada, porque isso não tem nada a ver com o Rails. Nem mesmo tem a ver com Ruby. Essa é a parte do discurso online que acho tão intrigante, como se o que está acontecendo fosse, de alguma forma, exclusivo da nossa pequena comunidade. Vocês estão cegos? Isso vai atingir todo mundo. Para todos os domínios, para todas as bibliotecas, para todas as estruturas de trabalho, para todas as linguagens.
E há um foco estranhamente míope em: “ah, então o Rust é a próxima grande novidade”. Não dou a mínima para o Rust. Tipo, não vou me tornar um programador de Rust porque esse papel já foi abstraído de mim. O Rust é simplesmente a ferramenta mais eficiente no momento, e se amanhã alguém lançar um Rust melhor, eu mudarei sem nenhum do sofrimento que está sendo vivenciado agora nesta sala em relação às coisas do Ruby, porque não terei nenhum ego investido no Rust.
E acho que é perfeitamente possível que, em breve, o Rust nem seja mais o que estivermos usando. Iremos direto para o assembler, e o fato de ele não ser portátil não importará, porque simplesmente escreveremos o código de máquina necessário para cada plataforma em que quisermos estar, e adeus, Rust. Então, não se apegue a essa ideia de que, ah, eu tenho que mudar de lado. Os lados já não existem mais. Não estamos criando novos.
Vou abordar o que pode ser ideal para os agentes um pouco mais adiante. Acho que você tocou em uma ansiedade fundamental quando surge aquela ideia de que, se você sente a energia — ela está lá fora e está disponível —, mas se você não a sente por dentro, então há um abismo entre o que poderia ser — é quase como o que se espera de você — e, bem, não sei, a ansiedade e o receio diante das forças da natureza: como eu posso enfrentar isso?
Cada indivíduo precisa passar por essa experiência por conta própria. É como ouvir que vai haver uma demissão em massa e, bem, que basta se requalificar, fazer qualquer curso, aprender a programar. E agora, o que fazer? Então, quando falamos em “criador profissional cheio de energia”, as pessoas estão sentindo isso? E as pessoas que sempre sentiram isso já têm essa sensibilidade, então não é nada de novo. Mas, para quem está sendo convidado a adotar isso, é uma disciplina totalmente nova.
Sim. E, em parte, isso simplesmente requer que o tempo faça seu trabalho no ego. É por isso que temos os cinco estágios do luto: para explicar às pessoas que não é algo instantâneo. Para mim, não foi instantâneo. Talvez eu tenha passado por isso um pouco mais rápido do que a maioria, mas ainda assim tive que passar por esses estágios, e acho que isso é perfeitamente normal. Deve haver espaço para sentir um pouco de nostalgia por algo de que você realmente gostava antes de conseguir fazer a transição para algo que talvez você goste mais — ou não.
Cada mudança de paradigma que tivemos na área de informática deixou algumas pessoas desejando que isso não tivesse acontecido. A internet foi exatamente assim. A era dos celulares foi exatamente assim. Havia pessoas que simplesmente não queriam embarcar nesse trem e ficaram na estação. Haverá espaço para isso também.
O que me chama a atenção aqui é que comecei a usar Ruby sem nenhum interesse no valor econômico da linguagem. Gostava de Ruby porque era Ruby e era divertido de usar. E era mesmo, no sentido de que, quando as pessoas — como no seu exemplo com os retratos — não conseguem mais obter reconhecimento econômico por esse talento e conhecimento, para onde elas são redirecionadas? Bem, e se você nunca tivesse precisado disso, para começar? Talvez o Ruby esteja voltando à sua forma natural.
Ao contrário do DHH, tenho um enorme orgulho em relação ao Ruby. E toda a minha vida depende disso. Mas acho que sou parcialmente responsável, digamos, pelo aquecimento global.
É uma afirmação ousada.
Consome muita, muita energia. E, na era da IA, do ponto de vista puramente econômico, financeiro, o Ruby não é a melhor opção. Mas temos um enorme impulso e inércia em relação à gigantesca base de código do Rails — ou do Ruby.
Então, este ano, comecei a trabalhar em um compilador alternativo para Ruby chamado Spinel, que compila programas em Ruby em binários nativos. E ele roda com uma rapidez impressionante e consome muito menos memória.
Quanto?
Conforme testamos, o programa realista, em condições reais, roda com 1/20 da memória. Então, digamos que sua aplicação Rails consuma 100 megabytes de memória. O binário nativo da aplicação compilada pelo Spinel consome 20 megabytes. Portanto, isso significa que…
O quê? São 5,5 megabytes, quer dizer.
Eu só comecei o Spinel em março, então ele ainda é um bebê. Mas tem um potencial e tanto. E talvez da próxima vez ele escolha Ruby de novo. E compile para o binário nativo pra criar o backend.
Matz, gostaria de saber mais sobre isso. Afinal, você já tem a ideia do Spinel há muitos anos. E você trabalha com o mruby há muitos anos. E cada um deles ocupa um lugar diferente no mundo da engenharia e do desenvolvimento de software. Então, você sempre refletiu sobre o que o Ruby tem a oferecer — no caso do mruby, a um ambiente embarcado — ou o que o Ruby tem a oferecer aos seres humanos? E agora o Spinel parece responder à pergunta: o que o Ruby tem a oferecer aos agentes? O que faz do Ruby o Ruby? Se você retirar certos elementos, ele ainda será o Ruby?
Isso não é exatamente muito claro. Mas eu fui por tentativa e erro para definir o que é Ruby e o que não é Ruby. E o resultado é o CRuby que temos e que quase todo mundo usa. Mas não existe uma solução única para todos. Então, algumas pessoas preferem o JRuby para aplicações corporativas. O CRuby é grande demais para microdispositivos embarcados.
E então — ou talvez o próprio Ruby seja lento demais — mesmo com o compilador JIT que disponibilizamos recentemente. Então, esse subconjunto de desempenho da linguagem Ruby pode ser compilado em binário nativo e rodar com uma rapidez impressionante. E isso significa que, pelo menos por enquanto, só eu posso traçar a linha entre o que é Ruby e o que não é.
Pensando no papel do Ruby em coisas como o Roundhouse — caso nem todos conheçam o Roundhouse, trata-se de uma forma de tratar o Ruby como uma espécie de… ou uma aplicação Ruby on Rails como uma espécie de oráculo de conformidade que um agente pode consultar como uma especificação, e então ele gera Ruby puro sem o Rails ou outras linguagens. O scaffolding do Ruby está presente nisso, ou é um meio de preservar o Ruby, ou é algo que seria um único passo e, depois disso, você deixaria a aplicação em Ruby de lado?
As pessoas são diferentes. A criação de software envolve diversos aspectos. E, muito provavelmente, prevejo que a maioria das pessoas se concentre na direção do produto e na gestão do mercado do produto. Mas algumas pessoas se sentem muito motivadas pela parte da programação em si. Então, isso seria, pelo menos como carreira, algo que nos seria tirado em um futuro bem próximo.
Mas, ao mesmo tempo, isso nos faz aprender a nos concentrar em resolver nossos problemas. E se, no passado, nos faltava, digamos, capacidade, habilidade ou experiência para oferecer ou criar uma solução, agora os agentes podem nos ajudar de forma que, mesmo sem conhecimento suficiente, possamos criar uma solução de qualquer maneira. Essa é a situação.
Mas, ainda assim, pelo que vejo, nem todo mundo vai criar uma solução. A maioria de nós, a maioria dos seres humanos, está apenas esperando por soluções. Então, nesse caso, os provedores de soluções são uma espécie de “escolhidos”, como nós aqui. Portanto, a única coisa que podemos fazer é aprimorar nossa capacidade e oferecer uma solução para a humanidade como um todo. Isso é mais importante do que fornecer tecnologia específica e focar em tecnologia específica, como diz o DHH.
Mas, mesmo assim, Ruby é uma linguagem legal. E é a linguagem preferida de muita gente. E o próprio Ruby motiva as pessoas. Mesmo na era da IA, a motivação é o recurso mais importante que os seres humanos podem oferecer — algo que só os seres humanos podem oferecer, e não a IA.
Acho que o Ruby tem um papel maravilhoso a desempenhar nesse seu retorno à forma. Lembro-me de quando aprendi Ruby pela primeira vez: foi por meio de artigos na revista IEEE Magazine, escritos por Dave Thomas e outros autores, que descreviam conceitos de código usando Ruby, e eu achava que eles estavam escrevendo pseudocódigo. Achava que não era executável, mas era.
E acho que, à medida que avançamos para esse cenário em que não seremos nós mesmos a escrever a maioria das linhas de código, ocasionalmente vamos querer entender o algoritmo e saber como ele funciona — e o Ruby é a melhor linguagem de programação para explicar conceitos. Portanto, se, em vez de Dave Thomas me explicar conceitos na revista IEEE Magazine, eu agora tiver um agente que me explique meu código em Rust usando Ruby, isso parece um retorno incrível à forma.
Outra coisa que eu diria é que acho que a maioria das pessoas tem dificuldade em pensar além do “bolo fixo”. E acho que é daí que vem parte da ansiedade. Elas imaginam que o mundo do futuro terá o mesmo número de aplicativos que temos hoje e, então, imaginam que precisaremos de muito menos programadores para criar esses aplicativos. E isso vai ser verdade. O número de aplicativos que temos no mundo hoje vai exigir muito, muito menos programadores para mantê-los e desenvolvê-los.
Mas podemos criar mais. Vamos criar mais. Essa é toda a exuberância do momento: estamos criando muito mais software. Cada estatística que você vê no GitHub — e o motivo de o site ficar fora do ar a cada 5 minutos — se deve à explosão na criação de software. Esse é o florescimento. Esse é o florescimento. Teremos muito mais aplicativos para cuidar, e vamos precisar
de pessoas para fazer isso. É por isso que tenho esse enorme otimismo em relação aos programadores que aceitam o futuro e se dedicam ao seu novo papel como criadores de software. Vamos trabalhar em muito mais coisas, e isso é empolgante. É bom. É estabilidade no emprego. Mas isso não vai acontecer se você se agarrar tanto ao lápis a ponto de não conseguir imaginar que a calculadora possa te ajudar.
É interessante relembrar o início dos anos 2000 e a ascensão da Programação Extrema, quando ter uma linguagem muito fluente valia muito a pena. O custo de execução da linguagem era insignificante em comparação com os custos de desenvolvimento. E o — é claro — preço de alterar uma especificação, ter um ciclo de desenvolvimento ágil e introduzir práticas como o desenvolvimento orientado a testes. E vejo uma ironia nada pequena na situação em que nos encontramos agora. E quais são os artefatos do nosso trabalho? É o Markdown? São as especificações? É tudo o que existia antes da Programação Extrema e do qual nos livramos por causa das características negativas do longo tempo de ciclo e do alto custo — que agora são custo zero? Então, voltamos ao “grande projeto inicial” e às metodologias em cascata?
Não sei. Mas a metodologia específica e concreta é menos importante hoje em dia porque, sabe, a estrutura do código tem menos importância, já que não mexemos mais no código. Mas, então, agora precisamos, sabe, formalizar e aprender. Temos algo para formalizar e aprender nos próximos anos. É como criar uma visão do software, qual deve ser a solução, e determinar qual deve ser a solução, e qual é o problema? E, sabe, eles gerenciam a IA para construir isso… construir a solução.
Vocês conhecem o “vibe coding” e também já ouviram falar das histórias de fracasso do “vibe coding”, tipo, tudo bem criar jogos como o Tetris, mas, quando se tenta criar um aplicativo realista, muitas das tentativas fracassaram miseravelmente. Mas, em contraste, as pessoas ao nosso redor, ao meu redor, como os colaboradores do Ruby, tentam programar ao vivo nas ferramentas, como parte da filosofia do Ruby no estilo “live coding”. E, surpreendentemente, elas têm uma taxa de sucesso surpreendentemente alta. E isso significa que, sabe, nós, programadores com alguma experiência, sabemos como conduzir a criação de software. Ou sabemos como definir a meta para os agentes. Esse tipo de coisa pode ser— É. Sabe, precisamos formalizá-las e ensiná-las às próximas gerações de desenvolvedores de software.
E então, por exemplo, sou o líder do “vibe coding” porque, nos últimos 15 anos, venho praticando o “vibe coding”. Tenho praticado o “vibe coding” porque, sabe, sou o líder da comunidade do núcleo do Ruby, e pergunto aos committers: “Ok, que tal implementarmos esse recurso?” E então a inteligência orgânica… a inteligência criou o software. E eu testei, analisei e, tudo bem, vamos integrá-lo. E que tal melhorar o coletor de lixo assim? E os colaboradores apresentam o código: melhoramos tanto assim. Ótimo. É assim que trabalhamos atualmente. Todo mundo tem colaboradores principais ao seu redor. É assim que trabalhamos. É assim que vamos trabalhar daqui em diante.
Não se engane. É uma promoção. Ora, às vezes você é promovido para um cargo que não quer, mas acho que essa promoção, se você der cinco minutos a ela, vai ser imensamente gratificante, porque tive exatamente a mesma experiência que o Matz teve com o Rails por muitos anos, talvez décadas. Na primeira versão do Rails, escrevi tudo sozinho. Na segunda versão, talvez metade. E quando chegamos à 6ª e à 7ª, quase nada. Apenas orientação. Para onde queremos ir? O que é bom? O que está na moda, o que está fora de moda. É a isso que agora todos temos acesso.
O que também é verdade é que o dilema do inovador geralmente descreve o que acontece com as empresas estabelecidas quando surge uma nova tecnologia. Primeiro, a nova tecnologia parece um brinquedo. Não é uma ameaça. Ela só dá conta das coisas mais simples. Por que nos importaríamos? Temos a maior fatia do mercado e os grandes clientes, e eles não se importam com brinquedos. Qualquer um que estivesse por perto quando o Ruby ganhou destaque pela primeira vez vai se lembrar dessa história. “Não é escalável.” Lembra disso? É o que as pessoas estão dizendo agora sobre a IA. E estão erradas exatamente da mesma forma que estavam erradas sobre o Ruby e o Rails lá no começo.
Porque o vibe coding não só funciona e produz ótimos resultados, como também está evoluindo a um ritmo absolutamente astronômico. Portanto, tudo o que hoje ainda não é escalável vai se tornar escalável daqui a 5 minutos. Isso está claro. Por isso, precisamos tomar cuidado para não ficarmos estagnados como os gigantes do setor. Para não menosprezarmos essas novidades porque, por um breve momento, elas não fazem o que a gente quer. Mas vão fazer.
Por falar em zombar. Percebo ecos disso no desprezo pela IA, no fato de chamarem as coisas de “slop” e se referirem a elas como “meat proxies”. E até que ponto essas expressões — que são sugestivas e, em certo sentido, muitas vezes verdadeiras — são, na sua opinião, diagnósticos reais, e até que ponto são apenas uma forma de lidar com a situação?
90% é uma forma de lidar com a situação.
Uau.
Não sei. Simplesmente não sei. Detesto fazer previsões. Não sou bom em prever o futuro.
É por isso que temos que lidar com probabilidades. Não com previsões, nem com certezas, mas com probabilidades. Probabilidade. E é provável que isso seja apenas uma forma de lidar com a situação. E quanto mais cedo você se livrar dessas muletas, mais cedo poderá correr. E é verdade que, à medida que descobrimos como usar esses sistemas da melhor maneira possível, tanto para nós quanto para eles, vamos acabar adotando algumas formas subótimas de fazê-lo. E o “meat proxy” é uma delas. Se você está gastando tempo copiando e colando entre agentes e mensagens de erro, deveria considerar simplesmente deixar o agente ler as mensagens de erro diretamente. Por que você está nesse ciclo? Por que está aí atuando como um “proxy humano”? Saia desse papel. É insatisfatório e ineficaz.
Muitas coisas são assim quando você começa a colocá-las em prática. Elas são um pouco precárias. Ainda não estão totalmente aperfeiçoadas. Não temos um processo perfeito. Não temos ferramentas perfeitas. E nos viramos por um tempo, mas devemos ter a ambição de almejar algo mais elevado. Portanto, o rótulo de “meat proxy” é apenas uma tábua temporária para ir de A a B.
A questão do “slop”, porém, é uma desculpa da pior espécie. A ideia de que os agentes não conseguem escrever código original, de alta qualidade e livre de bugs é, neste momento, simplesmente ilusória. É muito mais delirante, muito mais uma psicose em torno da IA do que o otimismo sobre o que ela pode fazer, porque é como enfiar a cabeça na areia. Então, essa história do “slop”, acho que está na hora de aposentar. Até mesmo a “granada de slop” não vai durar muito mais por aí.
Acho que “granada de slop” capta algo que “slop” não consegue, porque é o slop mais a forma como é apresentado. E é aí que as pessoas sentem que é slop, quando isso é jogado na cara delas. E é como se não fosse levado até o fim. Se você tem uma ideia, bem, quer dizer, é como receber um comunicado de imprensa que não foi bem pensado, e agora cabe a você dedicar sua atenção para analisá-lo e entendê-lo. E a “granada de slop” é que você precisa descobrir se vale a pena lançar isso. Então há… o que está faltando aí? Há mais do que apenas escrever o código.
Não me importo nem um pouco com “granadas de slop”. Eu simplesmente as vejo como sugestões e não preciso me preocupar em aceitá-las. E se eu gostar da sugestão, meu agente vai analisar o código e voltar com uma implementação impecável. Prefiro, de longe, pull requests e issues abertos pelos agentes. Eles são de qualidade superior à de qualquer pull request ou issue produzido por um ser humano comum em qualquer repositório que já tive o privilégio de gerenciar. Isso não significa que eu tenha que aceitar a implementação. Na verdade, é ainda melhor, porque, se você não escreveu o código, não sentirá nenhum sentimento de perda quando eu descartar tudo e reescrever. Bem, não serei eu quem reescreverá, e sim meu agente, mas você não estará mais apegado às linhas de código. Isso é uma bênção.
Grande parte do atrito nas comunidades de código aberto do passado vinha do fato de as pessoas se apegarem às linhas de código porque, por acaso, haviam dedicado muita energia a escrevê-las, e era difícil abrir mão delas quando surgiam linhas de código melhores. Nunca tive esse problema. Acho que não restam muitas linhas de código na base de código do Rails que eu tenha escrito pessoalmente. Maravilhoso! Melhoria, progresso, algo melhor. Acho que essa ideia de que não estamos mais escrevendo o código manualmente permite que mais pessoas vivenciem isso: uma produção de linhas de código sem ego e, portanto, um apego apenas às ideias, às ideias melhores e à melhoria.
É. Acho que conseguimos lidar com a enorme quantidade de, você sabe, PRs e issues com a ajuda da IA. Por exemplo, ontem, acordei, tomei banho e verifiquei meu GitHub, e não tínhamos nenhum issue nem pull request para o Spinel. Isso é ótimo. E eu… então acordei, vim a pé até aqui no local do evento e participei de uma discussão. E, logo antes da palestra dele, recebi 20 issues e 1 pull request em apenas 1 hora.
E então peguei meu celular e abri o aplicativo do Claude. Pedi ao Claude para, bom, resolver esses problemas no pull request. E, no final da palestra, quando terminei, o Claude já tinha resolvido automaticamente aqueles 12 problemas. É assim que fazemos — é assim que criamos o software. Tudo mudou. E podemos aproveitar o valor da IA usando a própria IA.
Isso me leva a outra coisa que eu ia perguntar. Ao longo desses últimos nove meses, na verdade, à medida que as pessoas foram aceitando, de modo geral, que, bem, esses modelos podem produzir um código excelente, elas continuam procurando aquilo que eles não conseguem fazer. E qual é essa pequena lacuna que não para de diminuir, representando o domínio humano, onde sempre teremos algum tipo de superioridade? E por que, afinal, insistir nisso? Mas um deles é a sensação de ter bom senso. Agora, quando vejo o Claude lidar com todas essas questões, analisar cada uma delas e tomar as decisões certas, será que isso ainda é um fator limitante? São os humanos que estão exercendo seu bom senso, ou até que ponto cedemos a decisão aos agentes?
Na medida em que sua competência o justifique. E a competência deles é medida pela sua confiança de que o último pull request foi tratado corretamente, exatamente como você faria com qualquer pessoa. Eu observo os agentes e procuro os mesmos sinais que procuraria se fosse um programador trabalhando na 37signals. Essa pessoa está pronta para assumir mais responsabilidades? Com que frequência preciso verificar o trabalho? E quanto mais sênior o agente ou o funcionário se torna, menos eu verifico, mais confio, mais presumo que ele tenha feito tudo certo e mais também aceito que há o risco de que ele não tenha feito.
Se eu ler cada linha de código, saberei o que cada uma delas faz. Se eu parar de ler as linhas de código, terei que confiar nos resultados e na confiança. E, ocasionalmente, o agente cometerá um erro. Quem entre nós nunca cometeu um? Quem entre nós nunca escreveu um código ruim, com bugs, que poderia ser mais rápido? Todos nós, o tempo todo. Por que vocês têm essa exigência de que a nova inteligência deve ser perfeita e isenta de falhas desde o primeiro dia? Isso é a psicose da IA. Isso é a ilusão da IA. Essa inteligência está melhorando rapidamente, mas ainda não é perfeita — e nós também não somos. Então, qual é o problema?
Existe uma assimetria na norma. Quero dizer, é semelhante ao que ocorre com os veículos autônomos, em que qualquer colisão já é demais, e, no entanto, ocorrem dezenas de milhares de colisões por ano, mas o ser humano está no controle. Então, será que o fato de o ser humano estar no controle, ao volante, torna isso mais justificável? O fato de gerar falhas, erros e bugs e representar um risco?
Em uma sociedade dominada por processos judiciais, sim. Em uma sociedade sensata, orientada por resultados, não. Existem diferentes sociedades ao redor do mundo que lidam com esse problema de maneiras muito distintas. Na Dinamarca, não há processos por danos pessoais. Simplesmente não existe essa categoria de ação. Não é uma área do direito que tenha qualquer impacto sobre a forma como as decisões são tomadas. Essas sociedades se sairão melhor. Porque, neste momento, infelizmente nos deparamos com o problema de ter uma tecnologia de direção superior que, segundo os indicadores que vi, tem cerca de 8 vezes menos probabilidade de se envolver em uma colisão do que o ser humano médio; e, ainda assim, dizemos: ah, não sei, uma colisão já é demais. Entre 40.000 e 45.000 pessoas morrem todos os anos nos Estados Unidos em acidentes de trânsito. Se pudéssemos melhorar isso agora mesmo e reduzir esse número para um oitavo, 30 mil pessoas estariam vivas no final do ano que, de outra forma, não estariam. Não é uma sociedade sensata aquela que opta por ignorar isso.
Então, sim, isso me faz pensar em outras aplicações dessas mesmas tecnologias, porque não se trata de um fenômeno exclusivamente da programação. As pessoas estão buscando aplicar essas mesmas tecnologias na área da saúde e na engenharia como um todo. Você gostaria que uma equipe de IA projetasse uma nova ponte? Quero dizer, engenharia de verdade.
É. Mas tenho uma preocupação. Mesmo que criemos o software usando agentes sem conhecer os detalhes, a solução ainda depende de componentes de software existentes, como o compilador Rust, o Ruby on Rails ou o interpretador de Ruby, seja lá o que for, o Linux ou o PostgreSQL. E então, como dependemos cada vez mais dos agentes, os outros componentes se tornariam cada vez mais transparentes. E, embora esses componentes — em sua maioria, software de código aberto — sejam muito importantes e viáveis para a sociedade, as pessoas não os veriam e não se importariam com eles. Essa é a minha maior preocupação. Quanto mais os componentes se tornam transparentes, menos a sociedade se importa com eles, com a manutenção e com a sustentabilidade. Essa é a minha preocupação, e eu acho que nós temos que trabalhar para manter esses componentes, incluindo o Ruby on Rails, o Linux e os bancos de dados.
Isso me faz pensar, David, no que você disse sobre as desvantagens da abstração. Em que momento a gente acaba ignorando esses componentes e cada um acaba inventando o seu próprio? E penso em coisas como, por exemplo, quando falamos de bibliotecas específicas: por que não, sei lá, ignorar uma biblioteca de WebSockets e simplesmente implementar o protocolo WebSockets diretamente? E todo mundo, quer dizer, é um ecossistema amplo com várias implementações diferentes evoluindo de forma independente e com suas próprias funções de aptidão, que precisam ser capazes de interoperar. E minha mente de engenheiro imediatamente pensa: bem, existem essas desvantagens claras, como ineficiências de escala; se houver um bug, você precisa corrigi-lo em um único lugar, em vez de em 100 mil lugares. Mas o que você acha?
Essa é a próxima fronteira. Perceber que as abstrações em nossas próprias bases de código são obstáculos à concorrência e ao paralelismo. E o mesmo vale, até certo ponto, para nossos frameworks e nossas linguagens de programação. E, eventualmente, chegaremos ao nível do fóton, diretamente à física. E que todos os nossos esforços nos últimos 60 anos de desenvolvimento de software tiveram como objetivo lidar com os limites da cognição humana. E se esses limites não se aplicam mais, as soluções também não.
Portanto, consigo imaginar perfeitamente que o futuro do software se pareça mais com a vanguarda da jogabilidade generativa que temos hoje. Já existem modelos capazes de gerar mundos de jogo em tempo real. A ideia de que poderíamos acabar em um mundo onde sistemas operacionais, drivers de dispositivos, frameworks e linguagens sejam gerados em
tempo real parece ficção científica neste momento, mas o mesmo acontecia com a ideia de que esses agentes poderiam escrever todos os nossos aplicativos web para nós e nos livrar do lápis há muito pouco tempo.
Então, acho que, na verdade, precisamos de mais ficção científica, de brincadeiras mais criativas, porque é isso que vai guiar nossa imaginação daqui para frente.
Grande parte da nossa imaginação hoje está ancorada em obras como “2001: Uma Odisseia no Espaço”. Grande parte da nossa percepção sobre os perigos da IA vem do HAL 9000, do Exterminador do Futuro e de obras de ficção científica escritas há 40 a 100 anos. Precisamos de uma ficção científica melhor neste momento, porque todas essas histórias já se tornaram realidade, em certa medida; e, portanto, precisamos de novos horizontes que nos tragam nova inspiração sobre como pode ser uma nova era da computação.
Você acha que existem limites de velocidade que estamos enfrentando imediatamente aqui quando se fala, quer dizer, digamos que eu queira contornar a libc e simplesmente me comunicar, sabe, por meio de microcódigo com uma CPU? É como se isso fosse exigir muito mais tokens. Tipo, o que isso aciona dentro de um modelo? Existem outros tipos de barreiras à eficiência além da eficiência em tempo de execução e da eficiência no tempo de desenvolvimento. Já reduzimos bastante o tempo de desenvolvimento. Ou, no ciclo de retroalimentação, o custo é quase zero. Então dizemos: “Bem, não preciso arcar com o custo de nenhuma outra linguagem — qualquer que seja a que me ofereça alta expressividade. Portanto, vamos escolher o Rust, pois ele vai reduzir drasticamente o custo de execução”. Mas e quanto ao custo do ciclo, os tokens que são gastos para representar a realidade e operar dentro dela?
Acho que estamos lidando com o Commodore 64 neste momento. Temos um agente de 1 MHz. E no ano que vem teremos um que rodará 10 vezes mais rápido, e no ano seguinte, 100 vezes mais rápido, e os seres humanos são simplesmente incapazes de compreender coletivamente o crescimento exponencial. Portanto, todas as nossas preocupações atuais sobre a eficiência e o custo dos tokens são relevantes neste momento, e você deve prestar atenção ou sua conta de tokens vai explodir. Mas essa atenção é uma consideração de curto prazo. É claro que isso vai ficar mais barato.
Mais uma vez, esse absurdo apocalíptico do “decrescimento” — de que estamos prestes a ser enganados pela Anthropic e pela OpenAI — é simplesmente ignorância econômica. Os modelos de peso aberto já são fenomenalmente bons. Existe concorrência. Nunca houve tanta concorrência em um novo campo da computação quanto temos agora com a IA. Nenhuma das mudanças de paradigma anteriores teve algo parecido com isso em termos de concorrência. Quando os dispositivos móveis surgiram, tínhamos dois players: o Google e a Apple. Quando o mercado de computadores de mesa se dividiu, tínhamos o Windows e a Apple. Agora, temos um milhão de provedores de tokens. Talvez a Anthropic e a OpenAI estejam na liderança, mas essa vantagem é medida em meses, se não em semanas. Não há nada com que se preocupar, pessoal. As coisas vão melhorar. Vão ficar mais baratas. Vão ficar ainda melhores.
Há alguns meses, Matz Endo-san fez essa observação de que Ruby é a linguagem mais eficiente em termos de tokens.
Sim. Há alguns meses, nós — a equipe da Kaleido — analisamos várias linguagens, incluindo Ruby, Python, JavaScript e TypeScript, além de Rust, Kotlin, Go e Haskell. E, curiosamente, há três linguagens entre — não me lembro bem, provavelmente 13 linguagens — que apresentam bastante eficiência em termos de tokens e de tempo. E essas linguagens são Ruby, Python e JavaScript — JavaScript puro. E, curiosamente, a tipagem estática não contribui nem para a eficiência de tokenização nem para a eficiência de tempo.
Eu te disse!
Para complementar isso, considerando que os agentes têm o mais próximo que consigo dizer é que eles se divertem com essas linguagens eficientes em termos de tokens. Eles conseguem chegar rapidamente ao resultado que buscam. E se eu tivesse alguma medida mais precisa da satisfação dos agentes, seria o fato de eles terem seguido o método de escalada de montanha.
É uma suposição um pouco ousada, mas acredito que, sabe, uma linguagem de programação que seja agradável para os humanos, projetada para proporcionar o prazer de programar, provavelmente essa linguagem também seja agradável para as IAs.
Stream do Android em Ruby.
Então, o interessante aqui foi que Chad Fowler fez um teste de desempenho com várias tarefas representativas, e o Ruby não foi escolhido em nenhuma delas. E as linguagens mais comumente utilizadas foram Python, JavaScript etc., dependendo do tipo de problema. E isso talvez reflita o pré-treinamento com base no que eles viram. Portanto, o que eles conhecem é o que eles usam. Como você orienta um modelo? Bem, no sentido de que estamos meio que nos desviando do assunto aqui. Estamos dizendo que vamos permitir que os modelos façam tudo, mas os modelos já têm seu próprio senso de “Rails” interno. É nisso que eles foram treinados. Então, como fazemos para que os modelos façam o que queremos? E, quer dizer, talvez isso esteja distorcendo um pouco o contexto, porque não é necessariamente fazer o que queremos, mas recebemos o resultado daquilo em que eles foram treinados. Será que é isso que queremos?
Não acho que os agentes se importem. Se você quiser que eles se comuniquem com você em Ruby, eles falarão em Ruby, e são muito bons nisso. As avaliações dos agentes que temos realizado mostram exatamente isso. Eles são eficientes em termos de tokens. Ficam perfeitamente à vontade para se comunicar com você em Ruby. Eles falam Python por padrão porque foi com essa linguagem que os pesquisadores de aprendizado de máquina que vêm trabalhando nesses sistemas foram treinados. Mas isso não tem influência sobre qual linguagem eles dominam melhor. Eles poderiam muito bem falar Ruby com você. Eles não se importam. Eles falam todas as linguagens fluentemente.
Além disso, o foco no pré-treinamento se torna muito míope muito rapidamente, e acho que ficamos presos nessa visão logo no início, quando estávamos pensando em como poderíamos ajudar os laboratórios a ensinar melhor Ruby aos modelos, porque tínhamos essa ideia de que eles precisavam ver muito Ruby para escrever bem em Ruby. Não, eles não precisam. Os princípios do excelente desenvolvimento de software são universais, e não importa se eles aprendem essas regras em JavaScript, Python ou Smalltalk. Eles vão traduzir para a forma final com a mesma eficiência. Esse é o segundo equívoco da era passada: achar que eles são papagaios. Eles estão apenas repetindo o que lhes dissemos. Não, não estão. São pensadores incrivelmente criativos.
Na verdade, é por isso que representam um desafio tão grande. Na área de segurança, eles são incrivelmente criativos ao encadear vários ataques combinados. E é por isso que estamos tendo dificuldade em lidar com isso e precisamos de nossos próprios agentes para nos defendermos contra eles. A criatividade existe. Na verdade, se há alguma diferença, eles são mais criativos do que os humanos que os comandam.
Então, aproveite isso. Peça que eles falem Ruby com você quando for isso que você preferir. Quando você quiser examinar o código, é claro que eles devem falar Ruby, porque Ruby é a melhor linguagem de programação para humanos. Portanto, peça que eles traduzam para você, e depois eles podem voltar a falar código de máquina em assembly diretamente com a CPU.
É isso que o Spinel faz.
Então, eu gostaria de falar um pouco sobre o que vem depois do Rails. Temos o Rails para desenvolvimento web. É uma espécie de concretização específica do que nós, como programadores, trazemos para o mundo da tecnologia. Quero dizer, nos últimos 20 anos. E isso está mudando. Nosso domínio está mais sólido, mais abrangente. Podemos fazer mais. E, ainda assim, há uma sensação de: “Quero manter o Rails”. E não precisa necessariamente ser a estrutura, mas e os valores do Rails?
E você, David, com o Omarchy, está começando algo novo. E os valores dele são atraentes. E o Matz, com o MINASWAN: o Matz é legal, então a gente também é legal. Isso nunca me pareceu muito certo, porque é como se a gente não fizesse algo só porque outra pessoa é de um jeito determinado. Mas é quase como dar permissão para uma forma de interagir com uma linguagem. Que é normal valorizar as coisas que o Ruby valoriza. E, com essa permissão, há um ótimo filtro para identificar quem se sente atraído por essa linguagem. Então, vocês dois, como fundadores, o que vem por aí para vocês?
Não sei, mas respeito muito o Linus Torvalds porque ele criou o Linux. Essa é uma grande conquista. Mas, além disso, ele criou o Git. Uma coisa já é uma história, mas criar duas grandes obras é uma espécie de lenda. E é por isso que respeito muito o DHH. Porque, sabe, ele criou o Ruby on Rails e o Omarchy, certo? Ele está escrevendo uma lenda. Estou criando o Ruby. E quanto a outra coisa? Deixa eu pensar nisso.
Bem, acho que é muito importante que as pessoas encontrem seu grupo, encontrem outras pessoas que gostem das mesmas coisas que elas, que tenham a mesma visão de mundo — não exatamente igual, mas compartilhada —, porque precisamos de um pouco de atrito. Precisamos de um pouco de discordância para podermos aprender uns com os outros. E eu realmente acho que a razão pela qual todos levantaram a mão quando perguntaram “você se considera um Rubyista?” é que temos uma visão comum sobre a importância do Ruby como forma de expressão ao programar máquinas. Isso é realmente importante.
Nem todo mundo compartilha dessa visão. Há muitas pessoas que detestam profundamente o Ruby. Há muitas pessoas que não gostam do Omarchy, do Rails ou de qualquer outra coisa com a qual eu tenha me envolvido. Isso é bom. Seria tão chato se todos nós gostássemos das mesmas coisas exatamente da mesma maneira e houvesse apenas uma linguagem de programação, um framework, um sistema operacional neste mundo. Talvez fosse eficiente, mas com certeza não seria divertido.
Porque os seres humanos são tremendamente diversos em suas formas de pensar. E respondem de maneira diferente a diferentes tecnologias, a diferentes paradigmas, a diferentes metodologias. O debate de longa data na comunidade de programação sobre tipagem estática versus tipagem dinâmica é uma ilustração perfeita disso. Você pode apresentar quantos argumentos quiser às pessoas de um lado ou de outro, elas não mudarão de ideia porque não chegaram a essas posições por meio do raciocínio; portanto, não é possível convencê-las a abandoná-las com argumentos. Algumas dessas posições são simplesmente fundamentais, quase que predefinições em seus cérebros.
Emacs.
Exatamente! Tabulações x espaços, Emacs x Vim. Essas são exatamente essas linhas divisórias, e devemos mantê-las, e devemos celebrá-las. Precisamos celebrá-las e precisamos encontrar novas. Então, quando avançarmos para o futuro e os agentes estiverem escrevendo cada vez mais do nosso código, precisaremos de novas maneiras de nos conectar com os outros, criar camaradagem e encontrar um grupo. Acho que essa comunidade aqui tem uma oportunidade única de fazer isso juntos. Vocês já sabem que enxergam grande parte do mundo da mesma maneira. Então, à medida que avançarmos para o que vier a seguir, fiquem por aqui. Vai ser muito legal.
Então, se não podemos prever o futuro, quer dizer, talvez possamos nos preparar para ele e celebrar o presente. Na sua opinião, o que o Ruby on Rails realmente acertou nessas últimas décadas?
Para mim, o foco está na autonomia. Programadores individuais capazes de ir muito mais longe do que iriam com ferramentas menos eficientes, menos prazerosas e menos bonitas. O Ruby, para mim, foi essa chave mágica, pois não só me proporcionou uma ferramenta prática para criar aplicativos web, mas também foi uma fonte inesgotável de alegria e motivação para me dedicar a esse trabalho. Acho que nós, nas comunidades do Ruby on Rails, compreendemos isso melhor do que qualquer outra pessoa. Uma compreensão da psicologia humana, do que impulsiona a produtividade. Um componente enorme disso é exatamente o que você disse. É a motivação. É trabalhar com ferramentas belas e ergonômicas que criam algo que, à primeira vista, pode parecer frívolo. Código que parece poesia. Além da questão de ele rodar rápido.
Agora, essa é a outra questão sobre o momento atual. Acho importante entender que existem aplicativos em que o desempenho é fundamental e que podem ser aprimorados reescrevendo-os em algo como Rust. E, por outro lado, há muitos, muitos, muitos, muitos outros em que essa eficiência não importa. A grande maioria dos aplicativos Rails já roda em um único Raspberry Pi. Não precisa de mais velocidade do que isso. E, quando for necessário mais hardware, você pode trocá-lo.
Então, vou continuar a iniciar todas as novas aplicações web que escrever em Ruby on Rails. É uma maneira maravilhosa de começar. E terei grande satisfação em dar uma espiada nos bastidores e ver esse belo código sendo gerado pelos agentes. E então, se chegar o momento em que algo se torne tão popular que seja economicamente vantajoso reescrevê-lo em Rust ou em código de máquina, simplesmente faremos isso. E então poderemos transformá-lo de volta em Ruby, se assim quisermos, por um momento de pura alegria e apreciação da bela poesia do código. Tudo isso é flexível. Podemos seguir em uma direção ou na outra. Você não precisa se prender a nada e pensar: “Meu Deus, agora tenho que ser um programador de Rust”. Eu não te condenaria a esse destino. Confie em mim.
Graças a Deus.
Pelo que acredito, a maior contribuição da comunidade Ruby para o mundo é mostrar a importância da alegria e da motivação em uma comunidade — no cenário da programação. Nós, seres humanos, precisamos de motivação para fazer qualquer coisa. Portanto, precisamos estar motivados para criar software ou, sabe, para criar qualquer coisa — e também para melhorar a sociedade. E, quando sentimos alegria, podemos ser muito mais produtivos no produto — em desenvolvimento. Esse tipo de coisa não fazia parte do senso comum há 30 anos. Portanto, essa é a maior contribuição da linguagem Ruby.
E o princípio básico, acredito, é que, enquanto as preocupações humanas continuarem as mesmas no futuro, isso permanecerá. Portanto, a motivação é importante. A alegria importa e a liberdade importa. Esse tipo de coisa vai permanecer igual. Mas, sabe, a tecnologia vem e vai, e talvez no futuro o Ruby seja menos importante, venha a se tornar menos importante, mas, de qualquer forma, a alegria, a motivação e a liberdade ainda serão muito importantes. Obrigado. Continuará sendo importante para todos nós, desenvolvedores ou criadores.
Claro que sim. Sim, quando penso na felicidade do programador, é uma combinação de autonomia e alegria. E há algo sobre a felicidade do programador profissional, talvez: também é receber pelo trabalho. É o reconhecimento do que você está criando e da relevância dentro do âmbito profissional — saber que você tem um futuro fazendo esse tipo de trabalho. Então, para finalizar, olhando para trás — e isso é realmente como uma parceria de 20 anos entre o Ruby on Rails, a autonomia e a alegria —, pelo que você é mais grato?
Tenho muita gratidão ao Matz por ter permitido que eu e outros membros da comunidade Rails concluíssemos o livro que ele começou. Colocar o programador de aplicativos no mesmo nível que o criador da linguagem e fazer com que não fosse possível distinguir a diferença entre os dois.
Agradeço ao DHH e à comunidade do Rails por terem divulgado o Ruby para o mundo. Antes do Rails, o Ruby já existia, mas praticamente ninguém o conhecia. E então, graças ao Rails, todo mundo começou a usá-lo, e muitos aplicativos — incluindo o Shopify, o GitHub e as primeiras versões do Twitter — foram desenvolvidos com Ruby on Rails, e todo mundo passou a usá-lo. E, no passado, muitas, muitas, muitas startups usavam o Ruby on Rails, e elas tiveram, você sabe, lucros e mudaram o mundo. Isso é uma grande alegria para mim. E me deu uma espécie de autoestima. E, depois do Rails, pude trabalhar com Ruby em tempo integral.
Então, sim, eu estou mais do que, você sabe, eu agradeço muito, muito, muito mesmo pela existência do DHH e do Rails.
Bem, Matz, David, obrigado a vocês dois por tudo. Obrigado.
Artigo publicado · Atualizado
