Aprender a programar ainda tem valor
(stevekrouse.com)- Mesmo na era dos LLMs e do vibe coding, programar continua sendo mais do que uma habilidade para conseguir emprego: é um meio para aprender matemática, métodos de aprendizagem e expressão criativa
- O clima em que “learn to code” era usado como um slogan de rápida ascensão social perdeu força, e algumas linhas de JavaScript não garantem um salário de seis dígitos
- Como nos casos do LOGO e da Mathland, programar faz entender matemática por meio da investigação, em vez de decorar instruções, e treina depuração, composição e lógica ao mesmo tempo
- A programação combina a imaginação da escrita, a precisão da matemática e o feedback imediato dos jogos, refinando o resultado desejado em uma linguagem que o computador possa executar
- Mesmo que os LLMs lidem bem com inglês e código, assim como o valor das humanidades não desaparece, a necessidade de letramento universal em código também permanece
O valor da programação além da garantia de emprego
- Steve Krouse, fundador da Val Town, diz que todos deveriam aprender a programar, mesmo administrando uma “Silicon Valley startup” voltada à escrita e implantação de código
- Em Making Sense with Sam Harris #481, há uma fala no sentido de que a expressão “learn to code” não foi ouvida no Silicon Valley por vários meses
- Em certa época, “learn to code” era repetido como se fosse um caminho rápido para sair da pobreza, mas conseguir encadear duas linhas de JavaScript não traz automaticamente um salário de seis dígitos
- Programar, assim como matemática, literatura, ciência e humanidades, vale a pena aprender não apenas pela utilidade profissional, mas também por razões educacionais
Um meio para aprender matemática e treinar o pensamento
- Programar pode ser um meio poderoso para aprender matemática
- Steve Krouse passou a gostar de matemática por meio de um programa de programação no contraturno escolar e acabou ficando melhor em matemática do que esperava
- Seymour Papert queria que crianças aprendessem matemática como quem aprende a falar, não por instruções, mas por investigação
- A “Mathland” de Papert era a linguagem de programação LOGO, em que se dava comandos a uma tartaruga na tela para que ela desenhasse
- Steve Krouse também criou uma versão do LOGO que pode ser testada online
- No processo de aprender programação, também se desenvolvem metahabilidades como depuração, composição e lógica, além da sensação de que não há nada que não possa ser aprendido
Programação como atividade criativa
- Programar é uma atividade em que se encontram a criatividade da escrita, a precisão da matemática e o ciclo de feedback imediato dos videogames
- Ela faz refinar o que se deseja em uma linguagem precisa que o computador consiga executar
- A atividade é comparada a recitar feitiços, no sentido de aprender uma sintaxe desconhecida e então fazer o computador criar de fato aquilo que se imaginou
- LLMs conseguem escrever bem tanto em inglês quanto em código, mas, assim como a relevância das humanidades não desaparece, o código continua importante
- Assim como documentos jurídicos, o código pode parecer cheio de detalhes difíceis e entediantes, mas é a base sobre a qual o mundo funciona, e uma linha elegante de código pode mudar o mundo
- Programar é uma atividade prazerosa, e mesmo na era dos LLMs o sonho de um letramento universal em código, ou de uma “verdadeira revolução dos computadores”, continua
1 comentários
Opiniões do Hacker News
Mesmo entre as pessoas que já sabiam programar antes dos LLMs, a habilidade de codar já está se deteriorando, e acho que isso continuará pelos próximos 10 a 20 anos
Aprender a programar nesse mesmo período também pode não trazer tanta recompensa
No fim, o único código que treinará os LLMs do futuro será código gerado por LLMs, e a qualidade das bases de código em produção deve cair a um ponto em que as rachaduras vão aparecer: difícil de entender até para humanos e difícil de manter até para LLMs
Quando isso acontecer, programar voltará a ser uma habilidade valiosa, mas, para quem está planejando a carreira, esse momento é incerto, e o mercado pode permanecer irracional por mais tempo do que uma pessoa consegue aguentar
Ainda serão necessárias pessoas que escrevam código diretamente e restaurem o artesanato
Se todo mundo depender de código gerado, só conseguiremos repetir o que já é conhecido; apenas quem aprendeu o caminho difícil por meio de estudo de verdade terá a criatividade e a inteligência para criar novos conhecimentos e novas fitas educacionais
Os pontos 1 e 2, de as bases de código em produção se tornarem incompreensíveis para humanos e difíceis de manter por LLMs, provavelmente acontecerão, mas não acho que o ponto 3, de a programação voltar a ser valiosa depois disso, vá acontecer
Em especial, os executivos vão baixar as expectativas, ou serão forçados a isso
Basta pensar em como é comum uma “versão nova e melhorada” remover funções importantes que as pessoas usavam, sem substituto adequado
Quando a base de código se tornar impossível de manter, é bem provável que simplesmente gerem de novo um novo monte de lixo e chamem de melhoria o que tiver mudado aleatoriamente aqui e ali
Quando a Fujitsu tentou retomar a produção de notebooks cerca de 5 anos atrás, a forma prática foi reunir novamente trabalhadores japoneses aposentados
A geração mais jovem parece não ter as habilidades, ou simplesmente não ter vontade de fazer isso, e parece que a iniciativa terminou depois de algumas rodadas de produção
A Panasonic ainda fabrica notebooks corporativos, mas eles são muito caros, e essa história tem relação direta com este tema
Aprender programação é essencial, e você precisa saber o que é possível e o que é fácil para saber o quanto pode pedir
O que fica menos importante é manter a lâmina sempre afiada
Se você passa um tempo escrevendo menos código, aumentam os erros pontuais ou falhas de copiar/colar, mas, graças aos LLMs, a importância de manter o instinto de programação aquecido diminui
Ainda assim, se eu não soubesse fazer diretamente, acho que não conseguiria realizar meu trabalho nem com o Fable
Enquanto isso, mais pessoas do que nunca criarão e usarão software, e é bem provável que os discursos longos de “tudo está indo por água abaixo” pareçam absurdamente exagerados
A afirmação de que “código é uma forma bela de expressão criativa, tão rica quanto literatura ou música” parece exagerada, e fico me perguntando o quanto o autor conhece de literatura e música
A maior parte da programação está mais próxima de trabalho de encanamento
Você chega, reclama do trabalhador anterior e resolve um quebra-cabeça com restrições próprias
O motivo de os LLMs serem bons em programação é que, em programação, queremos código entediante e comum
Nunca vi um encanador aparecer e xingar quem veio antes; ele mudava algo ou consertava algo que eu tinha quebrado
O resultado funcionava perfeitamente por anos, décadas, mesmo sem eu cuidar muito bem dele
Fazer algo entediante e comum também pode ser chamado de arte, por falta de palavra melhor
Você não pode dar a uma função um nome como se fosse um código abreviado, nem chamá-la de ThisIsTheEntryPointOfTheProgram(); o que é melhor se torna objeto de reflexão e discussão sem fim
Como encaramos trocas frequentes e inchaço como algo normal, damos essas “pequenas” coisas como certas, mas encanadores jamais fazem isso
Eles não introduzem um novo material de tubulação toda semana para depois trocar pela próxima moda, e, como em geral constroem coisas que duram mais do que pessoas, parecem exercer uma profissão de um planeta completamente diferente
A demoscene é programação voltada à diversão e à expressão criativa, e também existe o IOCCC
Isso corresponde a romances escritos de forma criativa
Por outro lado, também há a escrita feita apenas como trabalho, como ao escrever uma base de conhecimento, e isso é a programação tipo encanamento de CRUD e cloud
Ainda assim, há muitos algoritmos belos, como os que aparecem nos livros de Knuth, e pessoalmente os acho mais belos do que qualquer música
Pelo contrário, dá para argumentar que o código tem maior expressividade do que literatura ou música, justamente por ser mais geral
Pense no espaço de todos os videogames possíveis, demos/intros, imagens generativas e música generativa; nada disso seria possível sem código
Acho que você está confundindo os usos comuns de um meio com sua expressividade
Muitos usos da linguagem cotidiana também não são interessantes, mas é preciso olhar para o espaço inteiro de possibilidades
Código é ofício, um meio para um fim
Ainda pode ser belo, impressionante e criativo, mas é de outro tipo
Isso não é um juízo de valor
Arte também pode ser ruim ou sem graça, e código pode ser uma obra genial
Mas o motivo de um módulo lunar ou de um relógio artesanal serem belos é que eles de fato funcionam, e isso é difícil de comparar com música
Como programador profissional entrando no último terço de uma carreira que foi prazerosa, agora coloco aprender a programar na mesma categoria de “ganhar a vida como poeta”
É uma arte realmente prazerosa e alguns reconhecem seu valor, mas é melhor planejar outra forma de sustento
Seniors que já sabem programar parecem estar mais ou menos bem por enquanto, mas o trabalho está cada vez mais virando uma forma de cuidar de modelos como se fossem contribuidores juniores
Lembro de um velho amigo
Ele estudou música antiga em Harvard, fez MFA e era muito talentoso
Lia e escrevia latim e grego, conseguia compor e tocar música em notação medieval, e também publicou um livro sobre bordado antigo
Mas não conseguiu uma vaga na academia, nem encontrou empregos que precisassem dessas habilidades
Morreu sozinho alguns anos atrás
Esse também pode ser o destino de muitos programadores
As pessoas se agarraram à ideia de que LLMs não conseguem substituir desenvolvedores de verdade, e isso é verdade, mas não importa
Para o mercado de trabalho se abalar bastante, basta reduzir o número de pessoas necessárias para lidar com as partes que LLMs não conseguem fazer
Se a eficiência dos desenvolvedores existentes subir apenas 30%, a demanda por desenvolvedores pode cair 20%, e isso tem um impacto enorme na demanda e nos salários
Fora do Ocidente, onde a IA não é adotada, segundo https://hai.stanford.edu/ai-index/2026-ai-index-report, a IA elevou a demanda por software
O que estou tentando fazer agora é construir algo, mas sem escrever código com LLM
Ainda uso para consulta
Estou criando em Elixir um agregador de partidas de torneios de Dota2, que recebe streams de torneios e os organiza em ordem cronológica para reduzir o incômodo de assistir a séries de vídeos contínuas no YouTube
Estou fazendo isso porque gosto de programar e gosto de criar coisas
LLMs me deixam intelectualmente preguiçoso, e criar com eles é menos satisfatório
Eu quero criar, e querer criar é humano
Algumas pessoas preferem certos modos de criação, outras preferem outros, e tudo bem
No fim, acho que muita gente esquece que programação é uma atividade bastante criativa
Colocando de forma um pouco controversa, acho que criar programas está mais perto de pintar um quadro do que de construir uma ponte, para o bem ou para o mal
“A própria imersão de se concentrar no trabalho é profundamente prazerosa. O prazer obtido do produto acabado depois que o trabalho termina não é o mesmo. O artista aprecia o resultado, mas, enquanto pinta, aprecia a própria arte”
O problema dos LLMs é exatamente esse
Eles tiraram de mim o momento de desfrutar a própria arte da programação
Há tantos dados que é realmente divertido, e com certeza me tornou um programador melhor
Pessoalmente, conhecidos que não eram desenvolvedores muito bons antes dos LLMs continuam usando os modelos mais recentes para produzir código ruim
Conhecimento e compreensão sólidos de boa arquitetura e práticas comuns continuam sendo essenciais
É fácil esquecer que os fundamentos e a intuição que hoje damos como óbvios exigiram muito tempo e esforço para aprender quando tínhamos pouca experiência
É um fenômeno que observo o tempo todo
LLMs podem ser uma ferramenta de amplificação de força, mas quem não consegue fazer as perguntas certas ou entender nuances acaba criando código ruim, e só amplifica o que há de ruim nele
Não vejo os modelos atuais conseguindo evitar isso, especialmente porque os dados de treinamento foram, historicamente, produzidos por humanos
Alguém conhece um matemático que não saiba fazer divisão longa ou álgebra básica?
Provavelmente não
Porque matemática básica é necessária para aprender matemática avançada, então uma pessoa assim não existe
O fato de uma calculadora fazer cálculos básicos é irrelevante se você quer ser matemático
Da mesma forma, “daqui a 5 anos o desenvolvedor médio escreverá código à mão?” me parece irrelevante para a questão de se você precisa aprender a programar quando quer dominar o projeto e a construção de software complexo, seja qual for o método usado
Não lembro absolutamente nada de como fazer divisão longa, embora em algum momento certamente eu fosse bom nisso
Hoje também sou péssimo em cálculo mental
Ainda assim, no caminho para me tornar matemático, essas coisas foram essenciais; elas só deixaram de ser relevantes conforme o nível de abstração subiu
Ouvi muitos matemáticos fazerem a piada de que “quanto mais avançado você fica, pior fica em matemática”
A maioria dos matemáticos teria que pensar bastante para resolver um problema de divisão longa, porque passou por essa habilidade há muito tempo
Mesmo assim, apesar das calculadoras e notebooks Python, as pessoas aprendem e fazem matemática à mão em todos os níveis para avançar a área
As pessoas estão tão imersas em LLMs como se fossem todo o futuro, mas os próprios LLMs são inteiramente produtos do passado
LLMs são mais como JPEGs com compressão com perdas da linguagem, e do conhecimento expresso pela linguagem, do que máquinas pensantes
Portanto, para expandir a área e avançar rumo ao futuro, não podemos depender apenas de algoritmos que regressam à média
A codificação que os agentes de IA substituem principalmente não é a camada externa do desenvolvimento?
Coisas como aplicações para usuário final, apps, dashboards e aplicações corporativas
Nessa “casca”, as pessoas conseguem tolerar até certo ponto 99% de precisão ou código inchado, e apps de vibe coding também podem alegar ser “bons o suficiente”
Ainda assim, basta ver em que desastre os apps da Microsoft se transformaram depois da adoção de IA
Mas, nos compiladores, frameworks, ferramentas e bibliotecas essenciais dos quais as pessoas realmente precisam depender, ainda estão evitando LLMs
Ninguém quer construir em cima de código 99% correto ou inchado, e ninguém quer usar um navegador web codificado por IA
Para criar materiais de construção realmente bons, é preciso programar diretamente e saber o que se está fazendo
Onde há algum caso que tenha chegado perto de eliminar gradualmente a codificação nessas áreas essenciais?
Só que se passa muito tempo conceituando e refinando abstrações
O problema é que a conceituação exige um estado mental específico
Antes dos LLMs, eram 10% de pensamento difícil e 90% de implementação
A implementação era uma espécie de recompensa, e a sensação de concretizar ideias em estado de fluxo era muito boa
Depois dos LLMs, com bastante frequência fico apenas andando de um lado para o outro e pensando
Agora está mais para 40% pensamento, 60% planejamento/revisão de código
Desde então, não experimentei mais o estado de fluxo
Pensar é divertido, mas cansativo, e revisar é simplesmente incômodo
Especialmente quando o LLM cai em padrões de falha estranhos
Antes, ao ver código ruim, eu sabia imediatamente o que o autor tinha pensado e por que não funcionava
Agora há menos code smells, mas muitas abstrações mal escolhidas, então é preciso ser muito mais cuidadoso
Diretrizes, de verdade
Você disse que “ninguém quer construir em cima de código 99% correto ou inchado”, mas, meu amigo, você já usou Windows?
Se eu perguntar a amigos e familiares ao meu redor, todos odeiam software lento e inchado
Nem dá para saber quanto tempo e produtividade isso consome
Depois do surgimento dos LLMs, em vez de melhorar, piorou
Se, para ganhar a vida como programador, a situação passar a ser ter que conseguir apenas esses empregos, programação pode acabar ficando muito parecida com esporte
É como poder jogar basquete como amador e até levá-lo mais a sério no ensino médio ou na universidade, mas, para viver de basquete, precisar ser bom o bastante para entrar na NBA
Acho que os argumentos apresentados são muito fracos
Fiquei mais deprimido do que esperançoso, e, se a lógica restante é desse nível, dá a sensação de que a coisa está ficando realmente desesperadora
Desenvolvendo um pouco mais: se codificação é arte, é a pior das artes
Está muito mais perto de algo como Lego, da satisfação obtida ao concluir uma montagem significativa
Talvez o ponto do autor seja justamente esse
Ou seja, como hobby puro, ainda tem valor
A afirmação de que “codificação ajuda em matemática” é igualmente fraca
Certamente ajuda em álgebra, mas, no geral, acho que matemática no estilo de codificação ajuda principalmente em matemática no estilo de codificação
É um tipo estranho de matemática com loops, regras e condicionais, e, se o software não fosse tão mainstream desde o início, ela não teria se tornado mainstream
Ao descascar essa lógica, ela soa mais circular do que como uma afirmação com substância
Aprender a programar é entender um problema, dividi-lo em partes pequenas e gerenciáveis e montá-las de novo
Também inclui depurar e iterar em direção a métricas melhores
Essas são habilidades e formas de pensar extremamente valiosas, transferíveis para outros domínios de resolução de problemas
Mesmo antes dos LLMs, já era bem sabido que, se você não escrevesse um programa por conta própria, não dava para dizer que realmente o entendia
Não há atalho aqui
O melhor que pode fazer é deixar o modelo descobrir por você
Também não sabe projetar uma boa API nem dividir um sistema em módulos
O problema é que muitos gestores não conseguem distinguir bem um bom programador de um vibe coder
Um vibe coder abre muitos PRs
Talvez o próprio gestor também consiga abrir PRs feitos com vibe coding
Eles detestam a ideia de que programadores possam saber mais do que eles
Porque ela ensina a pensar
https://youtu.be/BRTOlPdyPYU
Não é um argumento convincente
Se o melhor argumento para convencer as pessoas a aprenderem a programar é que isso é como notação matemática — ou seja, uma parte da matemática que iniciantes mais odeiam —, ou que é bonito como um violino — ou seja, inútil para quem está começando —, então a programação está em uma crise séria
Acho que um argumento melhor é que ela ajuda a pensar como um computador
Mas, se você quer aprender isso, há muitos videogames que eu recomendaria dominar antes de programar
Para a maioria das pessoas, “aprenda a programar” é parecido com dizer a um programador “aprenda Assembly”
Programo há cerca de 30 anos
Porque isso exercita o cérebro
Um cérebro que consegue organizar, interpretar e entender facilmente lógica básica e fluxo de controle resiste melhor à propaganda e à influência
É o mesmo benefício de ler muitos livros, mas atuando por outros caminhos do pensamento
Você se expõe a mais visões de mundo, passa a pensar de forma mais crítica sobre cada uma delas e aumenta o pensamento crítico em geral
Em uma disciplina universitária talvez se aprenda Assembly, mas fora disso não há motivação
Ninguém queria ler Assembly, e agora ninguém quer ler código
Resolver problemas em si não é difícil
Já vi pessoas reinventarem, sem perceber, blocos “difíceis” de matemática em forma de código
Por isso comecei a pensar que talvez a matemática tenha sido tornada horrível de propósito
A coisa mais útil que aprendi sobre computadores foi construir portas lógicas à mão
Nada me deu uma compreensão mais profunda de como um computador funciona
Programação é a etapa seguinte
Todas as camadas entre uma coisa e outra podem ser preenchidas por inferência, então podem ser puladas
Não é preciso aprender Assembly, mas vale a pena ler um pouco para pegar o jeito
Entender as camadas que vão de portas lógicas a Assembly, programação, jogos e agora IA é parecido com ler o modelo OSI para entender redes
É uma estrutura de camadas de abstração empilhadas uma a uma
O motivo pelo qual vale a pena aprender programação é que ela é a camada de abstração mais alta compartilhada por tudo que vem acima dela
Mesmo existindo centenas de linguagens de programação, os conceitos são em grande parte os mesmos; se você aprende uma linguagem e entende programação, consegue aplicar isso a quase todas as outras
Já os jogos existem aos dezenas de milhares, divididos em centenas de tipos, e, se incluirmos outras aplicações, a árvore de variações nesse nível explode