Há dez anos, neste mesmo mês, Jose Aguinaga publicou How it feels to learn JavaScript in 2016. Era um diálogo: alguém que estava havia um tempo longe do frontend pede ajuda a um veterano para montar uma página simples que mostre dados de um servidor, e acaba soterrado por React, JSX, Babel, Webpack, npm, Bower, TypeScript, Flow, Redux e duas dúzias de engines de template. Termina com o recém-chegado desistindo e voltando para o backend, e o veterano respondendo com uma única linha: "Já ouviu falar de Python 3?"
Li quando saiu e nunca esqueci. Era engraçado porque todos os nomes eram reais. Dez anos depois, eu queria saber como soa a mesma conversa agora que tanto código é escrito por um agente. Aqui está, com desculpas e agradecimentos ao original.
Como é aprender JavaScript em 2026
Oi, tenho um projeto web novo, mas sinceramente faz uns anos que não escrevo código. Preciso de uma página simples que mostre uns dados de um servidor. O que eu uso?
— Nada. Pede para o agente.
O agente?
— Um agente de código com IA. Você descreve a página e ele escreve. Claude Code, Codex, Cursor, Copilot, Gemini CLI. Escolhe um.
Tá, mas ele escreve em quê? React?
— Provavelmente. Next.js, quase certeza. Você não precisa se preocupar muito.
Eu não preciso saber React?
— Você precisa saber React o suficiente para ler o que ele escreveu. Não é a mesma coisa.
Beleza. Então eu falo "faz uma página para mim" e pronto?
— Não. Primeiro você escreve um AGENTS.md. Ou um CLAUDE.md, dependendo do agente. É um arquivo onde você explica o seu projeto, as suas convenções e como rodar os testes.
Eu ainda não tenho projeto. Por isso estou pedindo uma página.
— Então deixa o agente escrever o AGENTS.md também. E revisa, porque esse arquivo entra em todas as conversas.
Em todas as conversas? Isso não sai caro?
— Fica em cache. Prompt caching. Enquanto você não mexer no começo do contexto, o provedor cobra uma fração.
Hã... tá. Qual modelo?
— Depende da semana. Sai um modelo de fronteira novo mais ou menos todo mês, cada um numa versão grande e numa versão rápida, e cada laboratório tem um benchmark em que está ganhando.
Qual está ganhando?
— Todos. Segundo os próprios benchmarks.
Entendi. Os dados vêm de um servidor. Como o agente fica sabendo do meu servidor?
— Você conecta com MCP, o Model Context Protocol. É um padrão para dar ferramentas aos modelos: o seu banco de dados, a sua API, o seu navegador, o seu Slack.
MCP é uma biblioteca?
— É um protocolo. Existem servidores. Milhares. Alguns são oficiais e outros alguém escreveu no fim de semana passado, e esses vale a pena ler antes de entregar as suas credenciais.
Peraí, eu vou entregar as minhas credenciais?
— Com escopo limitado. Com OAuth. E o agente pede permissão antes de rodar um comando, a não ser que você ative o modo automático.
O que é o modo automático?
— O modo em que ele não pergunta. Todo mundo acaba nele.
E se eu precisar que ele siga algo específico, como as nossas regras de design?
— Você escreve uma skill. É um arquivo Markdown com instruções que o agente carrega quando é relevante. Ou um slash command. Ou um hook, se você quer que algo aconteça todas as vezes. Ou um subagente, se a tarefa for grande o suficiente.
Qual a diferença entre uma skill e um prompt?
— Uma skill é um prompt dentro de uma pasta.
...
— Com uma descrição no topo. A descrição importa.
Eu só quero mostrar uns dados numa página.
— E vai mostrar. Ele já fez enquanto a gente conversava. Olha, um pull request.
Mexe em 47 arquivos.
— Ele adicionou testes. Eles são muito bons em testes. Também um Dockerfile, uma GitHub Action, um modo escuro e um README com emojis.
Eu não pedi modo escuro.
— Ninguém pede. Vem de qualquer jeito.
Eu tenho que revisar tudo isso?
— Alguém tem. Você pode pedir para outro agente revisar. Ou para o mesmo agente com um contexto limpo.
Um agente revisando um agente.
— E você revisando a revisão. Depois roda o CI, que demora mais a cada semana porque os agentes não param de escrever testes, então você vai querer uma merge queue.
Pelo menos funciona?
— Compila e os testes passam. Se funciona, você confere no navegador. Ou pede para um agente com navegador conferir.
E como eu sei que o agente não só fez parecer que funciona?
— Evals.
O que são evals?
— Testes para as coisas que não são determinísticas. Você junta um conjunto de casos, roda o modelo contra eles e dá nota para as respostas. Às vezes quem dá a nota é outro modelo.
E quem confere esse modelo?
— Próxima pergunta.
Olha, em 2016 eu tive que aprender Webpack. Agora eu tenho que aprender Webpack?
— Não. Ninguém aprende Webpack mais. O agente sabe Webpack. Também sabe Vite, Turbopack e Rspack, e vai escolher um sem te avisar.
Então o que eu tenho que aprender?
— A dizer exatamente o que você quer. A ler código que você não escreveu. A perceber quando algo está errado com toda a confiança do mundo. A saber quando jogar fora um pull request inteiro e começar de novo. E a não estourar o orçamento de tokens.
Isso parece mais difícil que Webpack.
— E é. Mas ninguém coloca isso no currículo.
Quer saber? Eu mesmo escrevo. Um arquivo HTML e um fetch().
— Ótima ideia. Abre o seu editor.
Pronto.
— Está vendo esse texto cinza que acabou de aparecer?
Sim.
— Aperta Tab.
O que mudou e o que não mudou
A piada em 2016 era que uma página simples ficava soterrada pelas ferramentas que você precisava aprender antes de escrever uma única linha. Você pagava esse custo adiantado, e o stack mudava de novo antes de você terminar de pagar.
Esse custo quase sumiu. Não conheço ninguém que ainda configure um bundler na mão, e não sinto falta. Mas a rotatividade não parou. Ela subiu uma camada: modelos, agentes, protocolos, arquivos de contexto, skills. A diferença é que essa camada trata de como você dá instruções e como você verifica, não de como você constrói. Os nomes mudam todo mês, mas as perguntas de fundo são as mesmas que um bom líder técnico sempre fez: o que exatamente a gente quer, e como a gente sabe que está certo?
O trabalho também mudou de lugar. Na Selenios, boa parte do nosso código agora é escrita junto com agentes, e o custo não apareceu na digitação. Apareceu nas revisões e no CI, que é a história de por que passamos a usar uma merge queue. A página simples aparece em minutos. Decidir se ela está correta, se é segura e se vale a pena mantê-la exige o mesmo critério de sempre.
Se você está começando hoje, meu conselho é sem graça: aprenda HTML, HTTP e JavaScript o suficiente para ler o que o agente escreve e perceber quando ele erra. O instinto do recém-chegado no fim do diálogo, um arquivo HTML e um fetch(), estava certo em 2016 e continua certo. O agente te leva lá mais rápido. Ele não decide por você.
E se alguém escrever isto de novo em 2036, aposto que o recém-chegado ainda vai querer só uma página que mostre dados de um servidor.