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.

A importância da meta.

Em vários projetos, não apenas ágeis, metas identificam pontos de verificação e validação do que está sendo realizado dentro de um projeto. Para projetos ágeis, especificamente utilizando Scrum, a meta é a razão de existir de uma iteração, também conhecida como Sprint. Se olharmos para o Scrum como um jogo onde o ideal é vencer e para vencer a meta dever ser alcançada, fica claro a importância de uma meta clara e atingível. Mais ainda, sem uma meta, não faz o menor sentido por exemplo, ter uma reunião diária, que serve para o time sincronizar os esforços e verificar o quanto longe está justamente da meta.
Meta para times Scrum
Assim como no futebol a meta é fazer o gol, no Scrum a meta deve ser entendida por todo o time Scrum e todos sem exceção devem jogar o jogo para vencer e tendo sempre em mente aonde querem chegar e porque a meta é importante para a Sprint e por consequência para o Produto. A analogia pode ser feita da seguinte forma também: Um produto pode ser considerado como um campeonato e as Sprints comparadas às partidas que são jogadas para que o time vença o campeonato. Pode ser que às vezes percamos alguns jogos, mas o campeonato é sempre mais importante que os jogos. Desta forma podemos ver que a Visão do Produto nada mais é que a meta maior que permeia o desenvolvimento, guiando o time à vitória final. Continue

O projeto mudou, e agora?

Perdido e sem direçãoParece até besteira, mas o que vou relatar aqui é uma narrativa de um fato que se assemelha a muitos outros, e que pode determinar o fim de um projeto e o fracasso de uma organização.

Uma empresa do ramo da construção civil contratou uma software house para desenvolver o ERP para atender suas necessidades, eram elas básicas: Controlar entrada e saída de mercadorias, realizar vendas, controlar patrimônio, emitir notas fiscais, controlar gastos com centro de custos, folha de pagamento, impostos, ou seja, quase todos os processos da empresa estariam neste ERP.

A equipe de vendas da software house ficou encantada com a oportunidade que se apresentava diante deles. Promessas e mais promessas foram feitas. Tudo o que os clientes queriam estava no “pacote“, nada iria faltar, os clientes teriam acesso total a tudo o que era necessário, milhares de gráficos e relatórios, indicadores até para a ração que os cães de guarda da empresa consumiam. Continue

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

Gerando alto valor agregado ao software

Muito tem se falado sobre gerar valor agregado, que o Backlog do produto tem que ser ordenado de forma a enfatizar os itens que tenham mais valor. Costumo ser muito questionado sobre o que de fato significa gerar valor agregado. Bem como não poderia ser diferente, tudo o que é executado dentro de uma Sprint deveria por definição ter seu valor, já que tudo tem um custo para ser realizado. Quando falamos em valor agregado, temos que pensar em três fatores: Primeiro qual o custo efetivo daquela porção de software, ou seja, quanto custará para construir aquele pedaço do sistema. Segundo, qual será o retorno que este incremento de software trará para o meu Negócio. Terceiro qual o tempo que levará até que eu tenha retorno sobre investimento que foi desprendido para criar o incremento.

Gráfico de valor agregado

Bom, você agora deve estar imaginando que tudo gera em torno do retorno financeiro que o software trará, correto?
Bem, valor agregado não é apenas dinheiro em caixa, e talvez seja ai que esteja a grande confusão, valor agregado pode ser algo que para você talvez não tenha tanto valor ou importância dentro do contexto do software, mas para o cliente, será algo que poderá talvez, mudar a vida dele. Continue