Todos os artigos

Ainda Vale a Pena Aprender a Programar Se a IA o Faz?

Ouvir o artigo (experimental) · 07:41

00:00 / 07:41

Um campo denso de linhas de código a esbater-se na escuridão, sob uma constelação esparsa de nós de discernimento que permanece acesa

Duas perguntas que os programadores não param de fazer são, no fundo, a mesma pergunta. Uma questiona se é um desperdício passar anos a aprender a programar se a IA vai ter substituído os programadores dentro de dez. A outra vem de um estudante que anda a aprender front-end sozinho pelo YouTube, a reescrever de memória o código de cada tutorial, discretamente inseguro sobre se está a construir compreensão ou apenas a memorizar padrões. Uma é o medo macro: a profissão vai desaparecer. A outra é o pessoal: estarei sequer a aprender alguma coisa. São a mesma dúvida vista de pontas opostas. Vale a pena construir a competência à mão quando a máquina consegue produzir o resultado?

A resposta é sim. A razão não é a confortável a que os otimistas costumam recorrer.

O consolo é frágil

A resposta habitual é que esta profecia é antiga. A substituição dos programadores é prevista em ciclos desde Herbert Simon em 1960, e de cada vez os anos passam e há mais programadores do que antes, não menos. A IA alucina. É uma assistente falível, não uma substituta. Tudo isto é verdade, e tudo isto é um pouco confortável demais.

A versão mais afiada do contra-argumento não defende que a IA programa bem. Defende que se a IA programa bem ou não é irrelevante. A tradução profissional foi "completamente esvaziada" pela tradução automática, e os tradutores tinham dado exatamente os mesmos consolos que os programadores dão agora. O que decidiu o destino deles não foi a qualidade. Foi que os clientes acabaram por se contentar com mais barato, mais rápido, pior. Reformula-se todo o debate assim e deixa de ser "a IA consegue programar?" e passa a ser "quão boa tem de ser antes de alguém deixar de te pagar por isso?".

Não vou fugir a isso, porque tem um gume real, e o gume atinge um grupo específico. Quando um programador experiente mais a IA absorve o trabalho de vários juniores, as perdas aparecem primeiro no nível de entrada. O degrau de baixo da escada está a ser puxado para cima. E nenhum dos lados, otimista ou pessimista, tem uma resposta real para como se faz crescer a próxima geração de seniores quando os empregos de júnior que os formavam desaparecem. Se alguém te diz que programar é perfeitamente seguro, está a vender-te conforto.

Porque é que o argumento a favor de aprender ficou mais forte

E, no entanto, o argumento a favor de aprender a programar não enfraqueceu. Inverteu-se.

A coisa mais incisiva que já ouvi alguém dizer sobre isto é uma frase sobre o que uma IA de facto faz quando lhe pedes para explicar código: vai explicar-me o que o código faz, coisa que eu já sei, porque consigo ver o código eu mesmo. O conhecimento pelo qual um programador é pago não está no código. A intenção, a razão por que se tomou uma decisão, a restrição que não está escrita em lado nenhum, a história por trás de por que é assim e não da forma óbvia, nada disso se consegue ler no código-fonte. Portanto uma máquina que lê o mesmo código-fonte também não o consegue produzir.

É isso que traça a verdadeira linha. A IA é muito boa na camada do "quê": a sintaxe, o boilerplate, a cola, a repetição do que o código faz de forma óbvia. Não toca na camada do "porquê": decidir o que construir, codificar a intenção, raciocinar sobre se a coisa está de facto correta, segurar o contexto que não vive no ficheiro de ninguém. A produção mecânica de sintaxe está a ser automatizada, e aqui está a parte que o estudante ansioso tem ao contrário: essa nunca foi a parte difícil, nem a parte valiosa.

O que significa que a causalidade corre no sentido contrário. "Para quê aprender aquilo que a IA está a automatizar?" Porque a IA automatizá-lo é precisamente o que torna a outra coisa escassa. Quando toda a gente consegue gerar o resultado e quase ninguém consegue dizer se o resultado está certo, dizer se está certo passa a ser o trabalho inteiro. E esse discernimento não se compra nem se lá chega à força de prompts. Ganha-se aprendendo os fundamentos à maneira difícil, os mesmos fundamentos que a máquina agora te entrega de graça.

A versão do principiante tem uma resposta mais afiada

