Opinião sobre Vibe Coding e um novo app para renomear arquivos em massa

Desenvolver sem ser desenvolvedor? :thinking:

Vibe Coding é algo em que eu ainda sou novo, então se eu disser qualquer coisa errada sintam-se livres para me corrigir.

Não sou desenvolvedor e nem tenho planos para seguir carreira nessa área, porém, como entusiasta de desenvolvimento de software e TI em geral, sempre tive vontade de por as minhas ideias de desenvolvimento em prática. O problema é que aprender a programar e se tornar bom nisso demanda bastante tempo e como tenho trabalho para fazer e contas para pagar, fica difícil achar tempo para realmente me dedicar a isso.

É aí que o Vibe Coding entra na jogada. Até aonde eu sei, Vibe Coding é desenvolver código utilizando linguagem natural. Basicamente, dizer para a AI: escreva um código fonte na linguagem “tal” utilizando o toolkit de interface “tal” que faça “isso” e “aquilo”. Você explica pra AI o que você quer que o app faça e como ele deve funcionar e a AI escreve o código para você. Depois, você instala as dependências necessárias para fazer os testes e compilar o código de acordo com a necessidade.

Há algum tempo atrás eu estava precisando de um app para renomear arquivos em massa, então pensei: por que não criar o meu próprio app que funcione como eu quero?

Criando o meu primeiro app

É claro que eu sei que existem muitos apps pra isso, mas naquele momento o objetivo não era apenas renomear arquivos, mas sim me divertir criando o meu próprio app sem precisar dedicar centenas ou milhares de horas estudando programação (até porque eu nem teria tempo pra isso, a vida não deixa).

Dessa “brincadeira” surgiu o Mass Renamer. Um app para renomear arquivos em massa escrito em Python com interface desenvolvida em Qt6 pensado não para ser o mais poderoso - até porque está longe disso - mas sim para ser fácil, rápido e prático de se utilizar.

O quê vocês pensam sobre Vibe Coding?

Gostaria muito de saber o que a comunidade do Diolinux pensa sobre Vibe Coding, já que é um tópico que não vi ser abordado muito aqui no fórum.

Não deixe de dar uma olhada no Mass Renamer, que está disponível em AppImage no Github e pode ser utilizado, teoricamente, em qualquer distro Linux. Até agora só testei no Linux Mint 22.2. Também existe um .exe para Windows lá no Github, porém este ainda está na versão 1.0 com interface construída com o customtkinter. Funciona da mesma forma, mas o visual é menos moderno e agradável.

Ah e é claro que o Mass Renamer é software livre.

Me conta aí o que vocês pensam sobre Vibe Coding e se vocês já se aventuraram nessa área!

Como desenvolvedor de software, eu acho vibe coding super válido para quem não é desenvolvedor, mas recomendo muito cuidado e bom senso. Você precisa ter algumas coisas importantes em mente:

  • LLMs falham, bastante.
  • O código gerado deve SEMPRE ser tratado como não confiável.

O que isso significa? Que eu não sairia rodando código feito por uma IA sem limitar os privilégios desse código, e em que arquivos esse código pode tocar.

Na prática, que eu não deixaria tal software fazer nada cuja falha me faria se arrepender, como, por exemplo, manejar arquivos dos quais não tenho backup.

2 curtidas

Interessante ver o ponto de vista de um dev aqui da comunidade. No meu caso, como não sou dev nem planejo ser, faço isso como um hobby. Por ser entusiasta. E como qualquer hobby, está limitado ao meu tempo livre.

Por isso jamais pensei em distribuir esse app comercialmente, ou qualquer outro app que eu venha a criar utilizando esse método. Além disso, também é muito bom que o código esteja disponível no Github, caso algum dev de verdade tenha interesse em verificar se tem algo “suspeito” que a IA possa ter criado.

EDIT: A parte “triste” do vibe coding, na minha opinião, é que eu não duvido que hajam empresas grandes desenvolvendo com IA e distribuindo os seus softwares com o código fechado.

1 curtida

Encaro o vibe coding quase como jogar videogame. Não preciso ser o melhor do mundo, mas quero ter a sensação de vitória ao derrotar um chefão. A vantagem do vibe coding é que no final há possibilidade de um resultado que pode ser aproveitado. Já a desvantagem é que possivelmente o código não será muito bom, mas será bom o suficiente para resolver o problema.

Ampliando a visão de mim para o mundo, o vibe coding tem um potencial de inclusão de pessoas para um novo nível de solução de problemas relativamente simples, atuando como poderosa ferramenta. Já a desvantagem são os problemas criados por essa nova alternativa, especialmente sobre o consumo energético planetário e seus impactos para o futuro do planeta, uma vez que a tecnologia não está sendo usada levando-se em conta a própria sustentabilidade.

