Vamos ganhar uma fortuna
(rocketpoweredjetpants.com)- Em um cenário de cerca de 5 anos, a disseminação da programação com IA pode reduzir a contratação de juniores e acumular complexidade no código, elevando bastante o valor de desenvolvedores sêniores experientes capazes de arrumar essa bagunça
- Empresas que consideram que modelos de coding já evoluíram o suficiente para substituir desenvolvedores juniores passaram a comprar mais tokens em vez de contratar pessoas, e as oportunidades reais de contratação para juniores também estão diminuindo
- LLMs tendem a adicionar código novo, em vez de organizar o código existente; somando-se a isso os limites da janela de contexto, que não comporta um repositório inteiro, aumentam o código duplicado e a dívida técnica
- Com o aumento simultâneo da taxa de defeitos e do volume total de código gerado por IA, surgem mais bugs; devido a implementações duplicadas e mal abstraídas, o mesmo defeito precisa ser corrigido repetidamente em vários lugares
- Se a oferta de profissionais experientes cair por causa da interrupção na contratação de juniores e de um aumento de 22% no burnout severo, desenvolvedores com experiência em manutenção pré-IA e bom julgamento podem encontrar oportunidades raras, como os desenvolvedores COBOL na época do Y2K
O tamanho e a complexidade do código impulsionados pela IA
- Todo o processo leva cerca de 5 anos, partindo da premissa de que já estamos entre 1,5 e 2 anos dentro dele
- Os modelos de IA mais recentes, mesmo sem serem perfeitos, chegaram a um nível semelhante ou superior ao de desenvolvedores juniores em programação
- Está se espalhando a avaliação de que, pelo mesmo custo, é possível usar muitos tokens e executar mais trabalho em vez de contratar um desenvolvedor júnior
- As vagas para desenvolvedores juniores podem diminuir, e uma análise do Stanford Digital Economy Lab indica que essa mudança no emprego já está ocorrendo
- LLMs conseguem gerar diretamente até funções auxiliares e métodos de bibliotecas de terceiros que encontraram nos dados de treinamento, por isso preferem adicionar código novo
- Como resultado, o tamanho do código escrito e dos repositórios continua aumentando, algo também confirmado por pesquisas relacionadas sobre crescimento do volume de código
- A IA tem forte tendência a acrescentar funcionalidades ao código existente, em vez de limpar o código, remover duplicações ou melhorar a manutenibilidade
- Mesmo janelas de contexto grandes não comportam um repositório moderno inteiro, o que pode fazer com que implementações existentes passem despercebidas
- O código escrito por IA é, em sua maioria, aditivo e frequentemente duplicado, e o mesmo fenômeno aparece em um estudo sobre qualidade de código assistido por IA
- A IA consegue ler código e fluxos de controle complexos com mais rapidez e precisão do que humanos
- Com isso, também aumenta o orçamento de complexidade e dívida técnica que as organizações aceitam assumir
- O princípio de que depurar é duas vezes mais difícil do que escrever código continua válido, e, se a complexidade continuar se acumulando, pode chegar a um ponto em que nem mesmo a IA conseguirá lidar com ela
- Algumas codebases já ultrapassaram o nível de complexidade que humanos conseguem administrar, algo também observado em casos de crise de dívida técnica de IA
- A taxa de defeitos em código gerado por IA geralmente é maior do que em código escrito por humanos
- Mesmo que, no futuro, a taxa de defeitos fique menor do que a humana, o volume total de código gerado aumentará, portanto o número total de defeitos pode crescer
- Como o código não é devidamente separado nem abstraído, corrigir um bug em um lugar não resolve outras implementações duplicadas, mantendo a situação de corrigir repetidamente o mesmo defeito
A escassez de desenvolvedores sêniores experientes
- Em codebases complexas, mal estruturadas, cheias de bugs e duplicações, são necessários desenvolvedores sêniores capazes de julgar o que deve ser removido, quais abstrações estão erradas e se toda a abordagem precisa ser redesenhada
- A quantidade de profissionais experientes diminui não só pela saída natural do setor, mas também pelo peso de gerenciar a complexidade gerada por IA
- O burnout severo entre desenvolvedores sêniores aumentou 22%
- Se a contratação de juniores for interrompida, também diminuirá o número de pessoas que poderiam crescer e se tornar a próxima geração de sêniores
- Desenvolvedores que começaram a carreira depois da IA também podem ser competentes, mas podem ter menos experiência em escrever código manutenível do modo pré-IA
- Como engenheiros sêniores prontos para produção já são um dos principais gargalos no mercado de talentos, a necessidade de desenvolvedores com experiência e bom senso de código deve crescer ainda mais
- Quando a demanda aumenta e a oferta diminui, o preço sobe; desenvolvedores sêniores podem ter oportunidades semelhantes às que desenvolvedores COBOL tiveram em torno do Y2K
- Desenvolvedores experientes que sobreviverem ao período de demissões impulsionadas pela IA podem receber uma remuneração alta quando a escassez de oferta se intensificar
1 comentários
Comentários no Lobste.rs
Acho que isso será em uma escala muito mais grave do que o trabalho de arrumar resultados produzidos por ferramentas WYSIWYG ou equipes terceirizadas no exterior no passado
Se um usuário paga US$ 20 mil por mês a um chatbot para descobrir qual das quatro opções alguém escolheu, pelo mesmo valor dá para criar um programa que não dependa do preço dos tokens nem de erros probabilísticos, e ainda oferecer um contrato de manutenção de US$ 1 mil por mês
As empresas já estão percebendo que usar LLMs em muitos processos custa mais do que contratar pessoas, mas como muitas já demitiram suas equipes, a época da colheita deve chegar muito antes de 5 anos
Com uma busca semântica muito boa, uma janela de contexto gigantesca não é necessariamente necessária
Se um modelo de embeddings for treinado de forma especializada para que um agente de codificação encontre bem conceitos duplicados, ele poderia carregar na memória apenas cinco outros recursos que gerenciam tempos de expiração com uma fila de prioridade e consolidá-los em uma única classe
ExpirationQueueAinda assim, há o risco de essa IA aplicar abstrações prematuras com pressa demais