0 Compartilhamentos 705 Views

Manifesto Ágil: Os complexos requisitos das equipes

3 de maio de 2018

Se a equipe na qual você trabalha lida com demandas (ex: histórias de usuário, bugs, etc.) que demonstram uma alta variabilidade no lead time ou, em outras palavras, o fluxo de desenvolvimento do time lida com demandas que são entregues rápido demais e outras que levam muito tempo para serem finalizadas, provavelmente você está lidando com um ambiente onde a previsibilidade esteja em baixa.

Neste artigo compartilho uma técnica que nós da Plataformatec temos utilizado para auxiliar nossos times e clientes a compreenderem a relação entre complexidade e incerteza quando há a necessidade de se avaliar requisitos no contexto de desenvolvimento de software. Geralmente esse momento acontece antes de uma cerimônia de planejamento (Sprint Planning no Scrum ou Replenishment no método Kanban) ou até mesmo em uma discussão de refinamento das demandas que entrarão no fluxo de desenvolvimento.

Ao longo da nossa experiência com desenvolvimento de software, temos percebido que as equipes não têm o hábito de avaliar um item que será construído antes da entrega do mesmo já estar comprometida com os stakeholders de um projeto ou produto. O grande problema é que tais demandas indefinidas farão com que o processo se torne ineficiente. Os stakeholders não compreenderão a real capacidade de entrega do time e este passará tempo demais tentando estimar o esforço de algo que, por natureza, é imprevisível (leia-se, software).

A técnica que apresentarei a seguir é um método que temos aplicado para criar itens de trabalho que demandam um esforço de trabalho parecido. Tenho proposto esse tipo de abordagem como alternativa para cerimônias como planning poker, com o intuito de reduzir o tempo necessário em se estimar o desenvolvimento de funcionalidades de um software. Por fim, gostaria de agradecer ao Diego Poblete (@dipoblete) por ter me apresentado a primeira versão da matriz.

 

Matriz de complexidade e incerteza

A matriz de complexidade está estruturada em dois eixos que combinam as análises de complexidade e incerteza de cada demanda que será trabalhada.

O eixo X da matriz representa o quanto de incerteza técnica e de negócio a demanda que está sendo avaliada possui. Já o eixo Y, analisa a complexidade e o esforço para se entregar a demanda.

Na categoria “baixa” do eixo X, estão as demandas bem definidas (os critérios de aceite estão claros) e sem incertezas, técnicas ou de negócios. No eixo Y, estão as demandas que exigem pouco esforço e têm baixa complexidade na sua implementação (exemplo: a equipe está acostumada a trabalhar com demandas parecidas com a que está sendo analisada).

Já na categoria “média” do eixo X, estão elencadas as demandas com poucas incertezas sobre sua implementação ou definição de negócio, e estas incertezas a equipe sabe ou já resolveu antes (exemplo: demandas com vários casos de exceção). No eixo Y, tal categoria representa que as demandas exigirão um esforço considerável para serem completadas, mas que a equipe possui o domínio para desenvolvê-las (exemplo: funcionalidades que exijam integração com sistemas satélites).

Por fim, no eixo X da categoria “alta”, estão as demandas que possuem incertezas relevantes sobre a implementação ou sobre o negócio, o que traz insegurança para os membros da equipe por se tratar de algo onde há um baixo entendimento de contexto (exemplo: nova funcionalidade no produto ou alterações em um software legado). No eixo Y, a atribuição grande representa que as demandas estão muito complexas ou que precisarão de muito esforço para serem concluídas (mais de duas semanas).

As demandas classificadas nos quadrantes 5, 6, 7, 8 e 9, devem ser discutidas e dificilmente estarão prontas para entrarem no fluxo de desenvolvimento da equipe. O motivo? Carregam um alto grau de incerteza que naturalmente acarretará retrabalho, atraso na entrega e outros efeitos não desejados quando estamos em busca de entregas constantes e previsíveis.

Sabendo que o objetivo de toda equipe é buscar um ritmo de entrega sustentável, gostaria de compartilhar algumas dicas úteis para que sua equipe não traga para o fluxo de desenvolvimento demandas com alto índice de incerteza e/ou complexidade:

  • Faça um bom trabalho de refinamento e discuta o quão pronta a demanda está para entrar no fluxo de desenvolvimento.
  • Caso a demanda carregue muita incerteza, crie estratégias de investigação para que a equipe ganhe conhecimento técnico ou de negócio. Em determinados momentos, é melhor fazer com que as pessoas tenham tempo para avaliarem e estudarem, ao invés de incluir no fluxo de trabalho uma demanda para ser desenvolvida a qualquer custo.
  • Caso uma demanda tenha um excesso de incerteza de negócio, busque especialistas para sanarem as dúvidas. Mesmo que por vezes não conheçam o linguajar técnico, tais pessoas são extremamente úteis para descreverem o mundo no qual a solução será útil e tal intercâmbio é saudável para que a equipe evolua.
  • Exercite a quebra de grandes demandas em pequenas, mesmo que você tenha que lidar com questionamentos de que pequenas entregas não geram valor ao negócio. Quando quebramos a incerteza, estamos reduzindo risco, o que, para mim, representa valor, uma vez que eliminamos desperdício, provamos conceitos abstratos mais rápido e validamos hipóteses complexas fracionadamente.

