Assistente de Codificação de IA: Além do preenchimento Automático

Assistente de Codificação de IA: Além do preenchimento Automático

Até recentemente, o termo assistente de codificação de IA era sinônimo de funcionalidade de preenchimento automático. Havia um bom motivo para isso. O recurso de preenchimento de código assistido por IA, que prevê e sugere os poucos caracteres, palavras ou linhas a seguir conforme os desenvolvedores digitam, foi um belo exemplo de oferecer ajuda relevante no contexto de seu fluxo de trabalho e quando necessário.

Tenho escrito e mantido código profissionalmente por mais de 20 anos. Antes do preenchimento de código assistido por IA, várias ferramentas de desenvolvedor já forneciam funcionalidade semelhante por meio da dependência de recursos de servidor de linguagem integrados no IDE. Portanto, o preenchimento de código com tecnologia de IA parecia um próximo passo natural na evolução dos IDEs e na assistência que eles ofereciam aos desenvolvedores.

A outra interação popular de IA, a interface de bate-papo, não foi considerada muito valiosa para os desenvolvedores, pois respondia principalmente a consultas genéricas como "Como faço para reverter uma lista vinculada?", das quais nenhum desenvolvedor precisa em seu trabalho regular.

Como resultado, a Completion Acceptance Rate (CAR), uma métrica que calcula a porcentagem de conclusões sugeridas pela IA que os desenvolvedores aceitam, tornou-se um indicador-chave de desempenho para muitas ferramentas de codificação de IA. Os materiais de marketing para ferramentas de codificação apresentavam seus recursos de preenchimento automático, frequentemente mostrando como eles poderiam economizar tempo dos desenvolvedores reduzindo as teclas digitadas.

No entanto, isso está mudando agora.

O "Fluxo" que torna o preenchimento automático útil também o limita

Pode ser uma experiência genuinamente parecida com a do Flow quando você se senta para escrever um pedaço de código, e o código continua a aparecer magicamente na sua tela. No entanto, a mesma qualidade "em contexto" — ajuda exatamente quando você precisa, exatamente onde você precisa — que torna o preenchimento automático útil também é o que limita sua utilidade:

Escopo limitado

Digitar código — uma atividade extremamente conduzida por humanos — se move no ritmo de um humano. Além disso, digitar código nem é a atividade primária do desenvolvedor o tempo todo.

Contexto restrito

O preenchimento automático funciona linha por linha, sem compreender o contexto mais amplo do código ou as intenções do desenvolvedor.

Sensível à latência

As conclusões devem ser fornecidas o mais rápido possível, limitando os modelos de IA que podem ser usados. Qualquer atraso na entrega de sugestões interrompe o fluxo do desenvolvedor.

Como resultado, a melhoria resultante na velocidade de desenvolvimento de software é, na melhor das hipóteses, incremental.

Resolver problemas complexos de software requer mais do que apenas digitar código

Estamos vendo uma mudança na forma como os desenvolvedores querem usar ferramentas de IA no desenvolvimento. Não é mais suficiente para um assistente de codificação de IA simplesmente terminar suas linhas de código. As equipes de engenharia estão exigindo mais. Elas querem resolver problemas mais complexos.

Elas querem gerar funcionalidades totalmente novas, refatorar código legado, modernizar seu código para versões mais recentes de linguagem e estrutura, aumentar a cobertura de teste de código, melhorar a conformidade com padrões de segurança e codificação e assim por diante.

Tudo isso não pode ser realizado por meio do preenchimento automático. Ele requer uma compreensão mais sofisticada da base de código mais ampla de uma organização (além dos poucos arquivos em que um desenvolvedor trabalha simultaneamente). A maioria dos assistentes de codificação de IA não tem essa capacidade.

A programação orientada a chat como a próxima fronteira

A partir de hoje, a melhor interface para tais tarefas é o bom e velho chat habilitado para IA. Os desenvolvedores percebem que o mesmo chat que pode ser um pouco genérico demais para ser útil sem contexto (lembra de reverter listas vinculadas?) se transforma em uma máquina poderosa quando armado com o contexto adequado. Isso explica por que os desenvolvedores recorrem à programação orientada a chat (CHOP) ou codificação via refinamento de prompt iterativo para resolver seus problemas.

