LLMs e Programação nos primeiros dias de 2024

Modelos de linguagem grandes estão emergindo como assistentes de programação poderosos, mas pouco confiáveis, acelerando trabalho de boilerplate, documentação, testes e uso de APIs desconhecidas, enquanto ainda falham bastante em programação de sistemas mais profunda e em bugs sutis. Os comentadores descrevem os LLMs como mais valiosos quando um desenvolvedor experiente pode verificar e corrigir rapidamente a saída, contrastando sua utilidade com a degradação da busca na web e com ferramentas como Kagi ou Brave Search. Muitos esperam que os LLMs mudem a natureza do trabalho de programação — deslocando o valor da escrita roteiriza de código para design e raciocínio de nível superior — ao mesmo tempo em que expressam ansiedade sobre substituição de empregos e ceticismo em relação ao hype que retrata os modelos atuais como raciocinadores quase humanos.

LLMs vs. Busca Tradicional

  • Muitos comentadores dizem que a busca geral na web se degradou devido a anúncios e spam de SEO, tornando LLMs e mecanismos alternativos atraentes.
  • Motores de busca pagos (por exemplo, com recursos de bloqueio/fixação de sites) e ferramentas especializadas (Brave com “goggles”, phind, perplexity) são sugeridos como complementos ou substitutos para o Google.
  • Alguns ainda obtêm bons resultados no Google, sugerindo que a qualidade pode ter melhorado recentemente ou depender da consulta.

Como Desenvolvedores Usam LLMs

  • Usos comuns: código boilerplate, código de ligação, testes, SQL, configurações, documentação, diagramas, trechos de AWS/bash, compreensão de código legado e protótipos rápidos.
  • Os LLMs são especialmente valorizados por:
    • Reduzir a energia de ativação para começar/terminar projetos paralelos.
    • Agir como um “desenvolvedor júnior” ou tutor, explicando APIs ou conceitos desconhecidos.
    • Ajudar engenheiros experientes em domínios nos quais eles estão temporariamente como “juniors”.
  • Trabalho de sistemas/baixo nível: vários relatam que os LLMs têm desempenho ruim quando é necessário profundo conhecimento de domínio ou raciocínio complicado em nível de bits.

Confiabilidade, Verificação e Risco

  • Há forte consenso de que a saída dos LLMs precisa ser revisada; alucinações e código sutilmente errado são comuns.
  • Programação é vista como relativamente adequada porque o código muitas vezes pode ser compilado, testado ou verificado por propriedades, embora outros enfatizem que “compilar” ≠ “estar correto ou seguro”.
  • Alguns usam LLMs para gerar tanto código quanto testes; outros desconfiam da geração de testes pelo mesmo modelo que escreveu o código.

Impacto no Trabalho e nas Carreiras

  • Muitos se sentem pessoalmente mais produtivos ou “turbinados”; outros se sentem excluídos porque os modelos falham justamente onde precisam de ajuda.
  • As visões divergem sobre o impacto nos empregos:
    • Alguns esperam menos empregos tradicionais de programação e mais foco em arquitetura, pensamento de produto e teste/verificação.
    • Outros argumentam que a demanda por software vai crescer (padrão histórico de automação), mas recomendam que indivíduos estejam prontos para se requalificar.
  • Existe preocupação de que juniores dependam dos LLMs para produzir código que não entendem.

Ferramentas, Fluxos de Trabalho e Modelos Locais

  • Discussão sobre integrações em IDEs (Copilot, Cody, Continue, Wingman, Cursor) e ferramentas de CLI (por exemplo, agentes que editam diretamente bases de código) para evitar fluxos de copiar e colar.
  • Experiências mistas com autocompletar: alguns acham transformador, outros acham distrativo.
  • Modelos locais focados em código (Deepseek Coder, variantes de CodeLlama, modelos da Phind) via frameworks como Ollama estão surgindo como opções que preservam a privacidade, embora mais fracas.

Raciocínio, Hype e “Conhecimento Lixo”

  • Debate sobre se LLMs “raciocinam” ou apenas interpolam dados de treinamento; alguns enfatizam a capacidade prática em vez da certeza filosófica.
  • Vários veem os LLMs como uma forma de descarregar conhecimento efêmero e específico de ferramentas (“junk knowledge”), como APIs e configurações, e concentrar o esforço humano em conceitos duráveis (algoritmos, estruturas de dados, matemática).
  • Outros se preocupam que marketing e hype estejam levando as pessoas a atribuir em excesso capacidade a sistemas inerentemente não confiáveis.