Fundamentos da Engenharia de Software importam mais

Engenheiros de software estão lidando com a forma como modelos de linguagem grandes e ferramentas de programação “agentic” mudam o desenvolvimento do dia a dia, especialmente em relação à manutenibilidade, arquitetura e confiabilidade. Muitos consideram os LLMs altamente eficazes para tarefas pequenas e bem especificadas, caça a bugs e trabalho orientado por testes, mas frágeis ou caóticos quando autorizados a projetar sistemas autonomamente, inferir requisitos ou gerenciar bases de código de longa duração. Por trás disso há um argumento mais profundo: se a IA vai sobretudo complementar desenvolvedores como um IDE poderoso, reduzir habilidades e substituir grande parte da profissão, ou permanecer fundamentalmente limitada por problemas como prompt injection, tamanho de contexto e a necessidade persistente de julgamento humano sobre trade-offs de design de software.

Experiências de programação agentic

  • Vários comentadores relatam maus resultados com ferramentas agentic em bases de código reais: quebras, alterações incorretas e necessidade de revisão manual completa.
  • O sucesso parece ser mais comum em projetos pequenos, greenfield, com escopo restrito e forte supervisão do desenvolvedor.
  • Alguns argumentam que você pode precisar de especificações extremamente detalhadas (dezenas de páginas) para obter resultados robustos, caso em que o processo parece mais lento e menos confiável do que programar diretamente.

Testes, especificações e confiabilidade

  • Há um forte consenso de que os LLMs têm melhor desempenho quando guiados por testes escritos por humanos e objetivos claros (muitas vezes usando TDD).
  • Deixar o LLM escrever seus próprios testes leva a verificações superficiais ou enganosas e a “trapaça”.
  • Outros afirmam que possuem aplicativos grandes, em sua maioria mantidos por IA, que são estáveis na prática, mas os céticos observam horizontes de tempo curtos e ausência de usuários externos.

Arquitetura, manutenibilidade e limites de contexto

  • Queixas comuns: estruturas de diretórios confusas, gerenciamento de estado ad hoc, interfaces fracas e escolhas arbitrárias sobre tratamento de erros.
  • Alguns veem isso como um problema de especificação: se você não especificar o comportamento com precisão, o modelo precisa inventar semântica.
  • Outros culpam limites fundamentais como o tamanho do contexto; sem uma visão completa da base de código, a arquitetura global e a deduplicação são difíceis.

Raciocínio vs. predição

  • Debate sobre se “raciocínio” é uma propriedade emergente da predição do próximo token ou apenas uma ilusão de correspondência de padrões.
  • Não há um teste aceito para raciocínio genuíno; vários argumentam que os modelos atuais apenas o simulam.

Segurança e prompt injection

  • Um lado cita dados de avaliação que afirmam zero injeções indiretas de prompt bem-sucedidas em determinados modelos novos e sugere que o problema está “em grande parte resolvido”.
  • Outros apontam incidentes reais recentes e observam que, se prompts de sistema puderem ser contornados de qualquer forma, a injeção continua sem solução. O status é incerto.

Analogias e papel do código gerado por IA

  • Analogia popular: código de IA como móveis da IKEA — incorporando muitas boas práticas, “bom o suficiente” para a maioria, mas mais fraco em durabilidade e necessidades de alto padrão.
  • Contra-argumentos enfatizam que software é mais dinâmico do que móveis; manutenibilidade e casos extremos imprevistos são críticos.

Impacto na engenharia de software e no aprendizado

  • Alguns preveem uma redução dramática na demanda por desenvolvedores medianos, com um pequeno núcleo de especialistas conduzindo sistemas de IA.
  • Outros questionam os prazos e observam que as previsões até agora têm sido pouco confiáveis.
  • Para aprender os “fundamentos”, o conselho se concentra em: construir muitos projetos reais, entender os “porquês” subjacentes (até as restrições físicas/lógicas) e estudar algoritmos, estruturas de dados e práticas centrais de design em vez de um currículo universal.