3 pontos por GN⁺ 2025-01-18 | 1 comentários | Compartilhar no WhatsApp

O que é o Devin

  • Em março de 2024, surgiu uma nova empresa de IA que levantou uma rodada Série A de US$ 21 milhões com apoio de vários líderes da indústria de tecnologia, como Founders Fund, os irmãos Collison e Elad Gil
  • A equipe da empresa foi apresentada como sendo composta por medalhistas de ouro da IOI, com capacidade de resolver sozinha problemas complexos de programação
  • A empresa afirma que seu produto, Devin, conversa como um colega humano e pode lidar de forma autônoma com todo o processo de engenharia de software, incluindo aprender novas tecnologias, depurar código existente, implantar aplicações inteiras e treinar modelos de IA
  • No vídeo de demonstração divulgado, o Devin resolveu sozinho uma recompensa no Upwork e instalou e executou um projeto PyTorch[1]
  • A empresa afirmou que, no benchmark SWE-bench, ele resolve completamente cerca de 13,86% de issues reais do GitHub, destacando isso como um desempenho cerca de 3 vezes melhor que sistemas anteriores
  • No início, o acesso era restrito a usuários selecionados, e pelas redes sociais se espalhou a expectativa de que ele revolucionaria o desenvolvimento de software
  • A equipe da Answer.AI costuma experimentar ferramentas de desenvolvimento com IA com frequência, e teve a intuição de que o Devin talvez mostrasse algo diferente do que já existia
  • Eles decidiram registrar a experiência após aplicar o Devin diretamente em um ambiente real de trabalho e tentar várias tarefas

Casos iniciais de sucesso

  • A primeira tarefa testada foi trazer informações de um banco de dados do Notion para o Google Sheets
  • O Devin explorou a documentação das APIs do Notion e do Google e orientou, em sequência, a configuração das credenciais necessárias no Google Cloud Console
  • Em vez de apenas jogar o uso da API, ele indicou até mesmo os menus reais e onde clicar nos botões, reduzindo bastante o tempo gasto em uma tarefa trabalhosa
  • O código escrito pelo Devin era um pouco verboso, mas funcionou corretamente
  • Essa experiência permitiu vislumbrar o potencial de uma IA para assumir o trabalho de “glue code”
  • Outro membro da equipe também conseguiu, interagindo com o Devin apenas pelo celular, criar uma aplicação para rastrear posições passadas de Júpiter e Saturno

Expansão dos testes

  • Animados pelos sucessos iniciais, eles tentaram usar o Devin de forma assíncrona, como delegar a ele a redação de documentação ou pedir depuração enquanto a equipe fazia trabalho de design
  • No entanto, aos poucos ficou claro que o Devin também caía em becos sem saída técnicos mesmo em tarefas aparentemente simples, ou gerava código complexo e inútil
  • Em especial, encontraram com frequência situações em que ele “alucinava” capacidades ao tentar à força tarefas que na prática eram impossíveis, como colocar vários apps ao mesmo tempo em um único deploy no Railway
  • O problema não era apenas falhar, mas desperdiçar tempo tentando soluções impossíveis

Observações mais profundas sobre os problemas

  • Surgiu a dúvida de por que o Devin parecia bastante competente em algumas tarefas, mas falhava em outras
  • Ao longo de um mês de uso, eles tentaram 20 tarefas ao todo, classificadas em três categorias
    • (1) criação de novos projetos
    • (2) pesquisa
    • (3) análise e modificação de projetos existentes
  • Como resultado, das 20 tarefas, 14 falharam, 3 tiveram sucesso (incluindo os casos iniciais) e 3 foram inconclusivas
  • Não havia um padrão claro para prever sucesso ou fracasso, e mesmo tarefas parecidas falhavam de formas inesperadas
  • Os casos detalhados estão organizados no apêndice ao fim do texto

1. Criação de novos projetos

  • Pelos vídeos de demonstração da empresa e pelos casos iniciais de sucesso, esperava-se que o Devin fosse bom em construir um projeto novo por completo
  • Mas, na prática, ele frequentemente criava estruturas de código excessivamente complexas ou não conseguia resolver nem mesmo web scraping simples
  • Por exemplo, a tarefa de enviar dados sintéticos para o Braintrust falhou porque o código do Devin era complexo demais e ele não conseguia sair dos erros
  • A tentativa de integrar o Spiral.computer com o anotador de reuniões com IA Circleback também foi abandonada porque ele devolveu um código confuso, tipo espaguete
  • A tarefa de buscar no Google Scholar as 25 publicações mais recentes de um autor específico não foi concluída adequadamente porque ele ficou preso no parsing de HTML

