Ainda Vale a Pena Aprender a Programar Se a IA o Faz?
Ouvir o artigo (experimental) · 07:41

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.
Ler a seguir
AIA Linguagem Que Conheces Ainda Importa?
Um modelo escreve agora qualquer linguagem com fluência. Isso torna inútil a metade barata de conhecer uma linguagem e torna a metade cara mais valiosa do que alguma vez foi.
AIDe onde virão os próximos seniores?
A IA está a devorar exatamente o trabalho em que os programadores juniores costumavam aprender, a contratação para lugares de entrada está a colapsar de forma mensurável, e todo o sénior capaz de validar o output de uma máquina foi um dia um júnior a quem alguém pagou para se enganar. Sobre o DHH a contratar por «até onde é que conseguem ir», as 2.200 pessoas que se candidataram, e porque é que uma indústria que deixa de fabricar seniores percebeu mal a sua própria cadeia de abastecimento.