Vamos dar uma olhada em um exemplo recente de como a programação orientada a chat me ajudou. Eu estava trabalhando em um aplicativo que processava muito conteúdo de vídeo. Os usuários carregavam vídeos, e meu serviço precisava codificá-los em vários formatos, criar clipes, extrair o áudio em arquivos .mp3 e muito mais.

Muitas dessas operações seriam muito intensivas em computação, então eu precisava construir um sistema de enfileiramento que pudesse agendar trabalhos, trabalhar em tarefas quando os recursos estivessem disponíveis e atualizar a fila conforme as tarefas fossem concluídas. Inicialmente, construí toda a funcionalidade confiando no Redis, um poderoso armazenamento de chave-valor para criar um sistema de filas.

Embora minha implementação tenha funcionado muito bem nos testes, quando fomos para a produção e começamos a usar o sistema de enfileiramento que eu havia criado, rapidamente percebi que minha implementação seria mais adequada para um banco de dados relacional.

O sistema dependia de vários atributos aos quais eu precisava acessar, o que significava ter que consultar uma tonelada de dados desnecessários para obter os pares chave/valor que eu precisava do Redis.

Reescrever tudo para usar o SQLite teria sido uma tarefa e tanto. Ainda assim, graças à programação orientada a bate-papo, eu poderia fazer essa mudança em toda a base de código com apenas algumas mensagens de bate-papo entre meus assistentes de codificação usando minha base de código como um contexto.

O assistente de codificação de IA não só me deu instruções passo a passo sobre o que precisava acontecer, mas também gerou o código de trabalho, substituindo chamadas Redis existentes por consultas de banco de dados SQLite, gerando o esquema adequado que correspondia ao que eu tinha com o Redis e me dando instruções exatas sobre onde ir e o que atualizar, economizando inúmeras horas de migração manual.

Falando em migração, também pedi ao meu assistente de codificação que escrevesse uma nova funcionalidade para migrar todos os dados de trabalho existentes no Redis para o SQLite, de modo que nenhum dado fosse perdido quando a nova versão fosse implantada.

O sucesso é medido pelo resultado, não pela produção

Com essa evolução, as métricas para o sucesso também mudaram. A Taxa de Aceitação de Conclusão (CAR) ainda é importante, mas não é mais o padrão ouro. Em vez disso, as equipes de engenharia estão buscando medidas mais holísticas:

  • Tempo economizado: Quanto tempo geral de desenvolvimento é reduzido usando esta ferramenta?
  • Capacidade de resolução de problemas: esta ferramenta pode ajudar a enfrentar desafios complexos de codificação?
  • Melhorias na qualidade do código: esta ferramenta ajuda a melhorar a qualidade geral e a manutenibilidade da base de código?
  • Aprendizado e adaptação: quão bem esta ferramenta se adapta aos requisitos específicos do projeto e aos estilos de codificação?

Olhando para o futuro

Mesmo nos dois primeiros anos de uso da IA ​​se tornando mainstream na codificação, o padrão de uso evoluiu rapidamente de uma atividade mais de "digitação de código" para uma atividade de design ou transformação mais iterativa. À medida que avançamos, fica claro que o preenchimento automático, embora ainda útil, é apenas a ponta do iceberg na codificação assistida por IA. Os dias em que a codificação era sinônimo de digitação vigorosa em um editor ficaram para trás.

O futuro pertence a sistemas de IA mais abrangentes e sensíveis ao contexto que podem realmente entender e auxiliar no desenvolvimento de software. Como definimos habilidades de codificação e como será o treinamento para empregos de software no futuro pode diferir significativamente do atual. Fazer o uso mais eficiente da IA ​​por meio de prompts inteligentes e incorporar outras ferramentas que ajudem a dar sentido ao código pode se tornar aspectos importantes de como o software é construído.

Conteúdo Relacionado

返回博客

发表评论

请注意,评论必须在发布之前获得批准。