Um ponto interessante de debate é sobre licenciamento de software gerado por IA. Como poderia o autor ser proprietário do código para escolher o tipo de licença? Tecnicamente a autoria seria apenas dos prompts, enquanto o código gerado ainda está num limbo onde o debate é bem extenso e depende dos dados de treinamento, trabalho das pessoas envolvidas e propriedade dos aparelhos envolvidos.

2 curtidas

Com certeza ajuda a avaliar quando o código está aberto, outra dica que daria, é ser explicito e deixar claro que é uma ferramenta gerada por não desenvolvedores com IA no README.

O meu conselho com relação à vibe codding, é que o problema não mudou muito, o leigo continua podendo dar um tiro no pé ao dar permissão para o computador fazer algo que ele não compreende muito bem. (honestamente, o dev também, imagine o leigo)

Por exemplo, indo um pouco mais a fundo nas “minudências”, vibe coding costuma ignorar preocupações transversais responsáveis por garantir a integridade, consistência e qualidade.

Eu também não vejo problema algum no uso por desenvolvedores, eu pessoalmente tenho os lugares onde eu acho que é super de boas usar (camada da GUI) e lugares onde u torço o nariz (infraestrutura e backend, modelando transações, queries, comandos de escrita). Mas no geral, não é “lobo mau”, é só uma ferramenta. :sweat_smile:

2 curtidas

Interessante ler os pontos de vista de vocês.

Na verdade isso está no readme, logo abaixo da imagem do app, na seção “Purpose/Propósito”. Mas pode ser uma boa ideia dar mais destaque a essa informação. Valeu pelo feedback! :vulcan_salute:

1 curtida

Por exemplo, posso estar enganado, mas dando uma olhada por cima do código gerado, eu vi que está sendo usado os.rename, cujo comportamento pode ser perigoso em sistemas unix, e no caso, não cheguei a encontrar nenhum lugar onde o software pergunta se o usuário gostaria de substituir o arquivos ou não.

Na versão atual ele só exibe uma caixa de diálogo com “Sim” e “Não” para renomear os arquivos quando há caracteres inválidos nos novos nomes. Do contrário, ao clicar em “Renomear” ele simplesmente renomeia. A tua dica é adicionar uma caixa de confirmação antes de renomear?

E quanto ao os.rename, o que seria mais recomendado no lugar?

de uma olhada com calma no link que mencionei, citando:

On Unix, if src is a file and dst is a directory or vice-versa, an IsADirectoryError or a NotADirectoryError will be raised respectively. If both are directories and dst is empty, dst will be silently replaced. If dst is a non-empty directory, an OSError is raised. If both are files, dst will be replaced silently if the user has permission. The operation may fail on some Unix flavors if src and dst are on different filesystems. If successful, the renaming will be an atomic operation (this is a POSIX requirement).

Ou seja, se um arquivo já existe no destino, com o mesmo nome, ele vai ser silenciosamente substituído. E se for um arquivo importante, que você esqueceu que está lá, com dados diferentes, que você não quer/pode perder?

1 curtida

Por exemplo, entrando nos detalhes que costumam ser chatos para leigos sobre QA em desenvolvimento de sofware, nós costumamos realizar testes automatizados em ambientes controlados. Para melhorar a robustez do software.

Você pode pedir para a IA cria testes automatizados, onde o seu software é instalado em um contêiner Docker e precisa executar uma lista de tarefas nas quais o resultado deve ser verificado e o software deve passar.

Testes não necessariamente devem so testar cenários positivos, mas negativos também (meu software falhou graciosamente neste cenário)?

EDIT: Isso vai ser bem útil para o modelo inclusive, testes automatizados são mais uma fonte de feedback na hora de modificar código existente, para não cometer erros novamente.

1 curtida

Certamente vou me aprofundar mais sobre isso e seguir as tuas sugestões. Mesmo sendo por hobby, se for fazer algo é importante que seja bem feito. :folded_hands:

1 curtida

Claro, como o @Deleterium comentou, vibe coding também pode ser uma forma de se divertir com qualidade (aprendendo algo novo).

A ideia com testes automatizados é você (e porque não a IA também) explorarem formas de fazer o seu app dar errado, com segurança (isolado no docker), usando isso para melhorar o código.

1 curtida

@romulopb

Fazendo uns testes aqui…

O que mudou:

  • Verificar automaticamente por nomes de arquivo que já existem na pasta selecionada.
  • Apresentar uma caixa de diálogo clara e informativa ao usuário, explicando as opções.
  • Permitir a resolução automática de conflitos ou o cancelamento com um relatório de erros detalhado no log.

1 curtida

É isso ai, outra questão que estava vendo no código, como desfazer o “mass rename” se o seu app morrer no meio do caminho? Afinal, você não guarda rename_history em memória persistente. Uma abordagem prática é criar a lista em /tmp.

1 curtida

Boa! Já vou por isso na minha lista de “to do”. :+1: