- O autor, um programador profissional, teve sua convicção de ensinar programação ao filho abalada após a experiência com o GPT-4, e acredita que o valor profissional da programação pode mudar quando a criança tiver idade para digitar
- Ben, um amigo com quase nenhuma experiência recente em programação, usou ChatGPT Plus e GPT-4 para criar rapidamente uma ferramenta de linha de comando, um app de avaliação de palavras no iPhone e código de integração entre microcontrolador e Firebase
- Por muito tempo, programar exigiu paciência, depuração repetitiva e uma compreensão intuitiva dos limites da máquina, a mechanical sympathy, mas a assistência de IA começou a substituir parte da implementação detalhada e do conhecimento obscuro por conversas em linguagem natural
- O GPT-4 ainda fica atrás de programadores profissionais em vários aspectos, e também não é fácil para pessoas comuns usá-lo da mesma forma, mas a forma centaur, combinando programador e IA, mostra uma produtividade diferente da de um humano sozinho ou de uma IA sozinha
- À medida que a importância de programar em si diminui, pode se tornar mais importante decidir o que vale a pena construir, entender do que os usuários gostam e saber se comunicar tanto tecnicamente quanto humanamente
O GPT-4 abalou a convicção profissional em torno da programação
- O autor pretendia ensinar programação de computadores ao filho, assim como seus pais lhe ensinaram a ler e escrever
- Programar era visto como uma nova habilidade essencial, abrangendo desde produção de filmes até física
- Sendo um programador profissional, ele sentiu que o valor da programação talvez já tivesse desaparecido quando seu filho tivesse idade para digitar
- O ponto de virada foi um projeto de hobby com o amigo Ben para criar no computador um palavras-cruzadas no estilo do Times
- Em 2018, eles fizeram um diagrama de sábado com ajuda de software, e os humanos só aplicavam um pouco de gosto pessoal
- Desta vez, queriam criar um programa que gerasse o quebra-cabeça sem intervenção humana
- Ben era forte em hardware, mas tinha pouca e superficial experiência profissional com programação, praticamente parada no nível de quase 20 anos atrás
- Mesmo assim, assinou o ChatGPT Plus e passou a usar o GPT-4 como assistente de programação
- Ele começou a criar por conta própria, com uma velocidade surpreendente, pequenas ferramentas necessárias para o projeto
O desempenho da assistência de IA para programação visto em projetos de hobby
- Ao tentar criar um comando que imprimisse 100 linhas aleatórias de um arquivo de dicionário, o autor pensou no problema, pesquisou e passou por tentativa e erro
- Ben simplesmente disse ao GPT-4 o que queria e recebeu um código que funcionava
- O autor achava que esse tipo de comando já era algo naturalmente chato, que todo mundo pesquisava, e portanto não era “programação de verdade”
- Alguns dias depois, Ben disse que queria criar um app para iPhone que avaliasse palavras do dicionário
- O autor via isso como algo trabalhoso, porque exigiria aprender o ambiente de programação da Apple, uma nova linguagem, componentes de UI e o processo de empacotamento
- No dia seguinte, Ben enviou um app que fazia exatamente o que ele queria e ainda tinha um design bonitinho
- Ben disse que o fez em poucas horas, e que o GPT-4 tinha resolvido a maior parte do trabalho difícil
- Ben também tocou um projeto que ligava um pequeno alto-falante e um LED vermelho a uma moldura com o retrato do rei Charles
- Era um dispositivo em que você digitava uma mensagem em um site, o alto-falante tocava música e o LED piscava em código Morse como se fossem joias da coroa
- O código para buscar novas mensagens exigia conhecimento de microcontroladores e Firebase, algo difícil para Ben
- O GPT-4 sugeriu os recursos adequados do Firebase e um código utilizável no microcontrolador
- Ben também fez com o GPT-4 algo como o jogo Snake dos celulares Nokia
- Após uma conversa curta, ele ainda adicionou um recurso que mostrava o quanto o jogador havia se desviado da rota ideal ao perder
- O autor não tinha certeza se conseguiria fazer essa modificação sozinho
- O GPT-4 fez isso em cerca de 10 segundos
O fascínio da programação e a formação da habilidade
- O primeiro encanto do autor pelos computadores veio no início dos anos 1990, em Montreal, jogando Mortal Kombat com o irmão
- O irmão acessou um servidor FTP no terminal MS-DOS, digitou comandos e imprimiu um código com todas as instruções de fatality do jogo
- O autor o via como um hacker e se fascinou pela busca de lugares e conhecimentos escondidos
- A frase “meu crime é a curiosidade”, de “The Hacker’s Manifesto”, e o filme “Hackers”, de 1995, reforçaram essa sensação de que conhecimento é poder
- No filme, Dade Murphy reconhece livros de computação só pela capa e controla os sprinklers da escola e o equilíbrio de um petroleiro pelo teclado
- Para o autor, hackear era menos destruição e mais o ato de aprender o que está oculto
- No ensino médio, ele comprou “Beginning Visual C++”, de Ivor Horton, seu primeiro livro introdutório, com 1.200 páginas
- O começo foi fácil, mas ele travou na parte de “Dynamic Memory Allocation”
- Ele comparou isso ao pons asinorum, ou “ponte dos burros”, expressão usada por estudantes medievais para o primeiro ponto realmente difícil
- A experiência até conseguir executar “Hello, world” lhe deu a sensação de que programar era menos uma questão de conhecimento ou habilidade e mais de paciência e obsessão
- Ele passou vários dias tentando fazer o compilador Borland C++ funcionar, e toda vez que corrigia um erro surgia outro
- Quando finalmente apareceu “Hello, world”, parecia que o computador havia despertado e o cumprimentado com a própria voz
- Na universidade, ele ampliou o prazer da programação criando pequenos programas
- Fez um programa que enviava mensagens de texto quando Tiger Woods fazia birdie ou bogey no Masters Tournament de 2006
- Também escreveu um programa que tirava frases aleatórias de “Ulysses”, contava sílabas e montava haicais
- Ao criar em 14 horas o “Jimbo Jeopardy!”, que curtia com os amigos, sentiu a intensidade de ver alguém se divertir com algo feito por ele
O auge do engenheiro de software e o paradoxo da automação
- Em 2009, em plena crise financeira, ele se formou com GPA 2.9, mas conseguiu facilmente seu primeiro emprego em tempo integral graças à experiência prática em programação
- Na época, as empresas competiam por bons programadores e abordavam agressivamente profissionais experientes
- A popularidade da ciência da computação começou a explodir, e os bootcamps de programação prometiam transformar iniciantes em programadores bem pagos em menos de um ano
- Em meio aos juros baixos e ao crescimento do setor de tecnologia, o tratamento dado aos engenheiros de software se elevou
- Empresas como a Google difundiram práticas como espresso grátis, refeições servidas, bons benefícios médicos, licença parental, academia no escritório, bicicletário, roupa casual e 20% time
- Como bugs podiam surgir a qualquer momento no trabalho de programação, estimar prazos era visto como tolice, e deadlines eram tratados quase como tabu
- Havia até um clima em que, sob muita pressão, bastava dizer “burnout” para ganhar alguns meses
- Também cresceu a dúvida sobre quanto tempo esse tratamento poderia continuar
- No passado, até web design tinha demanda suficiente para render milhares de dólares em trabalhos de fim de semana
- Com a chegada de ferramentas como Squarespace, donos de pizzaria ou artistas freelancers passaram a conseguir montar sites só clicando
- Para programadores profissionais, parte dos trabalhos de alta renda e baixo esforço desapareceu
- A resposta da comunidade de programadores foi, em geral, continuar aprendendo tecnologias cada vez mais difíceis
- Engenheiros de software gostam de automação, e os melhores criam ferramentas que tornam outros tipos de trabalho inúteis
- A alavancagem de um único código afetar o trabalho de milhões de pessoas era a base do status dos programadores
- Esse mesmo instinto de automação também substitui parte do trabalho dos próprios programadores
O programador na era da IA, o centaur e as habilidades que restam
- Depois que a empresa passou a permitir o uso de chatbots de IA como auxílio à programação, o autor evitou isso conscientemente no começo
- Logo começou a ver com frequência, nas telas dos colegas, o padrão de perguntas e respostas com IA
- Os colegas diziam que essas ferramentas aumentavam a produtividade e, em alguns casos, resolviam problemas 10 vezes mais rápido
- O autor temia que a IA tirasse o prazer de resolver enigmas e a satisfação de ter encontrado a resposta por conta própria
- Os resultados usuais da programação em geral não são tão interessantes e às vezes são quase ridiculamente banais
- Por exemplo, adicionar a uma tabela de um documento importante um cabeçalho que atravesse várias colunas parecia simples olhando só para o resultado
- Mas o cerne da diversão estava em pensar como construir a API para o usuário e como lidar quando colunas sem dados fossem omitidas
- No fim, ele usou o GPT-4 para criar uma pequena ferramenta que destacava, em resultados de busca, os trechos correspondentes à consulta do usuário
- Em 1978, Edsger W. Dijkstra escreveu em “On the Foolishness of ‘Natural Language Programming’” que linguagem natural era uma forma de abrir mão da precisão oferecida pelos computadores
- Na prática, usar o GPT-4 não era só dizer “resolva o problema”; era preciso especificar cuidadosamente o que se queria, quase como ao falar com um iniciante
- Ao ver as falhas, ele precisou tornar os prompts menos ambiciosos e dividir o problema em subproblemas concretos, abstratos e sem ambiguidade
- Depois disso, ele começou a enxergar por toda parte lacunas do tamanho certo para o GPT-4 se encaixar
- Também conversou com o GPT-4 ao transformar a saída do gerador de palavras-cruzadas em uma página web agradável de visualizar
- Havia um problema detalhado de conectar cada letra às palavras horizontal e vertical, mas ele já não simulava como antes números, padrões e loops na cabeça
- Como Geoffrey Litt escreveu após uma experiência parecida, ficou a sensação de não ter usado o “cérebro detalhista de programador”
- Os casos de Lee Sedol no Go e do xadrez mostram que, mesmo depois da IA, a cultura da habilidade não desaparece necessariamente
- Lee Sedol perdeu para o AlphaGo em 2016, orgulhou-se de ter vencido uma partida após vários dias de confronto e se aposentou três anos depois
- O xadrez ficou ainda mais popular depois de ser conquistado pela IA, e aprendizes podem receber de um treinador de IA problemas logo acima do seu nível e explicações sobre por que perderam
- Os grandes mestres do mais alto nível estudam lances sugeridos por computadores como se fossem tábuas divinas
- O GPT-4 hoje é um programador pior do que o autor, e pessoas comuns também não conseguem usá-lo facilmente como programadores, mas o modo centaur já existe
- Ben sozinho é um programador muito pior do que o autor, e o GPT-4 sozinho ainda também é pior do que ele, mas a combinação de Ben com GPT-4 mostra uma produtividade ameaçadora
- Se ficar mais fácil criar software, ele se espalhará mais, e os programadores podem acabar responsáveis por design, configuração e manutenção
- Se o ato de programar em si se tornar menos importante, passará a importar mais julgar o que vale a pena construir, o que os usuários gostam e como se comunicar técnica e humanamente
- O que deve ser ensinado aos filhos talvez não seja uma técnica específica, mas o espírito hacker
- No futuro, digitar programação diretamente em C++ ou Python pode parecer tão cômico quanto dar instruções binárias em cartões perfurados
- Fazer o computador executar exatamente o que se deseja pode virar uma questão de pedir isso com polidez
- O programador da era agrícola talvez mexesse com rodas-d’água e variedades de cultivo, e no tempo de Newton talvez fosse obcecado por vidro, tinturas e medição do tempo
- A próxima geração pode passar noites explorando o interior da IA que seus pais tratavam como caixa-preta, e mesmo que a era da programação decline, o hacking continua
3 comentários
A parte final do texto foi resumida com um pequeno corte, mas a última frase é importante.
"I shouldn’t worry that the era of coding is winding down. Hacking is forever."
"Não há necessidade de se preocupar que a era da programação esteja chegando ao fim. Afinal, o hacking é eterno."
Só de ver que, assim que o Bard ganhou recursos de integração, já era possível vazar informações com prompt injection e coisas do tipo,
parece que hacking é algo eterno.
Opiniões no Hacker News
O GPT-4 é realmente impressionante, mas, para mim, o núcleo do desenvolvimento de software nunca foi a codificação em si
O GPT-4 falha com frequência, suas formas de falha não são claras e ele desmorona ainda mais em áreas com pouco material de treinamento
Mesmo que fique 20 vezes melhor, se isso permitir criar bom software de forma mais barata e fácil, vejo como algo positivo para o mundo
Se alguém realmente gosta de programar como hobby, a IA não vai impedir isso; e, mesmo que a programação desapareça, sinto que o núcleo da engenharia de software nunca esteve aí
LLMs são rápidos e razoavelmente bons, mas se parecem mais com um substituto do Stack Overflow com muitos erros; como ferramenta para complementar a capacidade dos programadores, parecem ter um grande efeito líquido positivo no curto e médio prazo
Os problemas em que fico travado geralmente são amplos e complexos demais para caber bem até na cabeça de uma pessoa, e o GPT apresenta soluções quase inutilizáveis
Em relação a código, ele parece um faz-tudo universal que sabe um pouco de tudo, mas sem profundidade; para desenvolvedores júnior a intermediários, pode ser diferente
Quase ninguém deve achar que a parte mais divertida da programação é depurar um código que, à primeira vista, parece obviamente correto
Ainda assim, acho que podemos encontrar formas melhores de usar LLMs, como colocá-los em loop até passarem na suíte de testes ou fazer com que entreguem código junto com provas de correção verificadas por um assistente de provas
Mas meu gosto era por projetos com certo grau de liberdade artística, mais do que por código mais acadêmico cujo valor é medido por métricas quantitativas como número de ciclos ou latência
O tipo de programação que eu apreciava no início da carreira já vinha diminuindo antes do ChatGPT, e começar numa época em que engenheiros tocavam a loja hoje me parece um privilégio
Código é chato; eu só quero construir alguma coisa
Será que sou o único que fica menos impressionado com LLMs com o passar do tempo?
Quando o Copilot apareceu pela primeira vez, em 2021, também tive aquele momento de pensar “logo vou me tornar inútil”
Mas, pelo que experimentei diretamente e pelo que mostram as pesquisas, os LLMs modernos parecem fundamentalmente defeituosos e não parecem estar no caminho rumo a uma inteligência geral
O GPT-4 é melhor que o 3.5, mas não é fundamentalmente diferente; acho que o 5 será parecido. Quando surgir uma IA realmente poderosa no futuro, talvez ela ria ao ver a atenção que dedicamos a esta tecnologia
No começo foi muito impressionante, mas agora não consigo confiar nele além de esboços em nível bem alto
Por exemplo, quando tentei implementar um sintetizador de som do zero para gerar amostras de áudio e salvá-las em um arquivo wave, o resumo ajudou a entender os conceitos, mas o código estava sutilmente errado
Ele errava especialmente detalhes como o que entra no comprimento ao calcular o tamanho de uma struct, e, do ponto de vista de um iniciante, eu nem conseguia ter certeza se estava certo
Quando eu pedia confirmação, ele se desculpava e mudava a resposta para o lado que eu parecia querer ouvir, então não dava para confiar
Ainda assim, como ferramenta para reduzir a solidão ao programar sozinho, é muito boa; só jogar ideias e ver as reações já ajuda
Os primeiros espectadores de cinema achavam até filmes simples em preto e branco assustadores e se abaixavam ao ver um trem vindo em direção à tela
Pessoas que ouviram um fonógrafo pela primeira vez também diziam que não conseguiam distingui-lo de uma orquestra ao vivo
À medida que você aprende uma tecnologia, também aprende a reconhecê-la e desenvolve uma percepção de seus limites e pontos fortes. Por isso, com o tempo, ela parece menos impressionante
É fácil se impressionar quando algo faz o que você achava que não conseguiria fazer, mas isso não significa que você passe a desprezá-lo imediatamente quando, mais tarde, ele não faz algo que você esperava que pudesse fazer
Se o GPT-5 der um salto parecido, será difícil competir sem usá-lo
Ambos são modelos GPT e foram treinados como simples modelos de linguagem autorregressivos, mas, nos momentos em que o GPT-4 consegue sintetizar corretamente informações em vários contextos de acordo com o pedido, dá para sentir uma mudança dramática até no nível individual
No fim, LLMs são inferência probabilística sobre enormes volumes de texto, mas acredito que, com computação e dados suficientes, modelos grandes podem criar durante o treinamento estruturas para entender os dados de forma otimizada
Quando os dados se tornam multimodais, cada modalidade apaga e esclarece representações equivocadas do mundo, então o efeito pode crescer não como uma simples soma, mas como uma multiplicação
Talvez um dia a gente ria ao ver o quão bom será um GPT-10 treinado com texto, imagens, vídeo, áudio e sensores de paladar, mas considero o GPT-4 o maior avanço que a humanidade já deu em qualquer etapa
Vejo pessoas usando seriamente prompts como “escreva uma expressão que some 2 e 2” para obter o
2+2de que precisam e chamando isso de eficiência mágicaSinceramente, não gosto muito de escrever textos longos e, para mim, código é sempre mais curto e mais rápido do que explicar em linguagem comum. É justamente por isso que código é necessário
Visto a partir de expectativas altas, dá para dizer que é “fundamentalmente defeituoso”, mas, a partir do ponto de referência de “inútil”, como muita gente pensa, também dá para chamar de uma ferramenta incrível
A cada poucos meses, também peço ao ChatGPT para fazer um teste simples de frontend que passo para desenvolvedores júnior, mas ele ainda nunca passou. Nem chegou perto
Ele responde com confiança, mas há imprecisões sutis, e o código que gera se parece com aquele tipo de código sem sentido que alguém recém-saído de um bootcamp, com um currículo de 8 páginas dizendo que “dominou” 50 tecnologias, entregaria
Se ficou melhor, eu não percebi
Há 10 anos também diziam que caminhões autônomos virariam a indústria de caminhões de cabeça para baixo em 10 anos, e a cobertura da mídia em torno dos LLMs é igual
É impressionante, mas fico me perguntando até quando vamos repetir esse nível de, toda vez que mandamos virar à esquerda, acelerar para 100 milhas por hora e bater numa parede
Quero usar IA para conectar constelações de pontos que humanos jamais conseguiriam ligar, com especialistas verificando os resultados antes de seguir adiante. Não sei quando chegará o dia de obter uma nova ferramenta de CLI ou app com
gpt install, mas não será em breveFicou aceitável, mas não batia pixel a pixel, e o líder da equipe mandou refazer. O valor de negócio era zero, mas nossa equipe se orgulhava de ser pixel perfect
Esse foi um dos motivos que me fizeram parar de desenvolver frontend
Recentemente, como exercício, pedi ao ChatGPT para criar um CSS parecido, e ele fez perfeitamente
Tenho habilidade mediana em CSS, mas, com o ChatGPT, consigo produzir algo próximo da qualidade de especialistas em CSS. Como o texto diz, um generalista de nível intermediário agora consegue competir com especialistas
Minha experiência é bem diferente. Sou um desenvolvedor backend exigente, que usa validação de tipos quando precisa, e me irrito com coisas que não funcionam logicamente
Como lidamos com computadores, tudo deveria ser lógico, mas muitas partes do frontend não fazem nenhum sentido lógico para mim
Se você perguntar a alguém de frontend “como centralizo o texto?”, a pessoa diz
text-align; claro que tentei isso primeiro, mas não funcionouMesmo pessoas de frontend às vezes precisam tentar por conta própria e falhar, em vez de responder imediatamente a uma pergunta simples
Hoje, se o Copilot não cospe a resposta de cara, o ChatGPT-4 ou o “front-end hacker”, um GPT personalizado que conhece nossa base de código, corrige. Funciona bem todos os dias, o dia inteiro
À primeira vista, é um truque incrível que parece tecnologia alienígena vinda do futuro
Mas, com o tempo, você começa a ver os buracos e percebe que, mesmo usando por meses ou anos, esses buracos não são bem preenchidos
O ritmo de melhoria é mediano em relação à lacuna que precisa ser fechada, comparado ao marketing e à retórica, e no fim usar isso às vezes parece mais trabalhoso do que não usar
Abordagens de machine learning puramente orientadas por dados podem não servir para problemas que exigem precisão muito acima de 80%
Funcionam bem para algoritmos de trading que dão dinheiro acertando só 55%, motores de recomendação que mostram listas de filmes ou músicas para rolar, resultados de busca para passar os olhos, ou filtros de spam que reduzem o ruído da caixa de entrada
Mas problemas como dizer “esta é a resposta correta” ou “dirigir um carro sem matar pessoas” são muito mais difíceis
Na maioria das vezes, ela nem passava pelos dois pontos que deveria interpolar; quando apontei isso, ele devolveu uma função que passava pelos pontos, mas já não era suave
Tentei de verdade, recomeçando várias vezes
Se algo assim escrever código para controlar máquinas, será uma confusão completa; por isso acho que precisamos escolher entre um mundo com machine learning e um mundo com drones robóticos de entrega
Ainda assim, ele se saiu razoavelmente bem em tarefas triviais, como criar parâmetros de função a partir de variáveis
Ainda assim, acho que essa tarefa também acabará sendo superada, e então a pergunta restante será se é capacidade real ou vazamento de dados
Não entendo como as pessoas realmente veem o momento atual como o crepúsculo dessa tecnologia
Do meu ponto de vista, parece que estamos prestes a entrar na era da produtividade quântica da programação
Estou muito animado porque a assistência de IA não só melhora o que escrevo, como também me ajuda a aprender enquanto trabalho. Nunca foi tão divertido escrever software quanto no último ano
Escrevo software há décadas, mas agora quase sempre tenho ao meu lado um coach que me ajuda a superar pontos de bloqueio e a entender minhas escolhas
Não é como ir até a mesa de um colega para perguntar sobre um problema; ela realmente oferece soluções produtivas que inspiram o resultado
É realmente surpreendente
Não sei por que acham que a programação está chegando ao fim. Não vejo evidências de que assistentes de programação com inteligência artificial vão substituir bons desenvolvedores. A menos que a capacidade da pessoa de criar algo seja realmente péssima
É como se alguém tivesse dito: “agora a fundação é grátis, mas ainda dá para construir a casa”
Eu ainda preciso construir a casa, projetar, desenhar, criar, divulgar para as pessoas, dar suporte, defender e explicar. Só ficou mais fácil porque não preciso fazer a fundação sozinho
Se a IA torna os desenvolvedores duas vezes mais produtivos, essa capacidade adicional de desenvolvimento será absorvida pela demanda existente e nova? O número de desenvolvedores cairá pela metade? Ou o mesmo número de desenvolvedores receberá salários muito mais baixos?
Essas perguntas surgem mesmo que nem um único emprego atual de desenvolvedor seja completamente substituído por IA
Também importa que tipos de trabalho se adaptam bem à automação por IA. Penso em tarefas como CSS, nas quais é preciso conhecer muitos pequenos detalhes técnicos em um contexto estreito para produzir uma pequena mudança no resultado
Se você está fazendo esse tipo de programação, acho que é hora de ampliar seu escopo de habilidades para incluir responsabilidades mais amplas
Várias camadas que os programadores do passado precisavam entender não são compreendidas por quem entrou recentemente, e essas camadas ainda podem afetar o comportamento de maneiras sutis
Para alguém que programa há mais de 13 anos na área das tecnologias web mais difundidas das últimas décadas, é possível sentir que, a cada ano, fica mais difícil entender toda a stack da qual a web depende, e ver nisso um declínio da tecnologia
No front-end, está cada vez mais difícil aprender o que alguém fez apenas olhando o código. Por causa das tecnologias modernas de build, olhar o código de um site não ajuda muito, e essa reclamação já existia 13 anos atrás
Se você tem filhos ou responsabilidades fora do trabalho, somado ao fato de que o software continua devorando cada vez mais áreas, fica mais difícil para pessoas fora da escola lapidar suas habilidades por meio de prática deliberada
Ganho de produtividade não significa necessariamente aprimoramento do artesanato. É parecido com o fato de que a industrialização aumentou a produtividade e popularizou muitos produtos, mas não foi benéfica para as habilidades artesanais
Antigamente, era comum ver pessoas capazes de soldar componentes em uma placa e conectar vários circuitos integrados, e eu mesmo fiz isso na faculdade
Hoje essa camada de artesãos desapareceu, e as pessoas se dividem entre especialistas que conhecem extremamente bem o funcionamento do hardware de computadores e pessoas que simplesmente compram hardware e o tratam como mágica
Tradicionalmente, havia uma etapa intermediária em que a pessoa demonstrava interesse, recebia treinamento e se tornava especialista, e um hobby podia virar profissão
Hoje, para trabalhar em uma fábrica de chips, não é porque você era “a criança com o ferro de solda”, mas porque passou por um longo percurso acadêmico. Aprende-se conteúdo tão avançado que soldar parece coisa da Idade da Pedra
No software ainda existe essa camada intermediária de artesãos, mas ela está desaparecendo rapidamente, e não apenas por causa dos LLMs
Há muitas pessoas que juntam um site de qualquer jeito até funcionar, ou que resolvem tarefas do dia a dia com scripts em Excel ou Python, mas não conhecem conceitos avançados
Com a chegada de modelos do tipo GPT, especialistas precisam menos da ajuda de juniores. Em vez de um arquiteto de sistemas desenhar a estrutura e dividir pequenas tarefas entre juniores, ele consegue obter dos LLMs o que precisa
Como resultado, menos pessoas serão treinadas até o nível mais alto, e essa minoria será muito mais produtiva, mas muita gente ficará isolada no meio do caminho
Não nego que a IA possa escrever bom código e melhorar com o tempo, mas não sei como funcionaria um fluxo de trabalho em que a IA substitui a maioria dos desenvolvedores
Pegando como exemplo algo como um programador júnior escrevendo endpoints CRUD, o tempo para explicar requisitos que batam exatamente com o que eu quero pode ser maior do que codar diretamente com a ajuda de uma ferramenta como o Copilot
Dá para imaginar um usuário não técnico desenvolvendo de A a Z com IA? Se o código gerado tiver bugs, dá para dizer que em nenhum momento será necessária intervenção humana?
Mesmo que um técnico intervenha quando houver um bug, se for preciso gastar tempo investigando o que a IA escreveu e entendendo depois o que aconteceu, a economia no custo de escrever código desaparece rapidamente
No fim, escrever código é uma parte pequena do trabalho, e LLMs são bons para gerar código, mas não são, em essência, solucionadores de problemas
A tecnologia é impressionante, mas parece que será mais uma ferramenta na caixa de ferramentas do desenvolvedor. Também é um ótimo tutor e, em problemas independentes, como scripts para extrair conteúdo de páginas web, permite não chamar um desenvolvedor
Mas pode tornar o fluxo de trabalho de muitos desenvolvedores muito mais fácil, permitindo fazer o mesmo com menos pessoas ou fazer mais com a mesma equipe
Escrevi isso em outro ponto desta thread: https://news.ycombinator.com/item?id=38259425
Basicamente, pareceu-me um assistente generalista e parceiro de brainstorming muito poderoso para tarefas que normalmente consomem muito tempo
Não se limita a código; também usei em documentação, dando informações brutas para organizar em documentos coerentes ou para receber feedback
Ao fazer onboarding em um projeto novo, também ajuda a inserir trechos de documentação difíceis de entender e pedir explicações
Em tarefas administrativas relacionadas à gestão, gastei menos energia mental ao inserir as solicitações e meu ponto de vista e pedir que gerasse uma resposta alinhada a uma determinada perspectiva
Claro que também é possível fazer isso com outras pessoas da equipe, mas elas nem sempre estão por perto e também têm suas próprias tarefas. Ferramentas como o ChatGPT não se cansam, então posso soltar à vontade a criança interior que fica perguntando “por quê?” até ficar satisfeito
Mesmo quando posso perguntar a outra pessoa, o ChatGPT ajuda a refinar a pergunta
É bastante útil para boilerplate, tarefas tediosas e para transformar em código algoritmos explicados por uma pessoa
Também é bom em converter código entre linguagens e, se instruído corretamente, executa o trabalho
Terá um grande impacto nas perspectivas de emprego. Ainda não substitui engenheiros, mas pessoas especializadas como especialistas de implementação de uma tecnologia específica estão em risco. Só o aumento de produtividade já reduzirá a demanda
Pela minha experiência anedótica em 98 municípios, essas ferramentas nunca funcionaram por muito tempo
Por outro lado, agora funcionários com alguma sensibilidade digital estão criando e automatizando coisas com a ajuda do ChatGPT
Do ponto de vista de manutenção de longo prazo, muitas dessas soluções são tão ruins quanto as antigas ferramentas de RPA ou workflow, mas desta vez as próprias pessoas também conseguem mantê-las
Porém, como não são desenvolvedores de software, coisas como escalabilidade, uso de recursos, documentação e tratamento de erros não acontecem
Ainda assim, a maioria só “economiza” algumas horas por mês, então não é importante o suficiente para alocar um desenvolvedor de verdade; algo em torno de 90% pode ser suficiente
Combinado a melhorias em ferramentas como o SharePoint Online, trabalhos que antes exigiam desenvolvedores internos ou consultores externos podem ser resolvidos internamente
Isso não é a morte da engenharia de software. Não escala e, no longo prazo, provavelmente surgirão problemas quando arquiteturas amadoras tiverem de se encaixar umas nas outras
Mas, se você precisa pesquisar no Google como tirar algumas linhas arbitrárias de texto de um dicionário, é difícil dizer que não está em risco
O GPT lida de forma bem fácil, e boa o suficiente, com “programas que dá para fazer pesquisando no Google”, então isso acontecerá cada vez mais no setor
Pelos meus registros, dá para ver que fico impressionado e ao mesmo tempo decepcionado com LLMs, mais precisamente com o GPT. Outros modelos, sinceramente, não são grande coisa
No trabalho diário, ele não ajudou muito no desenvolvimento de fato, mas escreve a maior parte da documentação e faz isso de um jeito assustadoramente bom
Também faço bastante geração de código para criar tipos, classes etc. a partir de planilhas de mapeamento de dados do Excel e gerar funcionalidades CRUD. Antes eu fazia isso com scripts curtos de CLI, mas agora o GPT resolve a maior parte
Porém, ele é péssimo para lidar com lógica de negócio que exige eficiência usando código bem projetado, e até agora não melhorou nem um pouco
Em grandes empresas não técnicas da Europa e na enorme indústria de TI e consultoria que as atende, há muitos desenvolvedores fazendo o tipo de trabalho em que o GPT é bom; à medida que as ferramentas melhorarem, serão necessários muito menos desenvolvedores de software no geral
O que me preocupa especialmente é que ainda ensinamos aos estudantes de CS muito conteúdo em que o GPT é bom
Sou examinador externo de estudantes de CS em nível de academia, e o GPT conseguiria quase nota máxima no currículo. Isso porque o foco é principalmente produzir muito código “fácil” para empresas
Tenho medo de que muitos estudantes passem por dificuldades quando os LLMs se consolidarem de vez, e o currículo não mudará a tempo. O ensino superior dinamarquês é lento para se adaptar à realidade e já estava um tanto defasado havia 10 anos
A frase “programar é menos sobre conhecimento ou habilidade e mais sobre paciência, talvez até obsessão. Programadores são pessoas que suportam uma fila infinita de obstáculos entediantes” captura bem por que dá para ser otimista com a programação assistida por IA
A curva de entrada na programação é terrivelmente íngreme, não porque seja difícil, mas porque é irritante
É preciso aguentar seis meses em meio a mensagens de erro estranhas e pontos e vírgulas faltando antes de sentir que está realmente criando algo e progredindo
A maioria desiste e acha que “não é inteligente o bastante”, mas, na verdade, não teve paciência para atravessar aquele lamaçal
Acho que os LLMs têm um grande impacto nessa curva inicial de aprendizado. É bom que mais pessoas consigam aprender programação básica e automatizar no computador as tarefas repetitivas e tediosas da vida
Programadores precisam aceitar verdades feias no dia a dia mais do que em qualquer outra profissão. Engenheiros físicos, operários da construção e mecânicos também precisam dessa virtude, mas o ciclo de feedback é mais lento, então ela é exigida com menos frequência
É parecido com dizer que o Google Translate tornou todo mundo fluente em espanhol
No fim, para usar o ChatGPT de forma eficaz, ainda é preciso revisar o código e entender como ele funciona
Digitar o código em si nunca foi a parte difícil do desenvolvimento de software
Se essa ferramenta só adianta o desenvolvedor em seis meses, oferecer aulas de ciência da computação na escola seria melhor em termos de recursos computacionais e formaria uma geração de engenheiros muito mais forte
Projetos de software complexos com muitos usuários têm, na prática, um backlog infinito de tickets de bugs abandonados
Parece que alguns meses atrás um bug de 25 anos foi corrigido no Firefox
A maioria dos compiladores e frameworks acumula tickets como “melhorar a mensagem de erro quando X acontece”, mas o tempo dos programadores é caro demais para isso subir na prioridade
Com o tempo, a diferença entre sênior e júnior muitas vezes passa a ser menos inteligência ou experiência real e mais as cicatrizes acumuladas ao atravessar bugs e problemas de usabilidade que não serão resolvidos antes do fim da vida útil do produto
Para a IA substituir completamente programadores ainda serão necessários mais alguns grandes avanços, mas soltá-la no bug tracker para passar o dia fazendo pequenas correções já parece bem ao alcance
Isso tornaria a programação humana mais divertida e mais fácil de aprender
Penso nas pessoas comuns presas às limitações dos apps que usam e na popularidade de livros do tipo “automatize tarefas com Python”
Se essa nova tecnologia fizer com que as pessoas não fiquem mais presas a essas limitações, será algo bem legal
Código continua sendo um artefato complexo e frágil
LLMs escreverem código é só o começo; para a maioria das pessoas, low-code/no-code com assistência de LLM seria mais ideal
Tenho tido esse debate com um amigo que trabalha com IA e redes neurais
Ele diz que programar logo ficará obsoleto e será totalmente substituído por geração de código ao estilo ChatGPT
Eu, como “engenheiro sênior”, vejo que a esmagadora maioria do meu trabalho é comunicação, liderança dentro da organização, entender de fato os requisitos do produto e descobrir como eles se encaixam nos nossos sistemas
Eu escrevo código, mas mesmo que a maior parte disso seja reforçada por geração de código, a maior parte do que faço quase não vai mudar
O trabalho de um júnior não é isso, mas pegar issues cadastradas e implementá-las. Ele não recebe problemas difíceis; recebe a tarefa junto com critérios de aceitação
Se algo como um CodeGPT do futuro substituir completamente as habilidades de programação deles, qual será o caminho para que se tornem sêniors daqui a 10 anos?
Os sêniors de hoje vão se aposentar em 10 a 20 anos e, quando forem substituídos por pessoas que realmente se beneficiaram da geração automática de código, “programar” pode virar algo que os velhos faziam antes de as máquinas fazerem por eles
Se a IA permitir equipes menores, porém mais capazes, haverá menos necessidade de líderes e reuniões, e tudo ficará muito mais eficiente
Talvez também tenhamos que nos despedir do tempo gasto mentorando engenheiros júnior. Em breve talvez não haja juniores
Navego pela organização, conecto-me com outras equipes e tento entender o que precisa ser feito
O código que escrevo parece mais um subproduto do trabalho que realmente faço
Primeiro, haverá menos pessoas envolvidas, então a coordenação ficará mais simples
Segundo, mais pessoas terão acesso a funções de coordenação, e é provável que esse papel seja assumido por profissões ou tipos de personalidade que normalmente não eram pessoas “boas em programar”
Se a máquina conseguir explicar, por exemplo, o funcionamento geral daquilo que está sendo construído, elas não precisarão ter grande habilidade de programação
Por isso, espero que o mercado de trabalho seja abalado de forma significativa e que os salários caiam bastante
Este texto não parece ter sido escrito por um programador, e alguns dos comentários também não parecem vir de engenheiros profissionais
Num futuro próximo, que partes do trabalho de um programador a IA poderia realisticamente substituir?
Para fins de discussão, vamos supor que a parte de codificação possa ser substituída de forma economicamente eficiente. Então ela também conseguiria fazer as outras partes?
Há coisas como receber requisitos ambíguos e esclarecê-los com as equipes de design/produto, instruir a IA o suficiente para criar funcionalidades complexas, revisão de código, lidar com falhas arbitrárias de build, documentar funcionalidades de modo que outros programadores e stakeholders consigam entender, depurar e corrigir problemas em produção
Realisticamente, antes que exista a possibilidade de a IA substituir de forma eficaz um bom programador, haverá uma longa etapa em que programadores usarão IA para se tornarem mais eficientes
Isso favorecerá engenheiros que pensam de forma mais abstrata, e as tarefas de programação de baixo nível serão absorvidas primeiro
Corrigir falhas arbitrárias de build provavelmente virá logo depois
Então a pergunta passa a ser que porcentagem do trabalho de um programador isso pode assumir, e se o que resta exige uma combinação diferente de habilidades
Há programadores que codam bem, mas reclamam em voz alta quando o negócio entrega requisitos um pouco ambíguos. Isso porque veem seu trabalho apenas como codificar, não como esclarecer regras de negócio
Esse grupo será mais afetado do que programadores dispostos a trabalhar para entender requisitos de negócio mesmo em situações ambíguas
Ele comete erros, mas esses erros parecem ter baixa correlação com erros humanos
Especialmente num contexto em que o Google está ficando cada vez menos útil, ele às vezes sabe coisas que eu levaria horas pesquisando
Pessoalmente, uso para scripting e assistência em funções de execução
Olhando para as ferramentas atuais, isso ainda parece muito distante
Sinto que o título não combina muito com o texto
O título dá a entender que a habilidade de programar será substituída, mas o texto, no fim, argumenta que ela vai mudar bastante, e minha intuição também está mais próxima disso
No fim, a barreira de entrada está caindo. Isso é ruim? De um ponto de vista egoísta, sim; de um ponto de vista social, não
Acho que um dos problemas enfrentados pelo Canadá e, em certa medida, pelos EUA é a desigualdade
Pessoas que trabalham em funções de serviços mais “medianas” ganham muito menos que engenheiros, e isso foi bastante desconfortável nos últimos anos
O valor social da IA generativa está em tornar o trabalho do conhecimento, como direito, medicina e engenharia de software, muito mais acessível a pessoas “medianas”
Haverá desvantagens, mas distribuir o poder de forma mais equilibrada provavelmente é um caminho mais próximo da utopia do que um elitismo equivocado. Este último soa como o caminho para a autocracia
Se o salário mínimo fosse o menor salário e o salário de programadores fosse o maior, a América seria uma economia muito igualitária
Automatizar os caminhos de classe média que restam nos EUA só ampliará ainda mais a distância entre os capitalistas que possuem a infraestrutura de automação e as pessoas empurradas para as áreas não automatizadas, cada vez menores
Isso não melhoraria a situação delas
Da perspectiva de alguém de cabelos grisalhos que não programa todos os dias, o ChatGPT foi impressionante como assistente de programação
É como ter um desenvolvedor júnior de plantão por US$ 20 por mês
No mês passado eu precisava de um utilitário rápido e sujo; dividi o problema eu mesmo em 4 ou 5 etapas, pedi ao ChatGPT que escrevesse as funções de cada etapa e então juntei tudo
A maior parte correu bem, mas uma parte exigiu indução e refinamento excessivos até chegar ao resultado que eu queria