Estimativa não é aferição: Cuidado com as Mães Dináh do Software.

Para começar nossa conversa de hoje, vamos primeiramente discutir algo simples: o significado da palavra ESTIMATIVA.

Régua

Estimativa: s.f. Cálculo aproximado, avaliação; conjectura (Dicionário Aurélio).

Pois bem, estamos falando em cálculo aproximado, avaliação, conjectura, isso mesmo conjectura. Logo não é o mesmo que aferição, como é possível medir algo que não conhecemos por completo. A pergunta então é: Por que tantas pessoas se apegam nas estimativas quando estão em fase de projeto?

Eu diria que há vários porquês para esta pergunta, um deles é que o ser humano precisa de algo concreto, pelo menos em teoria para avalizar a construção de qualquer coisa, desde casa, por que não, até coisas mais complexas. Outro motivo plausível é que precisamos formalizar contratos, e por que não seguros. Isso mesmo, seguro, muitas pessoas vendem seguro, principalmente quando o assunto é prazo de desenvolvimento de software. É simples, eu te contrato para desenvolver uma solução que eu não quero desenvolver, pois tenho consciência que não é possível no prazo que eu estou te contratando mas se você não me entregar quem falhou foi você e não eu.

Outro motivo é porque estamos acostumados com as convenções formais de qualquer relação de trabalho onde de antemão tenho a necessidade de saber quanto tempo irá levar para fazer determinada tarefa senão sou incapaz de julgar se o resultado foi considerado aceitável, já que a única coisa que me interessa é o prazo. Escopo é fixo e qualidade não é mensurável neste cenário, ou seja, a borracha do processo chama-se Prazo!

Ken Schwaber, fundador da Scrum.org, fala em seu livro “Agile Project Management with Scrum” sobre as diferenças entre viajar entre duas cidades de duas formas distintas: Avião e Automóvel. Neste momento você deve estar se perguntando o que isso tem a ver com estimativa, logo aviso: Tudo!

spyker_f16

Na visão do Ken viajar de avião entre outras coisas é mais rápido, porém a grande “vantagem” é que se conhece “tudo” sobre a viagem, desde o clima, o trajeto, a velocidade de cruzeiro. Estima-se que um voo inicia exatamente no horário e termina aterrissando em seu destino no horário planejado.

Viajar de carro já não é tão minuciosamente planejado assim. Imagine quantas variáveis não são conhecidas de antemão, de repente você, dependendo do obstáculo que encontrar pode decidir-se por ir pela estrada A ou B. Se estiver chovendo tem a opção de parar em um posto para aguardar a chuva parar. Caso você encontre uma bela paisagem teria a oportunidade de vislumbrar a vista e aproveitar o trecho também para relaxar. Apenas uma coisa é certa neste tipo de viagem: a previsão de chegada irá mudar, seja em minutos, horas ou dias, tudo dependerá das condições encontradas e quanto mais longo for o trecho da viagem, maior será a chance dela mudar, e o motivo da mudança só será conhecido muito próximo dela acontecer, ou quando ela acontecer.

Neste momento é que alerto para a necessidade de sempre estarmos aferindo o que passou durante o projeto, claro que com o passar do tempo o time irá “azeitar”, conhecerá mais do Negócio, da linguagem, frameworks entre outras coisas. Porém existem sempre alguma variáveis que não podemos antever ou mesmo prever.

Conhecendo tudo isso que foi dito acima, como pode alguém julgar-se capaz de medir o trabalho a fazer antes de conhecer suas variáveis, seu caminho e tudo o que cerca o Negócio e reflete diretamente no projeto. Ora, não é porque já viajei de carro de Campo Grande/MS até São Luís/MA que posso afirmar com toda a certeza que numa nova viagem neste trecho, irei fazer exatamente igual a viagem anterior. Lembro que minha estimativa era chegar em 3 dias em São Luís, porém fiz em 3 dia e meio, pois tivemos um contratempo no primeiro dia e tivemos que adaptar tudo dali em diante.

Se até mesmo a Nasa, como já falei em outro Post no passado sabe que um projeto pode variar, por que eu, um simples desenvolvedor não vou usar do conhecimento que tudo muda o tempo todo no mundo para melhorar as minhas estimativas.

Responder a mudança (Manifesto Ágil) é sem dúvida melhor que planejar e seguir um plano, não que planejar seja desprazível não é nunca! Mas é necessário sempre saber quando algo mudou e o que é necessário fazer para adaptar-se de acordo com a mudança. Se alguma dessas mães Dináh do software quiser contestar fique a vontade, o debate é livre.

Outro ponto que deixo claro, é que, avaliar o sucesso de um projeto pelo prazo de entrega é simplesmente falta de habilidade e conhecimento e soa para mim como leviano. Lembre-se que pessoas não são enxadas, nem mesmo máquinas ou robôs.

Anúncios

A mensagem do Coringa