2. Tarefas de pesquisa

  • Trabalhos básicos de investigação, como consultar documentação simples, eram possíveis até certo ponto
  • Mas, em problemas mais complexos, como resumir transcrições mantendo timestamps exatos, ele não compreendia corretamente o tema e apenas listava exemplos desconexos
  • Até mesmo o pedido para criar um tema mínimo do DaisyUI não funcionou de fato, pois ele acabou reutilizando apenas as cores do tema padrão

3. Análise e modificação de código existente

  • As limitações do Devin ficaram mais evidentes em tarefas de manutenção que exigiam entender código e contexto já existentes
  • Ao lidar com um projeto nbdev, ele tentou uma abordagem ineficiente, como adicionar scripts Python desnecessários para tarefas que poderiam ser resolvidas apenas editando notebooks
  • Em revisões de segurança, apontava vulnerabilidades inexistentes ou deixava passar os problemas principais
  • Também no diagnóstico de erro de encaminhamento de chave SSH, ele cavava apenas no script em si, sem considerar a possibilidade de a causa estar em outro lugar
  • Ao implementar uma função de verificação de conflito entre entrada do usuário e banco de dados, o tempo gasto ajustando o código que o Devin produziu acabou sendo desperdiçado, e no fim foi mais rápido implementar manualmente em 90 minutos

Retrospectiva da equipe

  • Após um mês de testes intensivos, a equipe chegou às seguintes avaliações sobre o Devin
    • “Tarefas pequenas e bem definidas são mais rápidas de fazer direto, e tarefas grandes têm grande chance de o Devin falhar, então a utilidade prática é limitada” (Johno Whitaker)
    • “No começo parecia que daria para ajustar aos poucos, mas no fim foi preciso mexer em muito mais coisa, e tive a sensação de que seria melhor fazer tudo do zero” (Isaac Flath)
    • “Ele não se integra bem às ferramentas internas da AnswerAI e usa mal a documentação e os exemplos fornecidos, então há problemas de compatibilidade. Em comparação, ferramentas como Cursor foram melhores porque permitem feedback contínuo em unidades menores” (Hamel Husain)
  • O diferencial do Devin é avançar autonomamente em etapas grandes, mas no fim o custo de corrigir um rumo errado é considerável
  • Em contrapartida, eles concluíram que fluxos de trabalho em que o desenvolvedor lidera e a IA auxilia, como Circleback e Cursor, são muito mais estáveis

Conclusão

  • A experiência de trabalhar com o Devin permitiu enxergar um vislumbre do futuro pretendido pelas ferramentas autônomas de desenvolvimento com IA
  • Em especial, a interface conversacional baseada em Slack e a configuração automática de ambiente em contêineres Docker foram impressionantes do ponto de vista de experiência do usuário
  • No entanto, apenas 3 de 20 casos funcionaram de forma realmente fluida, e mesmo tarefas parecidas frequentemente fracassavam de maneira complicada
  • Justamente por ser “autônomo”, quando algo sai do rumo o trabalho pode continuar por muito tempo em uma direção completamente errada
  • Pela experiência até agora, é comum que o entusiasmo nas redes sociais ou a alta valorização da empresa não se traduzam em produtividade real nem em qualidade de entrega
  • A equipe da Answer.AI pretende manter a posição de que o formato mais prático, por enquanto, é a IA como apoio ao processo de desenvolvimento

Apêndice: lista de tarefas feitas com o Devin

  • Abaixo está um resumo breve dos projetos delegados ao Devin e seus resultados
  • Eles foram classificados em quatro categorias
    • (1) criação de novos projetos
    • (2) pesquisa
    • (3) análise de código existente
    • (4) modificação de projeto existente

