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.

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.

Trazendo ordem a partir do caos

CaosO cenário é simples, uma empresa com projetos atrasados, qualidade baixa e entregas demoradas. Parece o panorama de uma empresa qualquer de software não só no Brasil, mas em qualquer lugar do mundo. Acredito que pode ser a minha empresa, a sua ou de algum amigo seu.

No primeiro momento é simples, há uma necessidade clara de maior controle sobre os prazos, sobre o andamento dos projetos, e principalmente sobre a qualidade e as entregas. Dentro desta configuração não se pode imaginar algo diferente, que não seja agir com mão firme, trazer as rédeas para junto do corpo e traçar metas para melhoras os indicadores da nossa empresa.

O grande desafio agora é com fazer isso, sem pressionar desnecessariamente os desenvolvedores envolvidos com cada um dos projetos. Com fazê-los pensar como empresa, sendo parte não apenas do problema, mas principalmente da solução.
Continue

A ilusão da previsibilidade

Bola de cristalÀs vezes alguns projetos de software são medidos pelo tempo de entrega ou pelo tempo de atraso no desenvolvimento do software. Verdade é que essa é uma vertente muito perigosa da forma tradicional de gestão de projetos. Fato é que, projetos em geral, não apenas tradicionais, são geridos muitas e muitas vezes pela entrega no prazo, com custo e escopo mantido.Verdade é, que nem sempre conseguimos prever de antemão tudo o que pode ocorrer dentro de um projeto. Por exemplo, é possível prever uma greve de ônibus que faz com que metade ou mais da sua equipe não consiga simplesmente chegar à empresa durante uma semana? Ou prever uma enfermidade que afaste justamente o líder técnico do projeto por um determinado tempo, comprometendo assim todos os prazos que foram previstos.
Continue

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

Definindo sucesso em projetos de software

Vou começar este post fazendo uma pergunta: Como você define sucesso em um projeto de software? Se você respondeu entregar tudo o que o cliente pediu dentro do prazo e custo estimados, você está errado e vou explicar porque.

Triângulo impossível

Triângulo impossível

Não podemos ser tão ingênuos ao ponto de imaginar que um projeto de software, possa ser plenamente medido e é esse mesmo o termo que usam no início do trabalho, que tudo será entregue dentro do prazo e com o custo inicial. Se pensarmos assim estamos tentando fechar o que chamamos no meio ágil de “Triângulo Impossível“. Se você pensa assim está tentando unir os lado desse triângulo. Quem aqui já não esteve num projeto que demorou mais do que o estimado ou então que custou mais do que o previsto? Fechar prazo, escopo e custo é a evidência que estamos trabalhando em um projeto deste tipo. E o que dizer então daqueles projetos de 12 meses que o CIO pergunta como está e todos os meses está tudo bem, até o 11° mês que está tudo atrasado.

É inconcebível achar que podemos prever tudo o que ocorrerá dentro do projeto, pois sempre tem aquele colaborador(palavra da moda para funcionário) que tem um imprevisto, por um motivo ou outro tem de se ausentar do trabalho. E o que dizer daquela funcionalidade que ficamos mais de meses desenvolvendo e de um dia para o outro muda completamente. A verdade é que não podemos prever nada além do horizonte que podemos visualizar, é como a previsão do tempo. Hoje você pode imaginar, sem muita precisão como estará o tempo amanhã mas e daqui a 3 meses? Continue