3 pontos por GN⁺ 8 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 8 시간 전
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

    • É parecido com Profession, de Isaac Asimov
      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
    • É uma previsão bastante otimista
      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
    • Tenho um dos últimos notebooks Fujitsu dignos de menção e sou grande fã
      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
    • Para ser um programador produtivo com Claude, ainda é preciso entender o que você está fazendo
      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
    • Está mais para “desenvolvedores mais velhos continuarão criticando a queda da qualidade do código e sentindo saudade dos velhos tempos da programação”
      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

    • A maior parte da programação está mais para lixo descartável; se encanamento fosse tratado assim, estaríamos literalmente vivendo no meio de sujeira grave
      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
    • Parece que os dois estão em lados opostos da mesma cerca
      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
    • A maior parte da programação pode ser assim, mas é provável que a maior parte da música e da literatura também seja um amontoado sem inspiração
      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
    • Não acho nem um pouco exagerado
      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
    • O propósito de artes como música ou literatura é a própria arte
      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

    • Se você de fato não souber programar, esse trabalho de cuidar também é impossível
    • Não está errado, provavelmente
      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
    • Venho dizendo isso há algum tempo e, no fim, mudei completamente de área
      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
    • Parece depender muito da região
      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
    • Fico curioso sobre quais dados você está olhando
  • 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

    • Tudo o que humanos sentem é humano, quer seja querer criar ou não querer criar
      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
    • Tenho lido Seneca ultimamente, e uma das cartas tinha esta frase
      “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
    • Já fiz muita agregação de partidas de Dota2 com stratz / opendota
      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

    • Concordo totalmente
      É 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

    • Hoje não sou mais, mas já fui matemático pesquisador
      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
    • Tenho uma perspectiva oposta, mas a mesma conclusão
      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?

    • Existe uma forma correta de fazer isso
      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
    • Esse tipo de fala atribui retrospectivamente ao código escrito por humanos uma qualidade que ele originalmente não tinha
      Você disse que “ninguém quer construir em cima de código 99% correto ou inchado”, mas, meu amigo, você já usou Windows?
    • Não sei que pessoas são essas que toleram isso
      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
    • As coisas do segundo parágrafo não representam apenas uma pequena fração dos empregos de programação?
      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
    • A recente polêmica do Bun não mostra uma história diferente?
  • 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

    • Exato
      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
    • Se você não sabe programar e só sabe escrever prompts, não há como distinguir uma boa solução de uma ruim
      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
    • Steve Jobs costumava dizer que todos deveriam aprender programação
      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

    • O motivo mais convincente para aprender a programar é exatamente o mesmo motivo para ler muitos livros
      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
    • Gosto muito da frase “para a maioria das pessoas, aprender a programar é como dizer a um programador para aprender Assembly”
      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
    • Certa vez eu disse a um amigo que gosta de matemática que às vezes me pergunto se eu poderia ter crescido sem achar que “sou ruim em matemática”, e acho que é por esse motivo
      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
    • Acho que videogames são abstratos demais para relacioná-los a aprender a pensar como um computador
      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