2

Código virou commodity: como ensinar programação depois da IA?

Sou professor do nível técnico e profissionalizante, quando comecei a aprender programação escrevia HTML no bloco de notas. Se você já passou por isso, sabe a dor, fechar tag por tag, contar div dentro de div, testar no navegador a cada três linhas pra descobrir onde quebrou. Até que conheci o Sublime Text (que vinha com o Emmet), foi revolucionário. Digitar um div.container>ul>li*5 e ver a estrutura inteira aparecer pronta parecia quase trapaça e até antes disso colocar ! e ver toda a estrutura básica do HTML preenchida com code highlight na tela. (quanta nostalgia relatar isso, tô ficando velho kkkk)

A preocupação do meu professor era que eu não ia aprender a debugar o código, ou que eu ia só copiar e colar do Google ou do StackOverflow. Mas o combo Sublime e Emmet não me tornou pior em HTML. Tirou o trabalho mecânico de digitar tag por tag pra eu gastar atenção em outra coisa: estrutura, semântica, organização. A ferramenta absorveu a parte repetitiva e devolveu tempo pra parte que importava.

Hoje, para meus alunos, a IA é essa mesma escada. Só que um degrau mais alto. É um degrau mais alto num sentido específico, no Emmet eu aprendia uma vez, com sintaxe fixa, e ele funcionava pra sempre. Já a IA cobra outra coisa, comunicar o problema com precisão suficiente pra ferramenta não se perder. O degrau não é só mais alto, é de um tipo diferente, agora a ferramenta exige uma competência de análise e comunicação que o Emmet nunca exigiu.

IA não é ruptura, é continuação, cada geração de ferramenta reduziu o atrito de escrever sintaxe. O autocomplete e o intellisense integrado das IDEs definiram um padrão que nós programadores não vivemos mais sem. A IA generativa faz isso agora, em escala muito maior, praticamente para qualquer linguagem, qualquer stack.

O erro, ao meu ver, é tratar essa mudança como ameaça moral, como se o aluno que usa IA estivesse colando, quando na verdade ele está utilizando um dos recursos disponíveis. O problema não é a ferramenta, é o que deveríamos cobrar nos cursos considerando a existência dessa ferramenta como algo inerente aos sistemas que temos hoje.

Código virou commodity (e o que isso significa de verdade)

Tenho ouvido essa frase com frequência: "código com IA virou commodity." Concordo, mas vale explicar a lógica por trás, porque commodity não é depreciação, é economia.

Quando algo fica abundante e barato de produzir, o valor de mercado dele cai, e migra pra outro lugar. Foi assim com energia elétrica, com armazenamento em nuvem e está acontecendo agora com a escrita de código.

Escrever uma função que funciona ficou barato. Qualquer IA generalista entrega um CRUD, um formulário validado, uma tela responsiva, em segundos. O que continua caro, e escasso, é saber qual função escrever, é a capacidade de analisar que stack ou infraestrutura usar e não apenas contar com a inferencia da LLM que estiver utilizando.

Ensinar programação como "aprender a linguagem" sempre treinou justamente a parte que acabou de ficar barata.

O que isso muda no que se ensina

Se sintaxe parou de ser o gargalo, o eixo do ensino precisa deslocar. Não é ensinar menos linguagem, é reconhecer que decorar sintaxe deixou de ser o que separa um bom profissional de um profissional mediano.

O que continua tendo valor é a capacidade de entender problemas, saber organizar arquitetura e seguir boas práticas de desenvolvimento. Tarefas essas que exigem do programador um olhar cuidadoso e planejador, mais do que apenas reconhecimento de padrões e replicação de tutoriais.

Um padrão que eu já via antes da IA aparecer

Antes de falar de IA especificamente, vale registrar algo que percebo há mais tempo, dando aula de ferramentas como, por exemplo Excel, PowerPoint e Photoshop (sim, sem nenhuma relação com programação, porque isso é sobre aprendizado e independente de disciplinas).

Quando o conteúdo pede pra replicar um caminho já demonstrado, a adesão é quase total. A turma pega rápido, reproduz o passo a passo, sai satisfeita com o resultado, mas quando a tarefa exige investigar por que algo não funciona, ou montar um raciocínio do zero, uma parte da turma recua. Não é todo mundo, e quem topa a dificuldade aprende e se desenvolve de verdade. Mas o padrão de resistência ao raciocínio, e conforto com repetição, aparece antes mesmo de qualquer IA entrar na sala.

Isso importa porque explica o que aconteceu na prova que conto a seguir.

