![Rust: o futuro do desenvolvimento de software à prova de falhas](https://optimuscloud.com.br/wp-content/uploads/2024/06/1718220125_Rust-o-futuro-do-desenvolvimento-de-software-a-prova-de-150x150.jpg)
Rust: o futuro do desenvolvimento de software à prova de falhas
12 de junho de 2024![Técnicas para usar LLMs para ajudar a escrever uma função Postgres](https://optimuscloud.com.br/wp-content/uploads/2024/06/1718239445_Tecnicas-para-usar-LLMs-para-ajudar-a-escrever-uma-funcao-150x150.jpg)
Técnicas para usar LLMs para ajudar a escrever uma função Postgres
12 de junho de 2024Apesar de ser relativamente nova no ecossistema de ferramentas para desenvolvedores, a IA continua a ter um impacto cada vez mais significativo na forma como os desenvolvedores realizam seu trabalho. De acordo com um relatório recente do Gartner, 75% dos engenheiros de software empresariais usarão assistentes de código de IA até 2028, um salto considerável em relação a apenas 10% dos entrevistados em 2023.
A empresa de pesquisa de desenvolvedores SlashData publicou recentemente uma pesquisa ainda mais otimista que revelou que 71% de todos os desenvolvedores estão trabalhando ativamente com IA “de uma forma ou de outra” e que “59% dos desenvolvedores usam ferramentas de IA em seus fluxos de trabalho de desenvolvimento”.
“Não acho que a IA vá substituir os desenvolvedores de software (ainda), mas acho que os desenvolvedores de software que usam IA podem substituir os desenvolvedores de software que não o fazem.”
– Shane Thomas, cofundador da Audiofeed
Embora o crescimento e o impacto da IA no desenvolvimento de software sejam inegáveis, queríamos ter uma noção real dos desenvolvedores sobre como eles estão usando pessoalmente as ferramentas de desenvolvimento de IA, por isso conversamos com vários engenheiros de software para descobrir – e também para obter feedback sobre os prós (e contras) do uso de ferramentas de desenvolvimento de IA.
Principais ferramentas de IA: programação em pares e conclusão de código
A maior categoria de ferramentas de IA usadas pelos desenvolvedores com quem conversei se enquadra nas categorias de programação de pares de IA e conclusão de código, ferramentas que podem gerar facilmente trechos de código e servir como assistentes automatizados para programadores.
GitHub Copilot foi mencionado por todos os desenvolvedores com quem conversei e parece ser uma das soluções mais populares para desenvolvedores que procuram uma ferramenta de IA.
“Para mim, o GitHub Copilot visa principalmente aumentar minha velocidade”, disse Shane Thomas, engenheiro de software veterano e cofundador da Audiofeed. “(GitHub Copilot) é melhor quando eu já sei o que quero escrever e ele pode preencher automaticamente essas seções para mim. Muitas vezes não está (completamente) certo, mas está direcionalmente correto. Isso me leva a 80% do caminho e posso atualizar as coisas que sei que estão erradas.”
Outros desenvolvedores disseram coisas semelhantes sobre o Copilot. “Eu uso o GitHub Copilot todos os dias”, disse Kristian Ranstrom, proprietário da Rainstorm Technologies e desenvolvedor experiente. “Ele está integrado ao Visual Studio e ao Visual Studio Code (e outros IDEs), portanto, usá-lo é extremamente fácil… você também pode usar a janela GitHub Copilot Chat para solicitar que ele faça algo. Por exemplo, ‘Como faço para redimensionar imagens em uma API em C#?’ ou ‘Escreva casos de teste para esta classe.’”
Bekah Hawrot Weigel, defensor técnico de IA da OpenSauced, disse que “GitHub Copilot e ChatGPT são as escolhas óbvias para melhorar a eficiência e se libertar”, e acrescentou que o uso de ferramentas de IA “… nos ajuda a encontrar as respostas certas mais rapidamente e conectar-se com as pessoas que têm essas respostas mais rapidamente.”
Thomas também conta com o Cursor IDE, que ele vê como um aprimoramento do VS Code. “Eu uso isso para conversar com seções do meu código ou da minha base de código quando não tenho certeza do que fazer… nem sempre é perfeito, mas muitas vezes me economiza uma quantidade significativa de tempo (em comparação com) um mecanismo de pesquisa ou no StackOverflow.”
Além do GitHub Copilot e do Cursor IDE, outras ferramentas de programação em pares e conclusão de código mencionadas pelos desenvolvedores com quem conversei incluem o próprio ChatGPT, Claude 3 Opus, Pieces for Developers e Codeium. Esta não é de forma alguma uma lista exaustiva e há várias outras ferramentas que os desenvolvedores podem querer considerar – e provavelmente mais aparecerão nos próximos meses e anos – mas as mencionadas acima parecem ser algumas das mais populares.
Outras ferramentas de IA para desenvolvedores
Além das ferramentas de programação em pares/completar código mencionadas acima, há uma série de ferramentas “adjacentes à IA” que visam facilitar a vida dos desenvolvedores de outras maneiras e foram recomendadas pelos desenvolvedores com quem conversei.
“Existem os completadores de código dos quais a maioria dos desenvolvedores já ouviu falar, como Copilot e outros”, disse Elizabeth Lawler, CEO e fundadora do AppMap. “Depois, há alguns mais astutos, como SuperMaven e Aider, e há ferramentas adjacentes que não são completadores de código, mas realizam um trabalho mais profundo de resolução de problemas e atuam como ‘agentes’ de trabalho de codificação profunda.” Lawler então explicou como o Navie do AppMap – que ela descreve como uma “arquiteta de software de IA para solução de problemas e projetos mais profundos e complexos e trabalhos de refatoração usando dados de tempo de execução como contexto” – cai na última categoria.
Fora das ferramentas baseadas em IA focadas especificamente em ajudar um desenvolvedor dentro de um IDE ou ao escrever código, a maioria dos desenvolvedores com quem conversei também está usando outras ferramentas de IA para aumentar sua produtividade em outras áreas.
Ranstrom disse que usou APIs para OpenAI / ChatGPT – bem como WriteSonic – para ajudar na criação de imagens e escrita de conteúdo, enquanto Weigel usa SwellAI para “dividir o conteúdo de áudio, redirecioná-lo em outras formas e destacar momentos importantes para compartilhamento, ”Bem como a ferramenta de edição de vídeo Descript, com tecnologia de IA, que ela usa para editar podcasts, demos e clipes de áudio. Ela também conta com o companheiro Zoom AI para reunir itens de ação, resumos e fazer referência a discussões anteriores.
Incentivo e cautela: conselhos gerais sobre programação de IA
Todos os desenvolvedores com quem conversei elogiaram o que a IA pode trazer para os desenvolvedores, desde aumento de produtividade até melhores oportunidades de aprendizagem. Dito isto, muitos também forneceram alguns conselhos gerais de desenvolvimento de IA com base em suas próprias experiências.
“Quanto melhor você for em alertar, mais eficaz a IA poderá ser.”
– Bekah Hawrot Weigel, defensora técnica de IA da OpenSauced
“A IA é uma ferramenta na sua caixa de ferramentas… existe para ajudá-lo a ser mais eficaz e a ultrapassar os limites do que poderia fazer de outra forma, mas não é uma ferramenta para tudo”, disse Weigel. “Se você precisar de uma chave inglesa, não use um martelo. Cabe ao usuário descobrir como usá-lo de forma eficaz e garantir sua precisão. A IA alucina com confiança, por isso não substitui o conhecimento que você não possui.”
Weigel também enfatizou que escrever avisos eficazes – ao usar ferramentas como ChatGPT – é uma habilidade que leva tempo para ser dominada, mas traz dividendos para os desenvolvedores de pacientes. “Ouço muitos desenvolvedores falarem sobre o quão ‘ruim’ é a IA como o ChatGPT”, disse Weigel. “Eles citarão respostas pouco claras ou erradas, mas me pergunto como serão suas instruções. Quanto melhor você for em alertar, mais eficaz a IA pode ser.”
Benefícios e Vantagens
Caindo diretamente na categoria de benefícios, Ranstrom disse que aproveitar a IA para ajuda na codificação teve um enorme impacto em sua produtividade. “(Usar o GitHub Copilot) me acelerou em cerca de 30%. Imagine precisar escrever uma aula longa: isso exige muita digitação. Mesmo que você possa copiar/colar algumas delas de outros lugares”, disse Ranstrom. “Em vez disso, escrevo um comentário explicando o que preciso fazer, o código é preenchido e eu o ajusto para atender às minhas necessidades.”
Thomas ecoa os benefícios de produtividade, destacando a “maior velocidade de desenvolvimento, melhor depuração e manutenção em relação a códigos desconhecidos”.
A ajuda com novas técnicas e abordagens também foi citada como um grande ponto positivo no uso da IA. “Quando peço ao Copilot para escrever algum código para mim, posso ver como outras pessoas lidaram com uma situação semelhante”, disse Ranstrom. “Atrás do Copilot estão milhões de linhas de código-fonte aberto.”
Weigel também enfatizou o aspecto positivo do aprendizado no uso da IA para o desenvolvimento. “A IA é uma ótima ferramenta de aprendizagem; é muito mais fácil aprender novas linguagens ou frameworks porque sempre há uma ferramenta pronta para tirar suas dúvidas.”
Contras e advertências
Embora o uso de ferramentas de IA possa ter um impacto positivo na eficiência e na educação dos desenvolvedores, todos com quem contatei também forneceram algumas advertências e histórias de advertência sobre o uso de IA para desenvolvimento.
“Você ainda não pode confiar 100% na IA para lidar com sua codificação. É bom em pedaços menores de código e vai ajudar muito, mas não é o melhor arquiteto de software.”
– Kristian Ranstrom, Tecnologias de Tempestade
“Depois que uma pessoa recebe uma calculadora, muitas vezes ela não precisa aprender como fazer as contas. Na maioria das vezes, provavelmente está tudo bem”, disse Thomas. “No entanto, algumas vezes, a compreensão realmente importa. Se você aproveitar a IA sem realmente entender como o código funciona, você não desenvolverá o pensamento crítico e as habilidades de resolução de problemas para resolver os problemas mais complexos que a IA atualmente não consegue resolver para você.”
Ranstrom ecoa essas preocupações. “Você ainda não pode confiar 100% na IA para lidar com sua codificação. É bom em pedaços menores de código e vai ajudar muito, mas não é o melhor arquiteto de software”, disse Ranstrom. “Atualmente, um ser humano ainda precisa estar no controle de um projeto e planejar adequadamente.”
Lawler também adverte os desenvolvedores menos experientes a não confiarem muito na IA, citando pesquisas que mostram o perigo de programadores novatos usarem a IA de maneira muito extensiva. “A pesquisa mostrou que os desenvolvedores menos experientes têm taxas de aceitação de código de IA mais altas, enquanto os desenvolvedores mais experientes veem mais falhas no código gerado por IA e têm taxas de aceitação mais baixas”, disse Lawler. “Um olhar discriminador é crucial para fornecer código de alta qualidade.”
Thomas aponta outra questão que sem dúvida se desenvolverá ao longo do tempo, à medida que as ferramentas e processos de desenvolvimento de IA continuarem a amadurecer: a IA e a privacidade de dados. “Isso não é um problema se você estiver escrevendo código para um projeto paralelo ou para uma pequena startup”, disse Thomas. “No entanto, fica mais complicado quando você escreve código para uma organização maior.”
Embora a privacidade de dados e a IA sejam um tópico muito amplo para ser discutido em detalhes aqui, de acordo com um relatório de privacidade de dados da Reuters – de autoria de Gai Sher e Ariela Benchlouch – o “paradoxo da privacidade da IA representa um dos desafios mais significativos do nosso tempo. À medida que avançamos, devemos garantir que a nossa busca pelo avanço tecnológico não seja feita à custa dos nossos direitos de privacidade.”
O futuro do desenvolvimento assistido por IA
Apesar das dificuldades crescentes, as ferramentas de IA estão provando ser companheiras de codificação inestimáveis para os desenvolvedores. Ranstrom observa que as ferramentas de IA que ele usa têm melhorado rapidamente. “Desde quando comecei a usá-lo até agora – e estamos falando apenas de meses – as recomendações de programação de IA ficaram muito melhores. Se você não estiver usando (ferramentas de programação de IA), provavelmente ficará comendo poeira, então minha recomendação é entrar na onda e aguentar firme.”
“Assim como não queremos ouvir a mesma música repetidamente, não queremos muitas versões do mesmo aplicativo”.
– Elizabeth Lawler, CEO e fundadora da AppMap
Tomás concorda. “Não acho que a IA vá substituir os desenvolvedores de software (ainda), mas acho que os desenvolvedores de software que usam IA podem substituir os desenvolvedores de software que não o fazem.”
Um tema consistente parece ser que as ferramentas de IA podem ser uma adição poderosa à caixa de ferramentas de um desenvolvedor, mas a parte indispensável da equação ainda é o ser humano dirigindo a IA.
Lawler lembra aos desenvolvedores que eles continuam sendo os criadores: “Você não terceiriza a parte criativa do seu trabalho para a IA, que é mais um analista do que um mágico. As IAs são bastante previsíveis, assim como a música gerada por IA”, disse Lawler. “Tudo começa a ‘soar igual’ depois de um tempo se você não der novas ideias para a composição. (Assim como nós) não queremos ouvir a mesma música repetidamente, não queremos muitas versões do mesmo aplicativo.”
A postagem Ferramentas de IA favoritas dos desenvolvedores e dicas para usá-las apareceu pela primeira vez em The New Stack.