As demandas classificadas nos quadrantes 1, 2, 3 e 4 geralmente estarão prontas para entrarem no fluxo de desenvolvimento, pois terão tamanhos saudáveis de esforço/complexidade e estarão com baixa ou nenhuma incerteza.

 

Considerações finais

Estimar dentro do contexto de desenvolvimento de software por vezes é moroso (leva muito tempo) e requer muita energia.

Se você é um Scrum Master, Agile Coach ou trabalha dentro de uma equipe de desenvolvimento de software, em algum momento você terá que planejar o trabalho que passará pelo fluxo de desenvolvimento. Portanto, utilizar técnicas que lhe ajudem a realizar o planejamento o mais rápido possível será sempre bem-vindo.

Ao utilizar a matriz, você fará com que as pessoas analisem, em diferentes aspectos, o que precisará ser feito. Além disso, o uso da ferramenta vem otimizando o tempo que temos despendido em reuniões, aumentando a qualidade das discussões entre as pessoas, dado que a comunicação tem fluído melhor entre as pessoas de negócios e da área técnica.

Aplicar a técnica apresentada neste blog post ajudará você a diminuir o lead time das demandas e, como disse anteriormente, será uma ótima forma para substituir outras técnicas de estimativa.

 

Raphael Albino é doutorando e mestre em Administração de Empresas pela FEA-USP, formado em Sistemas de Informação, pela Unesp de Bauru, e com MBA em Gerenciamento de projetos, pela FGV. Profissional com mais de 10 anos de experiência na área de desenvolvimento de software, atua com programação, concepção de novos produtos, análise de requisitos e gestão de projetos e equipes. Atualmente, é Agile Consultant na Plataformatec e leciona em cursos de Gerência de projetos e Mídias Digitais.

Fale com ele pelo Linkedin: https://br.linkedin.com/in/raphaelalbino

Fale com ele pelo Twitter: https://twitter.com/rapha_albino

Carregando...

Você pode se interessar

Influenciadores digitais que não existem
Artigos
79 visualizações
Artigos
79 visualizações

Influenciadores digitais que não existem

Carlos L. A. da Silva - 2 de dezembro de 2021

Na era da pós-verdade, influenciadores que não são reais estão ganhando espaço para uma multidão que quer ser influenciada

Pais criam aplicativo de código aberto melhor que o da escola, mas a polícia é acionada
Artigos
211 visualizações
Artigos
211 visualizações

Pais criam aplicativo de código aberto melhor que o da escola, mas a polícia é acionada

Carlos L. A. da Silva - 23 de novembro de 2021

Aplicativo oficial do sistema educacional da capital Suécia era ruim demais, mas a lei é a lei...

10 recursos HTML5 úteis que você pode não estar usando
Artigos
465 visualizações
Artigos
465 visualizações

10 recursos HTML5 úteis que você pode não estar usando

Carlos L. A. da Silva - 6 de novembro de 2021

O HyperText Markup Language nos acompanha desde os primórdios da web. É o seu tijolo mais básico. Podem surgir novas tecnologias, plugins, frameworks, conteúdo rico, mas o bom e velho HTML continua sendo a base de tudo e aprender seus mais profundos nuances é fundamental para os desenvolvedores. O HTML5 é a implementação atual da […]

Deixe um Comentário

Your email address will not be published.

Mais publicações

O Metaverso está vindo?
Artigos
528 visualizações
528 visualizações

O Metaverso está vindo?

Carlos L. A. da Silva - 1 de novembro de 2021
Por que eu decidi não migrar para o Windows 11 agora
Artigos
635 visualizações
635 visualizações

Por que eu decidi não migrar para o Windows 11 agora

Carlos L. A. da Silva - 19 de outubro de 2021
Sir Clive Sinclair, o homem adiantado no tempo
Artigos
925 visualizações
925 visualizações

Sir Clive Sinclair, o homem adiantado no tempo

Carlos L. A. da Silva - 18 de setembro de 2021