TL;DR;
- A principal habilidade para usar bem a IA é saber julgar e corrigir a qualidade do resultado, e essa habilidade tende a enfraquecer justamente quanto mais se depende da IA
- Segundo a teoria das "dificuldades desejáveis" de Bjork, informações processadas com facilidade não permanecem na memória de longo prazo
- No estudo de Roediger & Karpicke (2006), a taxa de retenção de memória após uma semana foi cerca de 50% maior no grupo de prática de recuperação do que no grupo de releitura repetida
- Quando a IA escreve o código no lugar da pessoa, até a carga cognitiva relevante (
germane load) é eliminada, fazendo desaparecer a própria oportunidade de formar esquemas mentais
- Quanto mais experiente é o desenvolvedor, menos carga o cérebro sofre apenas ao ler a saída da IA, por causa da eficiência neural
- Mesmo antes da IA já existia um caminho que levava à estagnação do crescimento, mas a IA remove drasticamente o atrito desse caminho
Resumo detalhado
O paradoxo de que, para usar bem a IA, é preciso conhecer código
- Há muita gente capaz de dizer "faça isso", mas bem menos gente consegue olhar para o resultado da IA e corrigir de forma concreta com observações como "essa estrutura é frágil a mudanças" ou "essa interface tem duas responsabilidades"
- Essa capacidade é quase uma intuição formada por inúmeras experiências de falha, depuração e refatoração
- Aprender a usar IA e aprender padrões de código não são alternativas excludentes; a segunda é a base da primeira
- "O desenvolvedor que consegue aproveitar melhor a IA é aquele que consegue julgar código mesmo sem IA"
O cérebro não memoriza quando tudo é fácil
- "Dificuldades desejáveis", de Bjork: quando há nível adequado de dificuldade e resistência no processo de aprendizagem, o desempenho de curto prazo piora, mas a retenção de longo prazo e a transferência melhoram
- Roediger & Karpicke (2006): experimento de releitura repetida vs prática de recuperação
- Teste após 5 minutos: o grupo de releitura repetida teve desempenho melhor
- Reteste após uma semana: a taxa de retenção de memória do grupo de prática de recuperação foi cerca de 50% maior
- No grupo de recuperação ativa, a conectividade entre hipocampo e córtex pré-frontal foi fortalecida, e também houve aumento da ativação da rede sensório-motora
- No estado de aprendizagem passiva, o cérebro ativa apenas a conexão entre hipocampo e giro fusiforme — algo mais próximo de "estar vendo a informação sem realmente processá-la"
- Efeito de geração (Slamecka & Graf, 1978): o grupo que completou diretamente pares como "quente-fri___" apresentou retenção significativamente maior do que o grupo que apenas leu os pares completos
- Ilusão de fluência: a sensação de conseguir processar uma informação com facilidade leva à falsa impressão de que ela será bem lembrada
Habilidade de programação é memória procedural
- Grande parte da habilidade de programar é memória procedural — como andar de bicicleta, uma vez incorporada, passa a ser executada automaticamente sem consciência explícita
- Modelo ACT (Adaptive Control of Thought) de Anderson: 3 etapas na formação da memória procedural
- Etapa cognitiva: tudo é executado conscientemente, passo a passo, consumindo quase toda a memória de trabalho
- Etapa associativa: procedimentos individuais são integrados e podem ser executados como um fluxo único
- Etapa de automação: execução automática ocupando quase nada da memória de trabalho — a folga restante pode ser usada para julgamentos de design
- A passagem entre etapas só acontece por meio de repetição e execução direta
- Chunking (estudo de xadrez de Chase & Simon): a diferença entre especialistas e iniciantes não está no número de slots da memória de trabalho, mas na quantidade de informação que cabe em um único chunk
- Mestres de xadrez reconhecem não posições individuais das peças, mas padrões significativos como "uma disposição típica de meio-jogo da Defesa Siciliana" como um único chunk
- Isso foi demonstrado pelo fato de que, em um experimento com disposições aleatórias, a diferença entre mestres e iniciantes desapareceu
A IA atrapalha esse processo
- Ao delegar a implementação à IA, até a carga cognitiva relevante (
germane load) é processada por ela — a própria chance de construir esquemas mentais desaparece
- Pela perspectiva da memória procedural: o tempo de esforço na etapa cognitiva diminui, a transição para a etapa associativa é retardada e chegar à etapa de automação fica mais difícil
- Ler código gerado pela IA corresponde, no experimento do efeito de geração, a "ler pares de palavras completos" — parece que você entendeu, mas isso não se fixa profundamente
- Quanto mais experiente o desenvolvedor, mais ele processa código com menos recursos por causa da eficiência neural → ler a saída da IA quase não impõe carga ao cérebro
- Ao escrever código diretamente, as sinapses são ajustadas por um loop de previsão–feedback; já ler código pronto de IA não passa de uma interpretação posterior em que o processo de previsão foi omitido
- Isso é especialmente grave para juniores: se a IA faz com que eles pulem essa etapa quando ainda têm muitos padrões na fase cognitiva, eles acumulam tempo de carreira sem formar memória procedural
Como impor carga ao cérebro
- Antes de delegar à IA, escrever primeiro a própria proposta de design: usar intencionalmente o efeito de geração — no processo de comparar e avaliar a saída da IA, as áreas cerebrais de processamento semântico e controle executivo são ativadas ao mesmo tempo
- Fazer revisão de código com seriedade: perguntar conscientemente "por que essa estrutura?" e "se eu tivesse de mexer nisso daqui a 6 meses, onde surgiriam problemas?" — o próprio incômodo é uma dificuldade desejável
- Reservar tempo para escrever código diretamente: isso é insubstituível para formar memória procedural — quando travar, pedir à IA apenas a dica mínima, e não a resposta completa
- A estratégia ótima para produzir e para aprender não é a mesma: a IA é excelente como ferramenta de produção, mas tem limites como ferramenta de aprendizagem
- No fim, o que ficou no cérebro é o que determina a qualidade da revisão de código, a precisão do julgamento de design e, paradoxalmente, a própria capacidade de usar bem a IA
20 comentários
Pessoalmente, tenho sentido na pele o quão ruim a IA é na minha área de especialidade. Imagino que o mesmo valha para especialistas de outras áreas. Claro, ela ajuda bastante. Embora eu tenha que passar o dia inteiro escrevendo documentos cheios de detalhes, isso ainda está longe de se comparar à produtividade de antes.
A atenção é formada pela regra da maioria.
Agentes de verificação só precisam passar pela função de avaliação.
A maior parte do bom código industrial não é pública.
Open source é código feito para ser mostrado.
É preciso sempre usar a IA tendo isso em mente.
Concordo. Em áreas de domínio altamente especializadas, como aeroespacial, medicina e controle de precisão, os dados centrais ficam rigorosamente isolados em redes internas fechadas, e para acessá-los é preciso ser um insider essencial ou, se for externo, pagar um custo considerável e assinar um NDA para que sejam abertos com muita dificuldade. A maior parte dos dados com que a IA aprende são públicos na internet e, no caso de serviços web/app baseados em Python e JavaScript, algum nível de automação total é possível.
Como os algoritmos de gráficos 3D e baseados em CAD usados em domínios avançados estão espalhados de forma fragmentada pela internet ou simplesmente não existem nela, a IA também acaba conseguindo produzir apenas resultados superficiais com vibe coding. Acho que uma abordagem segura e realista é manter um agente principal e, injetando continuamente o contexto do domínio em nível de microgerenciamento, desenvolver não por automação total conduzida pela IA, mas por um método de amplificação contínua liderado diretamente pelo desenvolvedor, no ciclo Planning → Redirection → Review.
Eu também ainda sinto que me falta muito na minha área de especialidade, então tomo cuidado partindo do princípio de que, nas áreas em que recebo ajuda, o nível deve ser parecido. Em compensação, como a velocidade de evolução é considerável, pretendo continuar usando isso em tarefas em que esse nível de qualidade já seja suficiente.
É impressão minha ou parece que aqui também tem muitos comentários escritos por IA?
Parece que chegamos a uma distopia.
No fim, os seres humanos acabam escolhendo o caminho mais confortável. Como resultado, mesmo sabendo que conteúdo curto faz mal, hoje praticamente todo mundo consome esse tipo de conteúdo. Da mesma forma, a IA deixará de ser uma opção e passará a ser algo indispensável, e na prática a diferença de produtividade entre usar e não usar será enorme. Isso vale tanto para desenvolvedores quanto para não desenvolvedores. O que muda é apenas o método e a forma. Assim como foi dito no exemplo do celular, em que não precisamos mais decorar números de telefone, hoje em dia, sem navegação, as pessoas já não conseguem dirigir olhando apenas um mapa, e nem fazem questão de memorizar até mesmo caminhos que percorrem sempre.
Isso significa que a habilidade de dirigir, a percepção espacial ou a memória atrofiaram? Não. Com o avanço da navegação, nós passamos a conseguir ir a qualquer lugar, desde que tenhamos um navegador.
Também se fala que o uso de IA provoca uma deterioração da capacidade cognitiva humana, mas eu acho que isso não é deterioração, e sim uma mudança da capacidade cognitiva para outra forma.
Ultimamente também se fala em codar na mão. Concordo que lidar, no âmbito do hobby, com o medo de ver suas habilidades legadas se tornarem obsoletas faz sentido, mas espero que isso não siga na direção de algo como se fosse a resposta certa, do tipo: para melhorar sua base, o desenvolvedor precisa necessariamente codar na mão!
Na verdade, a evolução das linguagens de programação também sempre caminhou, em última instância, na direção de se aproximar gradualmente da linguagem natural, mais familiar aos humanos. E acho que agora estamos justamente nesse período de transição rumo a esse objetivo final.
Esse tipo de conteúdo parece um apego a formas de trabalho do passado. De qualquer forma, a IA acabará fazendo melhor esse tipo de coisa. O importante agora é a experiência de melhorar os pontos que não funcionam bem ao usar IA. Mas também acho que isso será temporário.
Não se limita apenas à programação, claro. A dificuldade desejável não é apenas um slogan batido, mas se baseia em diversas evidências científicas.
Com uma calculadora, memorizar a tabuada parece um apego a um modo de trabalho do passado. De qualquer forma, esse tipo de coisa a calculadora fará melhor. O importante agora é a experiência de melhorar o que não funciona bem ao usar a calculadora. Mas também acho que isso será temporário.
Parece que sempre respondem com uma lógica parecida com essa... Calculadoras não erram contas. Elas cumprem direito o papel delas.
Às vezes eu me preocupo pensando: e se um dia a calculadora quebrar e começar a mostrar que 3 X 3 = 10, e ninguém perceber que isso está errado...? Se isso acontecer no computador do programador que lida com a minha conta bancária... acho que não faz mal nenhum ser cuidadoso.
A frase "uma parte considerável da habilidade de programar é memória procedural" realmente toca muito.
Resolver problemas de matemática também é um ato de memorizar procedimentos e praticar para conseguir produzir o mesmo resultado.
Tudo bem programar com IA, mas parece que ainda precisamos impor carga ao cérebro para conseguir gerar repetidamente resultados no mesmo nível ou acima dele.
É um pensamento breve, mas ultimamente venho pensando nisso. Dizem que, no passado, especialistas em assembly olhavam para desenvolvedores em C e diziam coisas como “não sabem o valor da memória” e “não entendem o hardware”; e, vendo a situação agora, tenho a impressão de que é uma crítica parecida, no mesmo contexto. No fim das contas, do ponto de vista do desenvolvimento de software, talvez estejamos apenas passando a desenvolver em uma linguagem mais abstrata (IA) do que as linguagens de programação existentes até então. Sendo assim, é natural que a especialização nas linguagens usadas antes acabe diminuindo. Ainda assim, assim como até pouco tempo atrás chamávamos de “monstros” os desenvolvedores que trabalhavam com linguagens mais low-level do que as de hoje, talvez agora, mesmo desenvolvendo no vibe, quem ainda entende os princípios das linguagens tradicionais possa passar a ser visto como alguém diferenciado.
“If you're nada sem a armadura, então você não deveria tê-la.” - Tony Stark
Parece que vou ter que passar por algum processo incômodo de propósito.
Fico puto quando vejo desenvolvedores fazendo
vibe codingno modo desligado. A qualidade do resultado deles é uma bagunça, e aí vão dar a desculpa de que foi a IA que escreveu? A responsabilidade é deles.A IA parece usar uma furadeira elétrica, uma motosserra e uma escavadeira. Depois do uso de celulares, há muitas pessoas que nem conseguem mais lembrar o próprio número de telefone.
...pode-se ver essas coisas como um declínio, mas eu vejo como eficiência. Pela minha experiência como desenvolvedor e também tendo atuado em várias outras funções, vejo as ferramentas de IA como instrumentos que ajudam a sair do mundo restrito dos desenvolvedores e a ter uma visão mais ampla. Em um aspecto pode haver declínio, mas esse espaço é preenchido por outras coisas.
Eu também concordo com essa opinião.
No fim das contas, vejo isso como uma ferramenta com trade-offs bem claros.
Também me preocupo se, quanto mais usamos IA, mais nossa habilidade de programar diminui, mas é certo que passamos a pensar em outras questões que antes não fazíamos (ou não conseguíamos fazer).
Pelo menos ao dar instruções para a IA, em vez de jogar algumas palavras curtas, parece ajudar explicar de forma concreta e o máximo possível meus pensamentos e o encadeamento lógico, e depois, antes de prosseguir com a tarefa, fazer com que ela obrigatoriamente pergunte se há algo mais a confirmar antes de continuar.
É um texto que faz lembrar o termo demência digital.