Numa prova prática do curso técnico em Informática, pedi que duplas replicassem, apenas em HTML e CSS, uma tela de login que eu tinha disponibilizado no Figma. Uso de IA liberado e haviam critérios explícitos: estados de hover, estado de foco, tipos de input corretos, placeholders e adaptação de layout entre mobile e desktop.

Vale registrar que essa prova seguia a ementa do curso. O foco era garantir que o aluno dominasse a sintaxe de HTML e CSS para replicar com fidelidade uma interface já especificada. Era isso que o curso exigia, seguindo a base definida pelo CNCT, órgão que regulamenta o curso técnico.
E é aí que está a tensão que eu mesmo aponto neste texto. A ementa ainda cobra uma parte que a IA já consegue resolver sozinha.

As duplas começaram direto no ChatGPT ou no Claude web e bateram rápido no primeiro obstáculo. Sem instrução adequada, a IA corrigia um detalhe e quebrava outro, o layout era genérico, bem diferente do modelo disponibilizado. Ajustava o hover e perdia o alinhamento mobile, corrigia o input e esquecia o placeholder. (Preciso confessar que me diverti com esse evento rs')

Em algum momento da prova ouvi um aluno soltar, entre risos frustrados: "essa IA é muito burra!”. Foi cômico, mas revelou exatamente o padrão que descrevi antes. A IA não estava burra. O aluno não sabia especificar o que precisava, porque especificar exige a mesma análise que ele evita quando a tarefa não vem como passo a passo pronto.

Depois da prova, dei um aulão sobre engenharia de prompt para ensinar técnicas básicas como few-shot, cadeia de raciocínio (chain of thought), meta-prompt, Follow up, entre outras, com o objetivo de pedir de forma mais clara o que esperamos da IA. Nas atividades seguintes, dava pra notar com clareza quem tinha absorvido aquilo, melhoraram não porque decoraram um prompt mágico, mas porque aprenderam a pensar o problema antes de pedir a solução.

A proposta: Código como solução, não como exercício

O que tenho feito, com a intenção de corrigir essa defasagem, é trocar enunciados de execução por enunciados de decisão. Em vez de "faça uma página de login", passo algo como "crie um sistema de autenticação que não peça senha ao usuário." A diferença parece pequena, mas muda o exercício inteiro: o aluno não tem uma resposta pronta pra colar, porque agora ele precisa escolher entre magic link, OAuth de terceiros ou passkey, e defender por que essa escolha faz sentido pro caso que ele está resolvendo. A IA ajuda a implementar qualquer uma das três. Nenhuma delas a IA escolhe sozinha.

É esse o deslocamento que defendo aqui. O aluno que sai da formação, seja qual for o nível, sabendo decorar sintaxe perde pro primeiro modelo de IA generalista. O aluno que sai sabendo olhar um requisito, comparar as opções e decidir a arquitetura certa, esse continua tendo valor, com ou sem IA na mesa.

Entendo que faz parte do processo de ensino e aprendizagem adaptar-se às novas realidades e que os alunos sempre estarão buscando facilidades. Por isso, escrevo como alguém que já trocou o bloco de notas pelo Sublime, o Sublime por IDEs com autocomplete, e agora convive com IA generativa em sala de aula e como desenvolvedor que vem aprendendo como aperfeiçoar a cada dia o uso dessas inteligências artificiais. A ferramenta muda, porém o que forma um bom profissional não muda: a capacidade de pensar o problema antes de escrever a solução.

É importante pontuar que essa mudança não é responsabilidade exclusiva do professor. Ele está na linha de frente dessa batalha, mas cumpre o que a equipe pedagógica define ao montar a ementa, não decide sozinho o que vai ensinar. E hoje não existe regulação do MEC ou do CNE que preveja o ensino de IA como parte obrigatória da ementa ou do conteúdo básico dos cursos de tecnologia. O que existe é uma recomendação da Sociedade Brasileira de Computação pra incorporar IA ao currículo. Recomendação, não exigência.

O professor que ainda cobra só sintaxe não está errado nem desatualizado por escolha própria, está seguindo a regra do jogo que ainda está em vigor. Por isso meu apontamento mira menos a sala de aula e mais a ementa dos cursos que nossas instituições oferecem hoje, em todos os níveis de formação em tecnologia, do ensino técnico e profissionalizante até a pós-graduação. A tecnologia muda rápido, e falta ainda encontrar o método mais rápido e eficaz de traduzir essa mudança em conteúdo pedagógico, antes que a defasagem vire algo estrutural.

Quem também dá aula de programação: já percebeu esse mesmo padrão nos seus alunos? O que você acha que falta pra sermos mais eficazes nesse sentido? Comenta aí embaixo.

Carregando publicação patrocinada...
4

Discordo fortemente que código virou commodity. Isso só vale para quem fazia código ruim, repetitivo, e que já era desnecessário. Isso é mais uma das coisas que vêm sendo repetidas sem ter dados que comprovem, sendo apenas percepções em cima de observações equivocadas, muitas vezes feitas por pessoas com pouca experiência qualitativa. Ou pior ainda, a pessoa só está repetindo o que estão dizendo por aí.

Código está ficando abundante, mas não está barato de produzir. E essa abundância não é algo boa. Não é que está abundante com excelente qualidade, está abundante em podridão. Isso é problema, não benefício. Não tem nada de economia nisso. Estamos voltando ao problema que já era conhecido há muitas décadas, medir evolução do projeto pela quantidade de linhas de código. Está mais uma vez ignorando que o melhor código é o que não existe.

Essa ideia de que a IA está criando código rapidamente sem enormes desperdícios e sem adicionar muita podridão eu só começo mudar de ideia o dia que alguém apresentar pelo menos um projeto decente que não seja assim. EU não vi um sequer até hoje. Vi pequenos projetos com necessidades muito limitadas, vi código duas, três ou mesmo dez vezes maior do que deveria ter. Isso não é economia.

Falei um pouco sobre essa questão das pessoas não saberem fazer abstrações, eliminar repetições, organizar o código, em https://www.tabnews.com.br/maniero/ce6fbf87-5bf0-49aa-80ef-dcf6cbe6f76a.

Sempre vejo muito as pessoas falarem sobre criar boilerplate de CRUD. Mas porque as pessoas fazem tanto isso. Provavelmente porque aprenderam errado e continuam fazendo errado, e ensinam errado fazendo algo que não deveria ser necessário. A IA gerar isso apenas está consolidando o erro.

Eu entendo que a maioria das pessoas não conseguem compreender o que estou dizendo, se ela não aprendeu abstrair bem desde o começo, é complicado ver isso. Então o jeito de ensinar precisa mudar para resolver um problema anterior, não o problema da IA.

Se a pessoa souber usar a IA pode escrever código melhor que a pessoa faria, não porque ela fará algo sensacional, mas porque a pessoa escreve algo muito ruim. Claro que a pessoa que escreve algo muito ruim, não sabe pedir para a IA produzir algo bom. E ela não sabe avaliar depois se a IA escreveu algo bom. Quem aprendeu falar "trabaio" em vez de "trabalho" ou escrever "á 10 anos atrás" em vezes de "há dez ano atrás s" não vai magicamente fazer o certo, não basta ela ver que a boa parte das pessoas fazem o certo, alguns lugares que são referência, como novelas, falam certo, ela precisa se comprometer a fazer o certo, o que implica primeiro admitir que está fazendo errado.

Até é verdade que se ensinou a linguagem em vez de aprender programar, mas isso se deve a professores ruins e uma atitude por parte do aluno (ou pais) que não consegue acompanhar o aprendizado de programação, que é matemática, mesmo que algumas pessoas neguem isso, então para o professor não parecer ser ruim, porque é assim que ele será visto, ele finge que ensina a programar. Ensinar corretamente afasta alunos. Isso deveria ser comemorado, mas como geralmente o professor tem conflito de interesses, ele faz o que o aluno quer, não o que ele precisa.

Seguir boas práticas é exatamente essa decoreba que o aluno não deve fazer. A pessoa tem que entender o que está fazendo, reproduzir o que alguém disse é o mesmo que aprender sintaxe. Se não mudar essa forma de ensinar, continua fazendo o que a IA sabe fazer melhor. Peça para ela seguir boas práticas. Ela faz razoavelmente bem. Até piorando a solução porque ela aplica cegamente. E o programador que é cego nisso vai adorar.

Ou seja, tem que ensinar do jeito que sempre deveria ter sido feito. Quem aprende programarquestiona tudo, não aceita nenhuma verdade dita sem passar pelo crivo de estudo real baseando-se em todos os fundamentos. Dà muito trabalho, é cansativo, exige muito comprometimento e capacidade de raciocínio. Admito, é muito difícil. É mais fácil a decoreba.

Excel tem tudo a ver com programação. Pelo menos em cenários que vão além do que nem precisava de uma planilha.

Até por estar trabalhando em um projeto que exige bastante de alunos, tenho me debatido com a ideia de ensino baseado em projetos porque vejo até bons resultados, mas também resultados bem ruins, em muitos casos a pessoa cai na ação de entregar algo, custe o que custar, mesmo que não tenha ajudado a aprender algo. A pessoa pesquisa na web, no SO ou pergunta para a IA, faz algo e aprende pouco ou nada. Ela aprende a se virar, mas pode ter aprendido errado, mesmo que entregue o resultado esperado. Isso é um problema difícil de resolver. A solução de obrigar o aluno estudar certos pontos e não poder pesquisar fora também não funciona bem.

Eu ainda tenho a impressão que aprendizado inicial não deveria usar IA. Se a IA é apenas uma ferramenta de produtividade e não algo revolucionário, então ela deveria ser usada quando vai ensinar a ser produtivo. O início não é para se rprodutivo. Mas ainda preciso estudar mais, criar um pensamento, testar e debater mais.

Como professor desde a década de 90 até há alguns anos e imerso no Stack Overflow descobri que cada ano claramente as pessoas, no geral, sempre tem exceções chegam com mais limitações queantes. A escola está falahando muito com essas pessoas, provalmente por causa do fingimento. Não sei o que fazer, hoje a única solução que eu tenho, para não fingir, é deixar quem não tem condições para trás. Não é legal, mas não sei o que fazer em casos assim.

Um amigo meu, professor na Unicamp e era na Unesp, desistiu da última porque, segundo ele, os alunos ali já estavam chegando em um estado que ele tinha que explicar "o que é uma mesa" e ele não era capaz de fazer isso. Eu também não sei, metaforicamente, claro, eu preciso que o aluno entenda bem isso para usarmos a mesa para criar uma solução.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui).

1

Sou totalmente novo na área de desenvolvimento. De alguma forma, o Flutter me escolheu. Como aluno do curso da prefeitura de Blumenau, o programa +Devs2Blu, posso dizer que estudar sem IA tem sido muito desafiador. Me identifico com quem fica desconfortável diante de questões que exigem raciocínio diferente e, sem saber por onde começar, corre para a IA como salvação. Tenho tentado usá-la apenas como ferramenta de aprendizado, não para ganhar a resposta pronta, mas para entender a lógica que deveria estar usando para resolver o problema.

Gostaria de uma dica: o que você recomenda para quem começou a estudar programação de verdade há pouco mais de um mês? Acabei de terminar lógica e agora estamos aprendendo versionamento com Git e GitHub. Saí de Java para Flutter em menos de dois meses porque passei em um concurso. Flutter não era minha primeira escolha, mas foi a oportunidade que apareceu e aceitei.

Sobre seu texto, você está certo: as ementas escolares, cursos e faculdades estão desatualizadas. Hoje, usar IA para fazer aquilo que economiza tempo virou quase um crime em qualquer instituição. Eu mesmo fico envergonhado quando preciso abrir o Claude ou ChatGPT para tirar uma dúvida.

1

Fala Bruno,
Em primeiro lugar, você está no caminho certo, usar a inteligência artificial para entender os processos, o porquê de algumas funções, entender um código que está confuso não é um problema. Eu sou programador há mais de 10 anos e hoje faço isso sempre que algo parece confuso pra mim ou as vezes como um "validador" pra enxergar detalhes que talvez eu tenha deixado passar. Então não tem porque ter vergonha de usar os recursos que você tem, a IA deve servir para potencializar seus estudos.

Quanto ao que estudar nesse periodo, foca em aprender lógica de programação(e pratique isso durante toda sua carreira), porque é isso que fundamenta todas as linguagens. Com uma boa lógica, aprender novas linguagens de programação será como aprender um novos idiomas.

Git e Github são fundamentais, versionar o código vai te ajudar a manter tudo organizado e te habilita a trabalhar de forma colaborativa. A partir dai eu tentaria focar no básico de frontend (HTML e CSS), porque você usa isso nos principais frameworks (Vue, Flutter, React) mas com o "formato" de cada um.

E aqui vai mais uma dica sobre o uso da IA. Ao invés pedir pra IA fazer algo por você, fala pra ela o que você entendeu e pede que ela esclareça os pontos onde você acertou, errou ou nem pensou. Perguntas assim SEMPRE vão te ensinar algo, vão te expor a algumas informações que você não chegaria sozinho de forma fácil.

Espero ter ajudado de alguma forma. E se ainda restar alguma dúvida é só falar, é sempre bom poder colaborar.