1. Criação de novos projetos

  • Planet Tracker

    • Status: Success
    • Description: app para verificar alegações sobre posições passadas de Júpiter e Saturno
    • Reflection: Conversando com o Devin apenas pelo celular via Slack, ele fez a maior parte do trabalho de forma autônoma e concluiu com sucesso
  • Migrating data from Notion into Google Sheets

    • Status: Success
    • Description: importação automática de documentos do Notion para o Google Sheets
    • Reflection: O Devin guiou até a configuração do Google Cloud Console passo a passo, proporcionando pela primeira vez uma “experiência totalmente nova”
  • Multi-app deploys on Railway

    • Status: Inconclusive
    • Description: tentativa de colocar vários apps ao mesmo tempo em um único deploy do Railway para compartilhar o mesmo banco de dados
    • Reflection: Na prática, o Railway não oferece suporte a esse modelo, então era essencialmente impossível. O Devin continuou tentando com abordagens alucinadas
  • Generate synthetic data and upload it to Braintrust

    • Status: Failure
    • Description: tentativa de gerar dados sintéticos para enviar à plataforma Braintrust
    • Reflection: O código era complexo demais e ele não resolvia os erros, então a implementação foi feita passo a passo com o Cursor
  • Create an integration between Circleback and Spiral.computer

    • Status: Failure
    • Description: mesmo com a documentação de ambos fornecida, o Devin produziu um código espaguete complexo demais e a tentativa foi abandonada
  • Web scraping Papers by Following Google Scholar Links

    • Status: Failure
    • Description: tarefa de obter as 25 publicações mais recentes de um autor específico e pular artigos pagos
    • Reflection: O trabalho travou em um loop infinito de parsing de HTML
  • Create minimal HTMX bulk upload example app

    • Status: Failure
    • Description: tentativa de reconstruir de forma simples um exemplo de HTMX para uso com FastHTML
    • Reflection: O código de exemplo não funcionava e ele ainda adicionou elementos desnecessários, tornando tudo confuso
  • Create a DaisyUI Themes to match FrankenUI Theming

    • Status: Failure
    • Description: tentativa de unificar o uso dos temas do DaisyUI e do FrankenUI
    • Reflection: O mapeamento não foi feito corretamente e foi adicionado código demais, dificultando o uso prático

2. Perform Research

  • Research How to make a discord bot

    • Status: Success
    • Description: pesquisa sobre como criar em Python um bot de Discord que resume mensagens e envia por e-mail
    • Reflection: O Devin resumiu o plano no meio do processo em um arquivo Markdown e, embora o código final não fosse perfeito, ajudou na compreensão do conceito
  • Research on Transcript Summarization With Accurate Timestamps

    • Status: Failure
    • Description: busca por métodos de gerar resumos preservando informações de timestamp
    • Reflection: O Devin apenas listou tópicos relacionados de forma vaga e não apresentou um caminho real para resolver o problema
  • Create a minimal DaisyUI theme as an example

    • Status: Failure
    • Description: pedido para mostrar um exemplo mínimo de tema DaisyUI
    • Reflection: O tema de fato não foi aplicado, e as cores padrão continuaram sendo usadas

3. Analyze Existing Code

  • Performing a security review of a code base

    • Status: Inconclusive
    • Description: pedido para revisar um repositório do GitHub com menos de 700 linhas sob a ótica de vulnerabilidades de segurança
    • Reflection: Em parte estava certo, mas apontou problemas de segurança em excesso, incluindo vulnerabilidades que na prática não existiam
  • Review blog posts and make a pull request with improvements

    • Status: Failure
    • Description: solicitação para revisar posts de blog e gerar um PR compatível com a estrutura baseada em Quarto
    • Reflection: Como não conseguiu aprender a estrutura do Quarto, o tratamento de metadados e front matter se embaralhou e a tarefa falhou
  • Review an application and identify potential areas of improvement

    • Status: Failure
    • Description: pedido para apresentar melhorias amplas para o app de controle de tempo criado anteriormente
    • Reflection: A maioria das sugestões não tinha utilidade prática
  • Debug why ssh key forwarding is not working in a setup script

    • Status: Inconclusive
    • Description: problema de encaminhamento de chave SSH que não funcionava durante a configuração do servidor por script
    • Reflection: O Devin investigou o script de forma obsessiva e não percebeu que a causa do problema poderia estar em outro lugar

