
Uso da inteligência artificial para o desenvolvimento de aplicações: riscos e oportunidades
Grandes e médias empresas sofrem com a alta demanda de desenvolvimento de aplicações para o entorno dos diferentes ERP, questões muito específicas do negócio e sistematizar tarefas e processos das áreas de negócios. Isso resulta em um backlog, ou fila de espera, destas aplicações que, em empresas maiores, podem chegar até a alguns anos de espera.
Além do desafio de gerar impacto para o negócio com qualidade, no menor tempo e custo possível, CIOs e gestores das áreas de desenvolvimento de software e aplicações também enfrentam a escassez de mão-de-obra de desenvolvedores. O Brasil terá déficit de 530 mil profissionais de tecnologia até 2025, mostra estudo do Google Levantamento do Google for Startups sobre escassez no mercado de TI aponta que a falta de diversidade, a ausência de talentos com perfil sênior, entre outros fatores, tem impactado o setor.
Na prática, os salários se inflacionam, os custos aumentam e o trabalho de atrair e reter desenvolvedores se tornou um pesadelo para as áreas de TI.
E, na tentativa de diminuir o impacto deste problema, algumas empresas estão testando o uso de IA para desenvolvimento de aplicações, porém com riscos importantes que nem sempre são observados ou medidos.
Estou fazendo meu segundo curso sobre IA no MIT, este agora focado em como desenvolver motores de IA, ou seja, algoritmos da própria inteligência artificial e fica cada vez mais claro como o modelo estatístico inerente à tecnologia tem limitações importantes já em nível conceitual.
Por concepção, a IA é um modelo não determinístico, ou seja, os resultados podem variar a cada execução, mesmo sob as mesmas condições de entrada, característica comum de modelos de aprendizado profundo. Isso significa que a IA pode ser uma ferramenta de apoio muito eficaz para o desenvolvedor, mas não como ferramenta de desenvolvimento para todo o código.
E existem outros pontos críticos no uso de IA para geração de códigos.
O primeiro é qualitativo pois os códigos gerados não aplicam metodologias de desenvolvimento seguro, por exemplo, ao implementar a autenticação de usuários em uma aplicação, é necessário um conhecimento e cuidado para mitigar vulnerabilidades, de ataques de injection, por exemplo.
Usar modelos pré-fabricados diminui consideravelmente não apenas a robustez do código mas, gera um desafio de entendimento profundo sobre cada etapa e respectivo desdobramento do código utilizado. Quanto mais tempo um desenvolvedor se dedica a desenvolver partes críticas ou específicas de uma aplicação, mais ele internaliza boas práticas, se desenvolve e melhora o resultado.
Por ser um modelo probabilístico e não determinístico, um mesmo conjunto de parâmetros pode gerar diferentes códigos a cada vez que é solicitado, impactando diretamente com a padronização do código, gerando riscos não apenas no desenvolvimento da aplicação, mas a manutenção e documentação.
Depuração de código e correção de erros pode ser um problema já que a lógica e padrão do código não são padronizadas ou seguem uma estrutura definida.
Integração entre sistemas é um desafio à parte, não apenas pelas diferentes tecnologias possíveis, mas pelas particularidades decorrentes da customização destes sistemas. A IA não possui habilidades de raciocínio mais completas que permitem antecipar como um código pode ser otimizado ou mesmo se tornar desfuncional. Neste cenário a IA pode ignorar desdobramentos desfuncionais ou que geram vulnerabilidades também nos dados trocados com sistemas legado.
Os códigos gerados por IA podem tampouco prever lidar com uma quantidade massiva de dados, o que pode levar a problemas críticos de performance ou mesmo gargalos importante na aplicação.
Frequentemente, o código gerado por IA apresenta eficiência diminuída, dificuldade na interpretação do código por desenvolvedores e complexidade sensitivamente maior quando comparado com o código criado por desenvolvedores
Além disso o design, modularidade, estrutura podem ficar prejudicados por conta da própria compreensão da estrutura do código além da incapacidade da IA de explicar a lógica atrás do código.
Concluindo, como qualquer ferramenta a IA pode ter um papel muito relevante no apoio ao desenvolvedor, um co-pilot, por exemplo, e tem grande valor quando utilizada nas aplicações, para análises de dados, geração de relatórios customizados e até em substituição aos menus tradicionais.
Por outro lado, devido aos riscos, limitações, falta de padronização e segurança, a IA não se mostra como uma ferramenta indicada para geração de código para aplicações completas ou mesmo com maiores níveis de complexidade. Para esta finalidade, existem ferramentas de aceleração de desenvolvimento que, inclusive, utilizam IA em funções de apoio e até nas aplicações geradas.
Como qualquer tecnologia, o uso correto da IA pode ser um grande aliado, tanto dos desenvolvedores, como das próprias empresas.
Artigo escrito por Gustavo de Martini, head de Tecnologia Adjunto da ANEFAC