Enable javascript in your browser for better experience. Need to know to enable it? Go here.

IA Generativa e o ciclo de vida no desenvolvimento de software

Muito mais do que assistência de programação
A IA generativa tem um potencial significativo para a produtividade dos desenvolvedores de software. Mas para aproveitá-la com sucesso, ela precisa ser vista como mais do que apenas uma ferramenta para geração de código.

A IA generativa (GenAI) pode revolucionar o desenvolvimento de software. Ela tem a capacidade de impulsionar ganhos significativos de produtividade para os desenvolvedores de software e pode acelerar tanto o ciclo de inovação quanto o tempo de lançamento no mercado. No entanto, seu impacto potencial pode ser severamente prejudicado se for visto de forma limitada como pouco mais do que uma ferramenta para geração de código. Essa visão é, infelizmente, bastante comum; ela se baseia em um mal-entendido tanto da GenAI quanto da prática de desenvolvimento de software.

 

Isso significa que há uma oportunidade real para líderes de negócios e tecnologia que estejam dispostos a se envolver de perto com o processo de desenvolvimento de software e o trabalho de suas equipes de tecnologia. Ao reconhecer onde a GenAI pode apoiar os desenvolvedores de software e onde não pode, eles podem ser os primeiros a aproveitar a GenAI de forma eficaz para obter uma vantagem competitiva real, capacitando os desenvolvedores de software a não apenas trabalhar mais rápido, mas também a trabalhar de forma mais inteligente.



Onde a IA generativa pode agregar valor?

 

A GenAI pode, sem dúvida, agregar valor significativo a todo o ciclo de vida de desenvolvimento de software. No entanto, é importante observar que quantificar esse valor é excepcionalmente difícil. Na verdade, existe o risco de que a necessidade de quantificar o valor agregado da GenAI esteja contribuindo para um estreitamento do impacto potencial da GenAI. Na Thoughtworks, acreditamos que é contraproducente focar no benefício obtido apenas com a produtividade do código; defendemos a visão de que a GenAI é parte das ferramentas que, juntamente com as formas de trabalhar e as topologias de equipe certas, são essenciais, em nossa experiência, para impulsionar a redução do tempo de lançamento no mercado, aumentar a qualidade e manter continuamente o moral da equipe. Isso é distinto da abordagem adotada em estudos e na imprensa recentes, que se concentraram em medir velocidades de codificação no contexto de problemas delimitados e relativamente simples, deixando o valor da GenAI em outras partes do processo de desenvolvimento de software amplamente ignoradas.

 

Essas são frequentemente partes do trabalho de desenvolvimento de software que são complexas, normalmente pontos de fricção ou desperdício. Embora possam não se prestar a uma medição fácil, são, acreditamos, as partes em que o uso da GenAI pode realmente ser o mais impactante. Nos últimos meses, um pequeno grupo de nós da Thoughtworks tem realizado uma série de experimentos para explorar o potencial de ferramentas de GenAI como ChatGPT e GitHub Copilot em todo o ciclo de vida de desenvolvimento de software. Os resultados que vimos são promissores, com resultados sugerindo um aumento de produtividade de 10 a 30%. É importante notar, porém, que esses ganhos de produtividade dependem de três fatores:

 

Generative AI can drive productivity improvements in software development by 10-30%
  • Experiência do desenvolvedor: os engenheiros precisam saber o que pedir e ter a capacidade de julgar a saída da GenAI sem afetar a qualidade.

  • Experiência com a GenAI: essas ferramentas exigem entradas humanas, o que significa que os usuários precisam de conhecimento e habilidades para não apenas escrever prompts eficazes, mas também as ferramentas, aprender para que usá-las e seguir em frente quando for apenas uma distração.

  • A natureza do problema em questão: a GenAI é eficaz para problemas bem definidos - à medida que se expande ou se torna mais complexo, é muito menos provável que gere ganhos de produtividade.
     

Dadas essas ressalvas importantes, vamos agora dar uma olhada em algumas das maneiras como a GenAI pode agregar valor ao trabalho que os desenvolvedores fazem.

Reduzir o trabalho repetitivo para criar mais tempo para tarefas de alto valor

 

A GenAI brilha na correspondência de padrões e síntese de padrões, como traduzir um idioma para outro. O uso mais óbvio dessa força para a entrega de software é para um novo tipo de geração de código, onde a IA traduz linguagem natural para código ou um tipo de código para outro. Mas isso também pode ser aproveitado em outras áreas, como traduzir logs de alterações em uma descrição de lançamento, transformar código e chats de equipe em documentação mais coerente ou mapear informações não estruturadas para formatos e modelos mais estruturados. Pode até ajudar as equipes a gerar dados de teste e amostra.

 

Em outras palavras, pode remover algumas das tarefas mais demoradas para que os desenvolvedores tenham mais tempo para trabalhos complexos e agregadores de valor.


Pensamento mais completo, mais cedo

 

Os grandes modelos de linguagem (LLMs) têm a capacidade de nos surpreender. É por isso que muitas vezes se diz que eles "alucinam" - ou seja, produzem uma saída que é enganosa ou falsa, aparentemente em desacordo com os dados em que foram treinados. Embora isso possa claramente ser arriscado em certos casos de uso, sua capacidade de oferecer algo inesperado os torna grandes parceiros de brainstorming e ferramentas de ideação. Eles podem apontar lacunas em nosso pensamento.

 

Temos visto grandes resultados para a ideação de produtos e estratégias, como solicitar a um LLM que gere cenários que possam desencadear o pensamento divergente. Também usamos LLMs como parceiros de sparring para aprimorar histórias de usuários e cenários de teste. Por exemplo, se estamos tentando idear as diferentes maneiras pelas quais um determinado aplicativo pode ser usado, os LLMs podem ajudar a expandir nosso pensamento, preenchendo lacunas com cenários que não havíamos pensado. O benefício disso é que, ao capturar os requisitos de forma mais eficaz, reduzimos a necessidade de retrabalho posterior, o que melhora muito a velocidade do processo de desenvolvimento.

 

Encontrar informações na hora certa

 

Uma das maiores fontes de ineficiência para desenvolvedores de software é encontrar as informações corretas. De pesquisas online a documentação interna, saber para onde ir para encontrar o que você precisa pode ser uma grande sobrecarga.

 

A GenAI oferece a oportunidade de fornecer novos tipos de funcionalidades de pesquisa sobre muitas fontes de informações não estruturadas. Isso já está acontecendo: o Copilot CHAT do GitHub (atualmente em beta no momento da redação deste artigo) baseia-se na funcionalidade de assistência de codificação existente do Copilot para fornecer suporte em linguagem natural e específico de contexto aos desenvolvedores. Da mesma forma, o Atlassian Intelligence oferece aos usuários uma maneira de navegar e pesquisar informações institucionais densas e não estruturadas. Claro, é crucial que os sistemas GenAI sejam integrados e treinados apropriadamente nos dados necessários, mas quando usados ​​eficazmente, eles podem dar às equipes de entrega de software fácil acesso às informações no contexto de sua tarefa atual. Isso também abre novas maneiras para as organizações apresentarem informações particularmente críticas, como ter ferramentas para lembrar os usuários sobre questões de conformidade ou segurança que precisam ser verificadas.

 

Embora os chatbots GenAI não devam ser vistos como um substituto total para pesquisas aprofundadas e com fontes, e sempre devam ser monitorados para precisão e "alucinações", se forem treinados para levar em consideração o contexto do usuário, eles são muito eficazes em minimizar o atrito e aumentar a produtividade.

 

Os riscos

 

Os riscos da GenAI não são segredo. "Alucinações", viés e privacidade foram amplamente discutidos e debatidos nos últimos meses. No contexto do ciclo de vida de desenvolvimento de software, esses riscos se manifestarão de forma diferente, dependendo das capacidades, cultura e objetivos das equipes de engenharia.

 

Por exemplo, introduzir ferramentas GenAI para uma equipe de desenvolvedores inexperientes tem o potencial de minar, em vez de aumentar, sua eficiência e a qualidade do software que eles entregam. Por exemplo, ao se deparar com um código que não funciona gerado pela GenAI, um desenvolvedor inexperiente pode se comprometer desnecessariamente com uma solução e acabar gastando mais tempo tentando fazer o código gerado pela IA funcionar, quando seria melhor lendo a documentação relevante.

 

Em suma, dada a possibilidade de erros e alucinações, é essencial que as saídas sejam sempre tratadas com cautela. Isso é especialmente verdadeiro quando a repetibilidade é crucial: sem o nível necessário de atenção, sobrepor a GenAI a práticas imaturas pode exacerbar e entrinchear problemas existentes, em vez de resolvê-los.

 

Olhando para o futuro: a importância de práticas de engenharia maduras

 

Para aproveitar as vantagens da GenAI e alavancá-la ao seu máximo potencial, as organizações devem adotar boas práticas quando se trata de engenharia de software - o que inclui tudo, desde integração contínua/entrega contínua (CI/CD) até DevOps. Essas práticas são indiscutivelmente mais importantes na era da GenAI do que eram anteriormente, porque tornam mais fácil medir e gerenciar as mudanças no processo. Se você tiver métricas de entrega incorporadas aos seus fluxos de trabalho, por exemplo, determinar o impacto da GenAI - bem como quaisquer desafios emergentes que ela possa estar apresentando - pode ser remediado rapidamente.

 

Essas práticas podem ser ainda mais apoiadas por um modelo operacional de IA eficaz. Este é um plano estratégico que articula como a inteligência artificial deve ser usada em toda a organização, fornecendo orientação e governança onde necessário. O benefício é que ele pode permitir que as organizações garantam que permanecem fiéis a seus objetivos estratégicos, cultura e processos existentes, apesar do ritmo acelerado de mudança. Seja orientando decisões sobre ferramentas ou capacitando equipes para responder a mudanças nos requisitos regulatórios, um modelo operacional robusto torna mais fácil acompanhar esses desenvolvimentos e se adaptar de acordo.

 

Isso não quer dizer que as organizações precisem de uma abordagem de cima para baixo para a GenAI. É muito mais sobre construir ciclos de feedback que garantam a conscientização e o alinhamento entre o que está acontecendo na base e a tomada de decisões estratégicas. Esses ciclos de feedback são essenciais para o sucesso organizacional em períodos de rápida mudança tecnológica; pode ser tentador seguir o que está acontecendo no mercado, mas esses ciclos de feedback ajudam as equipes de liderança a garantir que as decisões que tomam sejam sempre informadas e intimamente conectadas ao que está acontecendo em sua organização.

 

Isso não quer dizer que ser vigilante em relação ao mercado deva ser evitado, mas sim reconhecer que o que realmente importa é a capacidade - e vontade - da organização de capacitar adequadamente as equipes de desenvolvimento. Como líderes, precisamos apoiá-los a impulsionar sua própria produtividade por meio de sua curiosidade e experiência existente.