A inteligência artificial, especialmente a IA generativa apoiada por modelos de linguagem avançados (LLMs), ameaça o sustento de muitos programadores. No entanto, alguns especialistas sugerem que a IA não substituirá imediatamente os desenvolvedores humanos.

Como os desenvolvedores de software podem se tornar mais valiosos na emergente era da codificação com LLMs? Aqui estão estratégias para programadores sobreviverem e prosperarem nesse novo mundo movido por IA generativa.

Embora os assistentes de codificação com IA facilitem a conclusão e a criação de código, os princípios fundamentais da programação permanecem: a habilidade de interpretar e refletir sobre seu próprio código e o dos outros, e compreender como o código individual se integra a um sistema maior.

A resolução de problemas continua a ser uma habilidade chave que os programadores humanos possuem. Analisar desafios e descobrir soluções elegantes ainda é uma competência de codificação muito valorizada. As boas práticas de engenharia de software são agora mais preciosas do que nunca, incluindo o planejamento de design de sistema e arquitetura de software, fornecendo um contexto robusto para que as ferramentas de IA prevejam eficientemente o próximo trecho de código necessário.

Escolher a ferramenta de IA certa é essencial. Cada ferramenta oferece formas distintas de interação e diferentes maneiras de integrá-la ao fluxo de trabalho de desenvolvimento, seja na automação de testes unitários, geração de dados de teste ou elaboração de documentação.

O GitHub Copilot e outras IA’s assistentes de codificação, por exemplo, podem melhorar a programação, sugerindo ideias enquanto você escreve. Já o ChatGPT e o Bard do Google funcionam como programadores de IA conversacionais, respondendo a perguntas sobre APIs ou gerando partes do código.

O segredo é testar. Explore a ferramenta de IA, avalie seus resultados e mantenha-se aberto a outras soluções. Pense também em casos de uso adequados.

Ferramentas de IA generativas podem abreviar a curva de aprendizado de novas linguagens de programação ou frameworks, além de acelerar o início de pequenos projetos e a criação de protótipos. Para engenheiros de IA conversacional, é necessário dominar a formulação de prompts, onde entra a engenharia de prompts, além do prompt em cadeia de pensamento, uma estratégia que divide problemas em etapas menores para uma resolução abrangente.

Ao invés de solicitar que uma IA crie um programa inteiro do zero, divida-o em tarefas e peça ao modelo que desenvolva funções específicas para cada uma. Muitas vezes, uma interação colaborativa com o modelo sobre os passos necessários é necessária, resultando numa troca construtiva.

Aprender os fundamentos de IA e machine learning, bem como ter noção de como grandes modelos de linguagem funcionam, pode ser vantajoso. Não é preciso se aprofundar, mas ter conhecimento básico oferece um contexto valioso sobre os resultados gerados.

Para começar, o OpenAI Cookbook oferece seções sobre bibliotecas de prompts, guias de prompts e cursos em vídeo. Engenheiros de software devem avaliar criticamente as saídas dos LLMs, já que estes podem produzir códigos imprecisos. Verificar o código gerado é crucial, mesmo sendo uma etapa adicional que pode impactar a produtividade. Contudo, revisar o código é frequentemente mais rápido do que escrevê-lo do zero.

Colocar as saídas desses modelos em perspectiva é vital, fazendo perguntas como: em quais dados o modelo foi treinado? O que foi filtrado nesses dados? Qual é a idade dos dados e qual a versão de linguagem ou biblioteca usada? Respostas a essas perguntas influenciam os resultados e fornecem contexto adicional.

Desenvolvedores devem estar atentos ao incluir código proprietário nesses modelos. A questão dos direitos autorais é um aspecto a ser considerado, embora menos preocupante quando o objetivo é complementar algumas linhas de código ou criar soluções para tarefas rotineiras e simples, em vez de desenvolver blocos extensos de código.

Para prosperar em um cenário dominado pela IA generativa, programadores devem abraçar a inteligência artificial como uma aliada. Isso significa integrá-la ao seu processo de trabalho, valorizando suas oportunidades e limitações, enquanto dependem das habilidades humanas de codificação para alcançar o sucesso.