Um dia destes assistindo talvez pela décima vez o filme “O cavaleiro das trevas”, me deparei com o momento em que o Coringa se confronta Harvey Dent no hospital de Gothan e um diálogo quase monólogo ocorre. As palavras do Coringa me levaram a uma reflexão muito interessante, que decidi compartilhar com os amigos. Eis abaixo o trecho que levou-me a reflexão:

“Eu só fiz o que faço de melhor.
Eu peguei seu planozinho e o virei contra você.
Olha o que eu fiz com essa cidade, apenas com alguns galões de gasolina e umas balas.
Hum….?
Sabe… Ninguém se apavora se tudo acontece como o planejado.
Mesmo se o plano for aterrorizante! Se amanhã eu for até à imprensa e dizer que um caminhão cheio de soldados explodirá, ninguém se aterroriza, porque é tudo parte do plano.
Agora, se eu disser, porém, que um prefeitinho velho vai morrer… todo mundo perde a razão!
Introduza um pouco de anarquia, mude a ordem pré-estabelecida, e tudo se torna caos.
Eu sou um agente do caos. E sabe o que é bom no caos? O MEDO. “

O que isso tem a ver com agilidade você deve agora estar se perguntando. Eu respondo da seguinte forma:

O Manifesto Ágil deixa claro que é mais importante Responder a mudanças que seguir um plano, e o que os planos tem em comum, simples, todos têm a falsa ideia de caminho perfeito para alcançar um objetivo. O que temos visto por ai são cenários onde o plano deve ser seguido a risca para que o objetivo seja alcançado e o projeto obtenha o tão sonhado Sucesso.

Agora deixe que algo interfira no plano perfeito que foi traçado e veja o caos se instaurar. É isso o que ocorre em muitos projetos e que por falta de flexibilidade quando se deparam com o cenário não antes previsto e por fim acabam falhando. Não estou falando de gestão de riscos, mas bem que poderia ser. Óbvio que não iremos prever tudo o que pode ocorrer em um projeto, isso é ilusão, como já falei em um post anterior.

Ser ágil é responder a mudança, não quer dizer que o plano inicial seja alterado o tempo todo, mas sim que, se caso algo necessite de ajuste e acredite, vai precisar, é estar preparado para tal mudança, mesmo que o tempo para tal parece ser tardio. E se o negócio exigir uma mudança? E se o cliente simplesmente mudar de ideia? Claro que não precisamos traçar planos para cada uma destas hipóteses, até mesmo porque seria insanidade, mas é bom ao menos estar preparado caso necessário for.

Não defendo aqui que os planos são ruins, apenas que devemos ter cuidado para não seguir demais um plano, agarrando-se a ele de forma a perder de vista os reais propósitos que levaram a existência o próprio plano! Da mesma forma vejo muitas pessoas mais preocupadas em fazer Scrum, XP ou Kanban do que fazer software, isso é um erro absurdo, basta lembrar que existe antes de tudo isso o Manifesto Ágil, que “rege” a agilidade antes que qualquer método. Qualquer método pode ser substituído por outro mais eficiente em um determinado contexto. Os métodos ágeis são sim derivados das experiências e dos princípios que são na minha visão mais importantes que qualquer método.

A pergunta que devemos responder é, se algo mudar, como eu agirei? Sabendo a resposta e lembrando que devemos estar sempre atentos à mudança e aceitando mesmo que tardia, não nos tornamos reféns dos nossos planos e se por acaso alguma coisa der errado, não iremos nos desesperar por conta disso.

Aceitar a mudança acredite, faz parte do plano!

Até a próxima.

Team Estimation Game – Porque usar!

Olá galera, primeiramente peço desculpas por não ter escrito já há algum tempo, devido a correria nossa de cada dia, mas, aqui estou eu novamente para falar de uma técnica de estimativa de software que aprendi ha algum tempo em um curso de Scrum que fiz em São Paulo. Algum tempo atrás falei sobre Estimativa em projetos ágeis, hoje irei abordar outra técnica.

Estimativa: Seria muito bom se não precisássemos fazê-la, mas, muitas vezes é necessário fazer. Em um sistema de desenvolvimento maduro ágil com lean/kanban, onde o valor prioritário está fluindo a uma taxa aceitável, e num contexto sem obrigação de conhecer a data de entrega as estimativas fornecem pouco ou nenhum valor. Portanto, não cegamente, você deve estimar suas características/histórias. E se você avaliar a necessidade de estimativas e determinar que eles valham a pena, você precisa determinar o quanto de valor que elas oferecem, para que você possa ter certeza que o esforço despendido estimativa é compatível com esse valor. Continue

Scrum ou Kanban, qual escolher?

Imagine esse cenário: Um ambiente onde há muitos produtos legados, código que requer manutenção constante e que necessita de fluxo contínuo, não podendo aguardar até determinada data para realizar um deploy. Neste cenário é evidente que o Kanban melhor ser adapta, pois com ele é possível visualizar esse fluxo e proporcionar um ambiente onde é possível organizar o trabalho a ser feito.

Por ser menos prescritivo que o Scrum, que tem suas cerimônias, papéis e artefatos, o Kanban é mais lean e menos complexo, talvez por isso, sua adoção é mais suave que o Scrum. Continue