Isso reformula também a pergunta mais pequena do estudante. O veredito quase unânime, sempre que isto surge entre quem ensina, é que os principiantes em particular não se devem apoiar na IA, e a razão não é nostalgia. É que um novato não consegue distinguir um resultado correto de um resultado confiantemente errado, e distinguir esses dois é toda a competência que ele ali está para construir. A afirmação confiante de que na era da IA aprender a programar se tornou extremamente fácil, de que não fica nada por perceber, desfaz-se ao primeiro contacto, porque toda a gente que de facto aprendeu alguma coisa sabe que "não ficar nada por perceber" é a sensação exata de não se ter percebido nada.

A frase a que as pessoas recorrem é que a aprendizagem não vem de escrever, vem de resolver problemas. Está certo, mas subestima o que o estudante já estava a fazer. Reescrever código de memória força a evocação em vez do reconhecimento, e é na evocação que a memória de facto se forma; é uma técnica real, não um desperdício. A solução não é parar. É subir de nível: pega na técnica, não no projeto, e reconstrói-a num sítio onde o tutorial nunca foi. Uma todo list transforma-se numa caixa de receitas. Depois ficas encravado, e lês a documentação, e desencravas. O ficar encravado não é a falha em aprender a programar. É o mecanismo, e é exatamente o passo que uma máquina fará de bom grado por ti se a deixares. É essa a armadilha.

O que está em jogo para mim na tua resposta

Tenho algo em jogo naquilo que decides, e devo ser claro quanto a isso. Construo ferramentas que geram código. Uma delas transforma uma frase num plano e abre os seus próprios pull requests. Cada um desses pull requests não vale nada sem um humano que perceba de código o suficiente para o ler e dizer que não. As máquinas que construo são exatamente tão seguras quanto o discernimento da pessoa que revê o que elas produzem, e nem um pouco mais.

Por isso, quando digo a um estudante para aprender os fundamentos à maneira lenta, não estou a ser sentimental em relação a um ofício. Estou a descrever o único trabalho que as ferramentas não conseguem fazer por si mesmas, e o único que se torna mais valioso de cada vez que elas melhoram.

Programar não está a tornar-se obsoleto. A parte que uma máquina consegue escrever é que está, e essa parte nunca foi aquilo pelo qual te pagavam. O que resta é a parte a que só chegas depois de penares pela parte que está a ser automatizada: saber o que construir, e saber quando a máquina se enganou. Aprende a programar. Não apesar da IA. Por causa dela.

Perguntas a que este artigo responde

  • Ainda vale a pena aprender a programar se a IA escreve o código por mim?

    Vale, e o argumento a favor inverteu-se em vez de enfraquecer. A IA é muito boa na camada do quê, a sintaxe, o boilerplate, a cola, a repetição do que o código faz de forma óbvia, e não toca na camada do porquê: decidir o que construir, codificar a intenção e raciocinar sobre se a coisa está de facto correta. Quando toda a gente consegue gerar o resultado e quase ninguém consegue dizer se o resultado está certo, dizer se está certo passa a ser o trabalho inteiro, e esse discernimento não se compra nem se lá chega à força de prompts.

  • A tradução automática esvaziou a profissão de tradutor. Porque é que com a programação seria diferente?

    A objeção tem um gume real e não deve ser contornada. O que decidiu o destino dos tradutores não foi a qualidade, foi que os clientes acabaram por se contentar com mais barato, mais rápido, pior, e a mesma pressão atinge com mais força o nível de entrada no software, onde um programador experiente mais a IA absorve o trabalho de vários juniores. O que essa pressão não alcança é a parte do trabalho que nunca esteve no ficheiro: a intenção, a restrição que não está escrita em lado nenhum, a razão por que uma decisão foi assim e não da forma óbvia. Quem te diz que programar é perfeitamente seguro está a vender-te conforto.

  • Um principiante deve usar IA enquanto aprende a programar?

    Não, não nos fundamentos, e a razão não é nostalgia. Um novato não consegue distinguir um resultado correto de um resultado confiantemente errado, e distinguir esses dois é toda a competência que ele ali está para construir. A afirmação de que na era da IA aprender a programar se tornou extremamente fácil, de que não fica nada por perceber, desfaz-se ao primeiro contacto, porque essa é a sensação exata de não se ter percebido nada.

  • Reescrever de memória o código dos tutoriais é perda de tempo?

    Não. Reescrever de memória força a evocação em vez do reconhecimento, e é na evocação que a memória de facto se forma, por isso é uma técnica real e não um desperdício. O que lhe falta é subir de nível: pega na técnica, não no projeto, e reconstrói-a num sítio onde o tutorial nunca foi, para que uma todo list se transforme numa caixa de receitas. Depois ficas encravado, lês a documentação e desencravas, que é exatamente o passo que uma máquina fará de bom grado por ti se a deixares.