Um dos melhor cases de aplicação de inteligência artificial, e que demonstram os pros e os cons do seu uso, é um exemplo autorreferente: o desenvolvimento de software. Qualquer desenvolvedor sabe da quantidade de tarefas repetitivas e passíveis de automação que estão envolvidas no processo e sabe também das tarefas em que é necessário a intervenção da expertise de um bom profissional experiente para chegar numa solução. Para exemplificar estas duas naturezas com um bom exemplo, imaginemos que um modelo de IA pode desenvolver completamente e de forma autônoma uma excelente solução de gerenciamentos da reserva de quartos de um hotel, mas nunca será capaz de sugerir nem de imaginar uma resposta ou uma solução como o AirBnb. A partir desse cenário, começa a busca sobre como se pode usar de maneira mais efetiva este novo paradigma, quais são os passos e os recursos indispensáveis e elaborar uma metodologia de trabalho. A computação é uma ciência determinística e esse último passo é inevitável e servirá para esclarecer o que é realidade e o que é apenas hype passageira.

Inteligência Artificial Generativa

A IA generativa foi (é) responsável pela disseminação do paradigma da inteligência artificial num número cada vez maior de cenários e aplicações. A partir da geração de conteúdo produzido por modelos de aprendizado de máquina em oposição ao uso preditivo desses modelos, a IA Generativa conquistou espaços e obteve resultados surpreendentes que levaram a criação de distopias que afirmam que um dia seremos controlados pelas máquinas. O sucesso de alguns cases é, de fato, impressionante e temos a sensação de estar interagindo com uma "inteligência", ao passo que por trás dessa interação está um modelo probabilístico que repete com uma altíssima eficácia a detecção e a produção de padrões repetitivos.

A linguagem é um bom exemplo dessa ilusão de autonomia que um modelo de IA apresenta. Mediante o treinamento de modelos treinados com o imenso corpus de dados de texto disponíveis digitalmente e com o uso de tecnologias e algoritmos para usar a informação da internet ou de documentos submetidos em tempo de execução ao modelo, o resultado é impressionante. Os agentes de IA generativa conversam com recursos de linguagem muito humanos e o diálogo está muito longe de ser uma fria interação homem maquina. Mas o modelo não criou esse modo cortês e polido de responder as perguntas, ele copiou o que viu nos textos que foram usados para treiná-lo. Não há uma escolha, não há livre-arbítrio, um computador é um dispositivo que obedece a comandos padronizados, obedientemente, com alta velocidade e eficácia. Não há semântica em um chat com um agente de IA, há apenas gramática perfeita, algum estilo, figuras de linguagem e para confirmar a precisão da imitação que os modelos fazem do ser humano, existe até as imperfeições (alucinações).

Outro caso de aplicação da IA que merece destaque é a sua utilização no mundo das linguagens de programação. As linguagens de programação são muito menos ricas que as linguagens naturais e possuem regras muito mais restritas e lógicas. Desta forma, o resultado da interação e do treinamento dos modelos a partir do conteúdo usado para programar e desenvolver programas é muito promissor. Rapidamente os modelos de IA começaram a gerar código a uma velocidade surpreendente e reduzindo o processo de desenvolvimento de forma bem acentuada. A IA é imbatível mais uma vez. Mas novamente voltamos a questão levantada no início desse artigo: até que ponto os processos envolvidos no desenvolvimento de um software podem ser delegados para um agente de IA. Como todo novo paradigma tecnológico, a Inteligência Artificial está penando para encontrar a melhor forma de se estabelecer e prosperar. O mundo do desenvolvimento caminha rapidamente e já passou por algumas lições que estão apontando a direção que o domínio da inteligência artificial deve assumir.

Vibe Coding

Uma destas experiências começou com um tom bastante irônico e até crítico, a vibe coding. As ferramentas de IA gerariam as aplicações através de comandos (prompts) bem especificados e o desenvolvedor não precisaria fazer nada, bastaria ele captar a vibração do código e comunicá-la à engine de IA. O desenvolvedor escreveria sua intenção e a IA geraria arquivos inteiros, corrigiria os possíveis bugs e publicaria a aplicação pronta. Seria como programar usando linguagem natural, baseado em iterações rápidas e um grau supremo de abstração, pois o desenvolvedor não teria ideia do código usado para cobrir a demanda especificada. Linus Torwald, o pai do Linux, até gostou da ideia mas cravou uma advertência: funciona, desde que não seja usada em nenhuma solução séria.

Só que um dos maiores triunfos do vibe coding acabou se tornando um dos seus principais problemas, Como o desenvolvedor muitas vezes não escreve, e às vezes nem lê, as centenas de linhas geradas pela IA, o código se torna uma caixa preta. Surgem as dificuldades de manutenção ,um possível débito tecnológico pois as tecnologias não foram escolhidas pelo desenvolvedor, as alucinações que podem sugerir soluções que não existem e as brechas de segurança que não podem ser auditadas. Com o tempo, a equipe de desenvolvimento perde a capacidade de explicar como o software que eles mesmos "criaram" funciona.

A comunidade de desenvolvimento percebeu que o vibe coding não resolveria os desafios do desenvolvimento de software através da Inteligência Artificial. Mas aprende uma lição: as ferramentas de IA generativa são muitos boas, mas uma solução de desenvolvimento de software não é bem uma "conversa" no sentido tradicional do termo. O poder da Inteligência Artificial poderia ser melhor utilizado se ela pudesse ser configurada para reter mais informações necessárias que gerariam uma especificação mais precisa do que iria ser construída. Especificações são um elemento clássico de paradigmas de desenvolvimento de software. Parece que foi encontrada a interseção entre estes dois mundos.

Desenvolvimento de Especificações

No passado do desenvolvimento de software usava-se o termo water fall para designar uma metodologia que consistia em uma análise profunda de requerimentos onde se define tudo que um sistema de informação deve fazer. A partir dessa extensa documentação gerada, partia-se para o desenho da arquitetura, do banco de dados e das interfaces. A codificação começa apenas quando é finalmente aprovado. O desenvolvimento baseado em especificações (SDD - Spec Drive Development) é a versão moderna desta metodologia usando os agentes de IA. Os agentes de IA são usados para gerar especificações, a documentação dos requerimentos do projeto, que funcionarão como uma "memória" para as futuras requisições de geração de código.

Anteriormente vimos por aqui uma metodologia para lidar com o vibe coding, a Context Driven Development, que foi apresentada na ferramenta de IA Gemini da Google. Uma outra metodologia chamada Spec Driven Development está ganhando força e um bom exemplo de sua utilização foi lançado pelo Github, em um projeto chamado Spec Kit. Através de uma série de templates e da configuração de comandos que são adicionados a sua ferramenta de IA preferida (o kit é agnóstico e funciona em várias ferramentas de IA), as especificações tornam-se a nova fonte da verdade e se tornaram os novos "executáveis". A tecnologia e o código são apenas uma característica dentro do projeto que é uma representação fiel das especificações.

Share this article
The link has been copied!