Pare de se enganar com estimativas e aprenda a gerenciar incertezas

Fernando Paiva

O desafio da previsibilidade

Estimativas representam o esforço legítimo de tentar prever o prazo de entrega e o custo de desenvolvimento de um software. Estas previsões acabam sendo pré-requisitos devido ao modo como planejamos nossa estratégia, que geralmente exige um orçamento prévio e um plano de negócio com um cronograma definido.

Para projetos aos quais conseguimos no seu início ter clareza dos requisitos e uma razoável estabilidade do escopo, como a construção de uma casa ou um prédio, por exemplo, essa abordagem pode fazer sentido de fato. Talvez essa, inclusive, seja a razão pela qual tentamos utilizar o mesmo método em outros cenários.

Todavia, geralmente, em desenvolvimento de software estamos trabalhando na concepção e construção de um produto inédito. Muito sujeito a mudanças decorrente do aprendizado que ocorre durante seu desenvolvimento e quase sempre não há uma visão de tudo que precisa ser feito desde o início.

Portanto, como fazer previsões de algo que nunca foi feito antes, que muda a todo momento e que não sabemos de antemão o que precisa ser feito?

Para tentar responder essa pergunta existe no mercado uma série de métricas e técnicas prometendo ser a sua bola cristal: contagem de pontos de função, story points, homem/hora, planning poker, etc… Todas essas medidas tem como fundamento as percepções dos desenvolvedores sobre quanto tempo leva para programar uma determinada funcionalidade. O que é simplório, pois ignora todas as outras etapas do processo de criação. Também é no mínimo frágil tomar decisões importantes do negócio com base na opinião do time operacional, e é isso que fazemos quando trabalhamos com estimativas de software.

Previsibilidade exige visão holística do processo

O processo de desenvolvimento de uma solução, além da codificação, por padrão, envolve: Concepção, processos de aprovação, entendimento e detalhamento das demandas, teste, homologação e deploy. Sendo que várias dessas etapas estão sujeitas a paradas por dependência de processos externos. Por exemplo, a aprovação pode exigir o encontro de um comitê; etapas que envolvem times diferentes podem implicar em espera por falta de disponibilidade do outro time; o processo de deploy pode estar atrelado a uma janela de publicação que ocorre uma vez por mês.

O tempo entre uma demanda surgir e entrar em produção é fortemente influenciado pela quantidade de vezes que elas precisam voltar etapas no fluxo, por exemplo, requisitos mal definidos que voltam para análise, software mal implementado que volta para desenvolvimento devido a bugs, reprovação pelo usuário na homologação devido a falta de consenso nas regras de negócio, deploy bloqueado por falta de compliance com políticas de segurança, etc…  Além dos itens que voltam, alguns são iniciados, mas no meio do processo há uma mudanças de prioridade e eles ficam parados dias, às vezes semanas.

Quadro kanban

Considerando que do ponto de vista de negócio, estimativas são traduzidas como time-to-market, qual a relevância se o tempo de codificação é de 1 ou 2 dias se provavelmente os itens ficarão parados na fila aguardando várias semanas? Qual a vantagem em codificar rápido, se isso não se traduzir em uma redução no tempo que precisamos para colocar uma solução no mercado? Na nossa experiência é comum que o tempo em espera dos itens na fila seja significativamente superior ao seu tempo de desenvolvimento. Portanto, em vez de analisar uma etapa isoladamente, temos que considerar todo o fluxo.

Estimativas são inúteis?

Em um mundo ideal todo profissional deveria ter condições de dizer quanto tempo levaria para executar determinada atividade. Portanto, não é que não acreditemos que estimativas não tem valor, pelo contrário, entendemos que boas estimativas facilitariam o processo de tomada de decisão de negócio e simplificaria o planejamento. Todavia, do ponto de vista prático, não vemos isso como um exercício produtivo, pois em geral se gasta muita energia para produzir previsões muito ruins.

Como alternativa, acreditamos no planejamento contínuo, suportado por métricas que medem de maneira constante os avanços do negócio. Com indicadores que levam em consideração o fluxo completo de trabalho, não apenas a codificação. Sobretudo, acreditamos que faz parte do processo de desenvolvimento de software gerenciar e lidar com as incertezas. Esse será o tema dessa série de posts.

 

Em resumo

O problema
O modo como planejamos nossa estratégia nos obriga tentar estimar mesmo sem ter clareza do requisitos e sabendo que estes são fortemente sujeitos a mudanças. Existe uma série de técnicas no mercado prometendo mais previsibilidade, porém que na prática demandam tempo e não entregam os benefícios prometidos.
O insight
A maior parte da técnicas de estimativa levam em consideração o tempo de codificação do software, porém ignora todas outras etapas adjacentes necessárias para criação de um produto e são fortemente fundamentadas na percepção dos desenvolvedores. Para diminuirmos o tempo que uma ideia leva para chegar ao mercado precisamos otimizar o fluxo completo de trabalho, não apenas uma etapa.
O benefício
Admitindo que o caráter marcante de inovação no desenvolvimento de software, temos a oportunidade de melhorar adotar métodos que nos ajudam a lidar melhor com incertezas e sermos mais efetivos na entrega de valor.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Fernando Paiva
Larga experiência como CTO, especialista em execução tecnológica e estruturação de times ágeis de desenvolvimento de software.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Desenvolvimento de Software

Os principais desafios ao adotar testes

Especialista em Testes e Arquitetura de Software
Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala
Arquitetura de Software

Estratégias para modernização do legado

Desenvolvedor .NET/NodeJs e especialista em Kafka com experiência em startups e grandes empresas

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Pare de se enganar com estimativas e aprenda a gerenciar incertezas

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?