WEB3DEV

Cover image for IA para uma Codificação Eficiente: O que os Líderes de Engenharia Precisam Saber
Fatima Lima
Fatima Lima

Posted on

IA para uma Codificação Eficiente: O que os Líderes de Engenharia Precisam Saber

#ia
Está pensando em adicionar ferramentas com tecnologia de IA aos fluxos de trabalho de desenvolvimento de software do seu time? Obtenha as informações da Whitespectre em primeira mão sobre os experimentos de integração de ferramentas de IA para aumentar a eficiência e a eficácia da codificação.

Este artigo foi escrito de forma colaborativa pelos membros do time de Engenharia da Whitespectre, Diogo Rosa e Jefferson Tavares de Pádua, e pelo Líder Sênior de Conteúdo, YeeLin Thum.

Image description

O desenvolvimento de software está passando por uma transformação impulsionada por IA, com novas ferramentas que oferecem a promessa de maior eficiência, lançamentos de software mais rápidos e até mesmo uma experiência aprimorada para o desenvolvedor.

No entanto, apenas cerca de 44% dos desenvolvedores usam atualmente ferramentas de IA em seu processo de desenvolvimento.

Isso ressalta uma realidade mais ampla: apesar do merecido burburinho, a maioria dos times permanece à margem enquanto os CTOs e os líderes de tecnologia determinam seu próximo passo.

A verdadeira questão para os líderes de tecnologia não é apenas o potencial futuro da IA, mas como a IA pode realmente aumentar a eficiência e a eficácia de um time de engenharia agora? E, consequentemente, como as equipes podem maximizar os benefícios dessas ferramentas e, ao mesmo tempo, minimizar os riscos e as consequências indesejadas?

Continue lendo enquanto a equipe de engenharia da Whitespectre compartilha sua experiência prática de trabalho e experimentação com ferramentas de IA.

Neste artigo, forneceremos insights valiosos para os times de engenharia que buscam integrar a IA em seus fluxos de trabalho e ficar à frente da curva.

Adotando a IA como um time de Engenharia

O desenvolvimento de software exige agilidade, eficiência do fluxo de trabalho e capacidade de adaptação. A IA está à altura do desafio, ajudando os desenvolvedores a economizar tempo em tarefas rotineiras, acelerar a solução de problemas, otimizar a alocação de recursos e aproveitar insights preditivos para desafios técnicos.

Mas a realidade do uso da IA no desenvolvimento de software é sutil:

  • Como você equilibra a velocidade sem comprometer a qualidade do código?
  • Quanto ajuste fino é necessário para o código gerado por IA?
  • E como você lida com questões de lacunas de habilidades, resistência à adoção de IA, privacidade de dados e com a possibilidade de o código perder seu toque exclusivo com o tempo?

Para CTOs e líderes de tecnologia, isso se traduz em várias considerações importantes:

1. Escolhendo a ferramenta de IA correta

Quais são as melhores ferramentas com tecnologia de IA para potencializar suas tarefas diárias? Qual é o melhor uso da IA para automatizar alguns de seus fluxos de trabalho diários? Além dos recursos anunciados, qual é o grau de confiabilidade dos resultados gerados por eles?

2. Complexidade da integração do fluxo de trabalho de IA

A integração de ferramentas de IA faz sentido para você e seu time agora? E, em caso afirmativo, qual é a complexidade do processo de integração?

3. Habilidades e mudanças culturais

Quantos recursos são necessários para treinar o time para usar as ferramentas de IA de forma eficaz? Fundamentalmente, como você pode promover uma cultura em que a IA seja vista como um ativo colaborativo em vez de um substituto para o time?

4. Avaliação de valor

Qual é o impacto da integração da IA em seus fluxos de trabalho ou no ecossistema existente? Como você quantifica as melhorias na eficiência, na produtividade e na qualidade do código? Quais são os custos associados e eles justificam assinaturas premium para todo o time?

Alcançar o equilíbrio certo entre esses fatores é fundamental para integrar com sucesso a IA em seu processo de desenvolvimento de software.

Uso de IA para fornecer código de forma mais eficiente e eficaz

Embora a IA prometa uma codificação mais rápida e eficiente, fomos cautelosos em nossa abordagem inicial. Testes diretos e discussões pontuaram nossa exploração de ferramentas e modelos de IA para desenvolvimento de software, como ChatGPT, Copilot, Bard, Cursor e Anthropic’s Claude V2.

Também estamos de olho em outras ferramentas avançadas de IA, como CodeRabbit, Code Llama e AWS CodeWhisperer. No entanto, continuamos sendo seletivos para garantir que cada ferramenta se alinhe aos nossos desafios específicos e à nossa filosofia de criar soluções de software seguras, escaláveis e robustas.

Até mesmo trouxemos essa inovação habilitada para IA para dentro da empresa por meio do Whitespectre Labs, nossa incubadora interna de produtos. Nossa equipe está criando uma ferramenta com tecnologia LLM - com a ajuda do Claude V2 da Anthropic - projetada para se integrar ao JIRA por meio de nosso bot interno de automação de tarefas, capacitando as equipes de projeto a otimizar seu fluxo de trabalho, fornecer resultados excepcionais e alcançar o sucesso do projeto.

Por fim, além dos ganhos de produtividade, sempre priorizamos a segurança dos dados e a adequação às normas. Esses aspectos são cruciais, dada a nossa função em projetos de clientes relacionados a HIPAA, GDPR e bancos. Com o número de ferramentas de IA emergentes no mercado, escolhemos ferramentas de fontes estabelecidas, como OpenAI e GitHub, que depois configuramos adequadamente para garantir a segurança ideal. Por exemplo, adotamos o Cursor não apenas porque ele combina os recursos do ChatGPT e do Copilot, mas também por causa de seu recurso de privacidade no modo local.

Nossos experimentos e a implementação de ferramentas de IA em nossos fluxos de trabalho de codificação e controle de qualidade nos levaram a três insights principais:

1.As eficiências adicionais levam a ganhos cumulativos

Aproveitando as ferramentas de IA em nossos fluxos de trabalho, estimamos, de forma conservadora, um aumento de aproximadamente 20% na eficiência operacional diária em relação à pesquisa inicial, código padrão, trechos de código simples ou extração de dados. Ferramentas como o ChatGPT e o Copilot estão liberando horas por mês. Esse tempo economizado permite que nossos desenvolvedores se concentrem no trabalho de codificação criativa e na inovação. *Uma advertência *: Essas eficiências às vezes são compensadas pelo tempo gasto com ajustes no código gerado pela IA para garantir que ele atenda aos padrões e requisitos de código específicos do nosso time.

2. Para obter o valor máximo, é essencial escolher a ferramenta de IA certa

A eficácia de uma ferramenta de IA depende de seu alinhamento com tarefas específicas. Portanto, aqui é importante entender os pontos fortes e as limitações das ferramentas que você está testando.

Por exemplo, embora o ChatGPT e o GitHub Copilot agregam valor significativo como assistentes de codificação, o ChatGPT se destaca na geração de linhas de comando. Ao mesmo tempo, devido ao seu vasto repositório do GitHub, o Copilot muitas vezes supera o ChatGPT em tarefas como o preenchimento de código.

Outro exemplo é que o nosso time de controle de qualidade encontrou mais utilidade no Bard do que no ChatGPT para a criação de conjuntos de testes, dada a falta de familiaridade do ChatGPT com bibliotecas mais novas, como a Maestro.

3. A IA é uma parceira, não uma substituta

As ferramentas de IA nos poupam tempo em tarefas de codificação repetitivas e aceleram os processos. Mas elas não diminuem a função do desenvolvedor. Em vez disso, elas capacitam os desenvolvedores a fazer seu melhor trabalho.

Além disso, embora sejam ferramentas "inteligentes", elas não têm o toque humano necessário para compreender o contexto, as nuances sutis e a capacidade inata de juntar as peças.

Portanto, embora as ferramentas de IA possam ajudar seu time a lidar com o trabalho pesado, os engenheiros humanos devem permanecer no comando do design do código, da estratégia, da tomada de decisões e da direção.

Jefferson Tavares de Pádua observa em seu artigo

testando o ChatGPT para validação da lógica comercial que o resultado da IA às vezes parece enganosamente preciso. No entanto, distinguir o certo do errado pode ser um desafio para a ferramenta sem um ponto de referência.

“Veja bem, parece que o ChatGPT realmente entendeu o contexto que eu dei a ele e também explicou como chegou a essa solução de uma forma muito confiante e eloquente. Portanto, a menos que eu já soubesse qual era a resposta correta, não há como dizer que essa está errada, pois a IA não indica seu "nível de confiança" para mim.”

Lembre-se de que a avaliação de IA vai além de meras comparações de recursos. Sua seleção não só impacta na eficiência imediata do desenvolvedor e na resiliência e a segurança de longo prazo de seus produtos de software. Ferramentas como ChatGPT e Copilot tornam a codificação mais rápida, mas funcionam melhor quando combinadas com as tarefas certas. Em última análise, a combinação de ferramentas de IA com insight humano oferece os melhores resultados.

O papel da IA na entrega eficiente e oportuna de software: Teoria vs. realidade

Com base em nossa experiência, as capacidades da IA para o desenvolvimento de software, embora promissoras, às vezes podem ser exageradas. É fundamental abordar o papel da IA no fornecimento eficiente de software com uma perspectiva equilibrada.

Aqui estão três áreas em que se deve proceder com cautela:

1. Complexidade do produto ou do projeto

As ferramentas de IA são particularmente eficazes para provas de conceito (POCs) ou soluções de software com regras de negócios mais simples. No entanto, essas ferramentas podem não ser tão úteis para produtos com camadas complexas de regras de negócios, como um aplicativo de devoluções de comércio eletrônico em que é necessária uma interação humana mais profunda.

2. Dinâmica do código existente

As ferramentas de IA são úteis para dar início a projetos de codificação do zero. No entanto, usá-las no meio do projeto pode ser um desafio, especialmente quando há uma base de código existente e diretrizes pré-existentes que precisam ser consideradas.

Isso requer escrever prompts eficazes e entender claramente o resultado desejado de antemão, o que pode consumir muito tempo e possivelmente levar mais tempo para chegar ao resultado desejado.

3. Medindo a eficiência do time

O impacto da IA na eficiência do desenvolvimento de software não é linear nem fácil de medir. Essa é uma questão complicada e algo que ainda estamos explorando.

Medir o aumento da eficiência de uma equipe de engenharia ao usar ferramentas de IA é um desafio devido aos contextos variados, à dificuldade de quantificar fatores qualitativos e à complexidade de estabelecer padrões de medição consistentes. O impacto da IA no desempenho da equipe pode ser mais aparente durante o desenvolvimento do código, mas pode ser menos tangível em outras fases do ciclo de vida do desenvolvimento de software.

Uma abordagem a ser considerada é medir o desempenho por meio de métricas focadas em resultados, como a progressão do projeto com base na velocidade da equipe, em que o acompanhamento da progressão é baseado em burndowns de sprints de duas semanas. Inclua burnups de recursos e versões para um controle de desempenho mais abrangente.

O resultado final: Avaliar, experimentar e iterar com ferramentas de IA para codificação a fim de maximizar o valor e a eficiência

Uma coisa é certa: a IA veio para ficar e está remodelando rapidamente a maneira como criamos, testamos e fornecemos softwares excelentes. Com sua integração, os desenvolvedores estão mais bem posicionados para alcançar um estado de fluxo produtivo. Isso promove a comunicação e a colaboração eficientes e abre portas para o aprimoramento das habilidades e das competências individuais.

Refletindo sobre nossa experiência e sobre as tendências mais amplas do setor, aqui estão três conclusões importantes para as organizações que buscam integrar ferramentas de IA em seus fluxos de trabalho de desenvolvimento:

  • Escolha a ferramenta de IA certa para o trabalho — As ferramentas de IA não são únicas. É necessária uma abordagem estratégica para alinhar a ferramenta de IA às necessidades específicas e aos tipos de projeto. Avalie as tarefas/fluxos de trabalho internos que podem ser automatizados com a ajuda da IA e, em seguida, selecione uma ferramenta de IA adequada que se encaixe no projeto.
  • Cultivar uma cultura positiva para IA — Para uma integração bem-sucedida, promova uma mentalidade em que as ferramentas de IA capacitem seu time, não a substituam. Incentive a experimentação prática para ajudar seu time a superar quaisquer reservas que possam ter.
  • Incentivar o aprendizado iterativo — A integração da IA não é um evento único. O aprendizado contínuo, o feedback e a adaptação são fundamentais para maximizar seus benefícios.

A combinação da experiência do desenvolvedor com a velocidade da IA faz mais do que apenas otimizar o código e aumentar a eficiência. Ela coloca sua organização na vanguarda da inovação, garantindo que você permaneça competitivo em um cenário de software em rápida evolução.

À medida que continuamos nossa exploração com a IA, continuamos comprometidos em fornecer soluções robustas, seguras e escaláveis para nossos clientes parceiros. Se você está procurando um parceiro para ajudá-lo a navegar estrategicamente no cenário de IA, adaptado às metas específicas da sua organização, mantenha contato.

Esse artigo foi escrito por Whitespectre e traduzido por Fátima Lima. O original pode ser lido aqui.

Top comments (0)