4. Modify An Existing Project

  • Making changes to a nbdev project

    • Status: Failure
    • Description: tentativa de adicionar uma API para Apple Shortcuts a um app de rastreamento de tempo feito com FastHTML + nbdev
    • Reflection: Em vez de editar diretamente os notebooks, o Devin tentou modificá-los com scripts Python, aumentando a complexidade
  • Migration of Python Project To nbdev

    • Status: Failure
    • Description: tentativa de migrar um projeto Python existente para nbdev
    • Reflection: Nem a configuração básica do nbdev foi feita corretamente, e o projeto acabou se enrolando
  • Integrate Styling Package Into FastHTML

    • Status: Failure
    • Description: tentativa de integrar o MonsterUI a um projeto baseado em nbdev
    • Reflection: O Devin falhou por não compreender adequadamente a estrutura de um repositório nbdev
  • Add feature to check for conflicts between user input and database

    • Status: Failure
    • Description: tentativa de adicionar à interface do app existente um aviso quando houvesse conflito entre entrada do usuário e valores do banco de dados
    • Reflection: Ajustar as tentativas do Devin até o fim consumiu muito tempo, e implementar diretamente em 90 minutos foi bem mais rápido
  • Generate LLMs context file with the contents of every fasthtml gallery example

    • Status: Failure
    • Description: pedido para gerar arquivos de texto para LLMs com o conteúdo de todos os exemplos da galeria do fasthtml
    • Reflection: Foi interessante o fato de o Devin ter criado um arquivo Markdown separado para cada exemplo, mas o modo de escrita não seguia a documentação e ainda adicionava dependências desnecessárias, entre outros problemas

1 comentários

 
GN⁺ 2025-01-18
Comentários do Hacker News
  • O criador do OpenHands enfatiza que a IA ainda não chegou ao ponto de substituir engenheiros de software. O código escrito por IA precisa de uma revisão rigorosa, como o código de um engenheiro júnior. No entanto, se a IA for bem utilizada, a produtividade pode aumentar bastante. Cerca de 20% do codebase do OpenHands foi escrito ou coescrito por IA. A IA é útil para tarefas simples, como resolver conflitos de merge ou corrigir erros do linter. Ele também menciona que a IA está melhorando toda semana e que a concorrência é acirrada

  • Um usuário que usa ferramentas de codificação com IA diariamente considera que a abordagem baseada em agentes, como a do Devin, tenta fazer coisas demais. Ferramentas de codificação com IA devem se estabelecer como ferramentas para desenvolvedores, e não como substitutas deles. O GitHub Copilot é útil para completar código repetitivo, e o Aider consegue realizar tarefas de edição de nível mais alto. Porém, ainda está longe de ser perfeito e pode fazer mudanças desnecessárias ao resolver problemas

  • O problema com agentes de IA como o Devin é que a inteligência deles parece ficar presa em um certo nível. Às vezes, eles resolvem em minutos tarefas que levariam horas para um engenheiro pleno ou sênior, mas também cometem erros simples. Uma qualidade importante de um engenheiro júnior é ser orientável, e os agentes de IA têm uma limitação justamente por não poderem ser orientados dessa forma

  • Há ceticismo em relação à alegação de que a IA pode substituir engenheiros humanos. A IA é adequada para pequenas tarefas repetitivas, mas não para trabalhos complexos, como gerenciamento de infraestrutura ou deploy de aplicações. A pessoa afirma que só vai acreditar quando vir isso acontecer na prática

  • Agentes de IA deveriam ser capazes de pedir input humano quando necessário, mas o Devin não faz isso bem em situações de "soft stop". Um desenvolvedor humano pediria ajuda depois de algumas horas, mas a IA pode cair em um loop infinito

  • Assim como na geração de imagens por IA, ferramentas de codificação com IA mostram resultados impressionantes no início, mas ainda cometem muitos erros. Mesmo assim, espera-se um avanço surpreendente daqui a alguns anos. Ferramentas como o Midjourney podem entregar resultados diferentes do esperado, e será necessário oferecer recursos que permitam ao usuário iterar rapidamente

  • Pelos relatos de uso do Devin, a avaliação é de que o agente não atende às expectativas. Agentes são fáceis de implementar, mas difíceis de tornar realmente úteis. As limitações do Devin levantam preocupações sobre o avanço dos sistemas baseados em agentes

  • O Devin tentou fazer coisas demais, e há valor em gerar artefatos de código dentro de uma capacidade limitada. É importante focar em elementos específicos do loop de desenvolvimento. Empresas como a Factory AI estão adotando essa abordagem e atraindo interesse para seus produtos

  • O Devin impressiona quando entende formatação de código e configuração de testes locais, mas pode adicionar mudanças desnecessárias e acabar quebrando outras coisas. Como essas mudanças não podem ser desfeitas, é preciso fazer uma limpeza adicional. O Devin mostrou o potencial de workflows com agentes, mas não é recomendado porque não economiza tempo

  • Um usuário que usou bastante o Cursor sente que é preciso forçar o sistema em uma direção específica. Às vezes o LLM fornece snippets de código úteis, mas, quando segue na direção errada, é preciso interromper as sugestões e forçá-lo para outro caminho. O Cursor é especialmente útil para refatoração e economiza muita digitação e tempo.