Como contabilizo tarefas alteradas ou esquecidas em uma estimativa?

10

Para lidar com estimativas em nível de tarefa e relatórios de tempo, tenho usado (aproximadamente) a técnica descrita por Steve McConnell no Capítulo 10 de Estimativa de software. Especificamente, quando chega a hora de eu criar estimativas no nível da tarefa (imediatamente antes do início da codificação em um projeto), eu determino as tarefas em um nível bastante granular para que, sempre que possível, não tenha tarefas com um único ponto, 50 Estimativa de% de confiança superior a quatro horas. Dessa forma, o processo de estimativa de tarefas ajuda na construção do software, ajudando-me a não esquecer as tarefas durante a estimativa. Também venho com um intervalo de horas possível para cada tarefa e, usando os cálculos estatísticos que McConnell descreve junto com meus dados de precisão histórica, posso gerar estimativas em outros níveis de confiança, quando desejado. Sinto que esse método está funcionando bastante bem para mim. Somos obrigados a colocar tarefas e suas estimativas no TFS para rastreamento, portanto, eu uso as estimativas na porcentagem de confiança que devo usar.

No entanto, não tenho certeza do que fazer quando esqueço uma tarefa ou acabo precisando fazer um trabalho que não se enquadre perfeitamente em uma das tarefas que estimei. Obviamente, é melhor tentar evitar essa situação, mas como faço para explicar tarefas esquecidas / alteradas? Quero ter os melhores dados históricos que puder para me ajudar com estimativas futuras, mas, no momento, estou apenas calculando se fiz a estimativa de confiança de 50% e se fiz dentro da estimativa à distância.

Ficarei feliz em esclarecer o que estou perguntando, se necessário - deixe-me saber o que não está claro.

Andrew
fonte
11
Multiplique por 3 ( programmers.stackexchange.com/questions/41004/… )
blueberryfields
Acho que vou precisar dar um exemplo de como estou fazendo esses cálculos, bem como o problema que estou tentando resolver. Não tenho tempo no momento, mas vou chegar o mais rápido possível.
Andrew
No scrum, você não fornece estimativas de tempo; você dá pontos da história, que dão aos outros uma idéia. Você também não dimensiona de baixo para cima. Você não precisa - a velocidade é uma coisa vaga.
Job
@Job Não somos uma loja de scrum no momento. Além disso, ao contrário do que outro respondente sugeriu, descobri até agora que as estimativas de baixo para cima melhoraram a precisão de minha estimativa, reduzindo amplamente o número de tarefas esquecidas durante a estimativa no nível da tarefa.
Andrew
@blueberryfields - multiplicar apenas 50% deve ser suficiente, pelo menos em uma empresa com muitos níveis hierárquicos, onde cada um adiciona seu próprio fator de superestimação.
Mouviciel

Respostas:

6

O livro Waltzing With Bears: Managing Risk on Software Projects (de DeMarco e Lister, os autores da Peopleware) tem uma abordagem fantástica para isso. Aqui está minha reinterpretação:

Faça uma estimativa de "tudo corre perfeitamente". É claro que tudo raramente vai perfeitamente, de modo que há uma baixa probabilidade de acontecer, digamos 0,1%. Em outras palavras, apenas um projeto em mil será perfeitamente planejado. É isso que a maioria das pessoas usa como "estimativa", o que é obviamente insano.

Em vez disso, devemos pensar em estimativas como distribuições de probabilidade. Essa estimativa do "mundo perfeito" é o ponto mais à esquerda na distribuição de probabilidade estimada.

Em seguida, faça uma estimativa "se as coisas continuarem assim foram para projetos semelhantes como este". Essa estimativa ajuda você a ter uma "visão externa" ( http://wiki.lesswrong.com/wiki/Outside_view ), escapando da falácia do planejamento ( http://wiki.lesswrong.com/wiki/Planning_fallacy ).

Em seguida, faça uma estimativa "Tenho 90% de certeza de que seremos feitos por X". Tenha muito, muita certeza de que você quer dizer 90% de certeza. Em outras palavras, você espera levar mais tempo do que essa estimativa apenas uma vez a cada dez projetos que realiza.

Agora, podemos usar sua primeira estimativa como estimativa de probabilidade de 0,1% e a segunda como estimativa de probabilidade de 50% (época a gosto) e a terceira como estimativa de 90%, o que fornecerá uma boa curva.

Digamos que suas estimativas de 0%, 50% e 90% foram 1º de maio, 1º de junho e 1º de agosto, então sua curva de estimativa se pareceria com isso:

     100 |                                  ......
         |                        ..........
% chance |                ........
of being |          ......
  done   |      ....
         |   ...
         |...
       0 +-----------------------------------------
          \           \           \           \
           May 1st     June 1st    July 1st    August 1st

Observe como o crescimento da probabilidade diminui com o tempo. Se alguém lhe pedir uma estimativa de 99,9% nesse cenário, talvez seja 1º de janeiro do próximo ano.

Benji York
fonte
Obrigado pela resposta. O método que eu já estou usando, permite-me fazer o que você parece estar propondo, no entanto, mas também leva em consideração (indiretamente, usando uma porcentagem de precisão histórica) meu sucesso passado com minhas estimativas para gerar a porcentagem- estimativas confiantes desejadas. O que estou perguntando, no entanto, é como incorporar tarefas perdidas nessa precisão histórica quando a precisão é basicamente calculada se eu concluí ou não uma tarefa dentro do intervalo que usei para minha estimativa original.
Andrew
@ Andrew, se estou entendendo corretamente, as "tarefas perdidas" são explicadas pela probabilidade de menos de 100% de serem feitas em um determinado momento. Se você já fez muitos projetos como o atual, sua curva rapidamente desce de 0% para (digamos) 90%. Isso ocorre porque você confia muito em haver poucas tarefas perdidas. Se você tiver uma baixa confiança, a inclinação será muito mais gradual. Isso vale por qualquer motivo, não apenas tarefas esquecidas, mas também outros fatores de risco.
Benji York
Sim, as tarefas perdidas são cobertas de forma agregada pelos intervalos de nível de tarefa, que figuram nos níveis de confiança que eu dou. Eu calculo esses níveis usando um método proposto por McConnell no capítulo 10 da Estimativa de software, como eu disse antes. Principalmente, estou me perguntando como contabilizo essas tarefas ausentes ou alteradas nos relatórios de horas do TFS e como incluí-las no cálculo da precisão histórica.
Andrew
5

Em uma palavra - contingência.

Contingência é a quantia que você adiciona para "outras coisas" - as coisas que você não pode contabilizar em outro lugar na sua estimativa. O SMc cobre isso na estimativa de software? Não me lembro e minha cópia está no trabalho (estou de férias respondendo a isso - como estou triste) ...

De qualquer forma, de um modo geral, existem três tipos de contingência que eu recomendaria:

1) Contingência específica de risco - é aí que você identifica um risco específico e adiciona uma certa quantidade de tempo para cobrir o potencial excedente relacionado a ele. A primeira coisa a ser esclarecida aqui é o que é um risco - é algo que pode acontecer, que terá um impacto negativo no projeto, que está fora de seu controle .

Esta última parte é crítica - não é apenas "as coisas demorando um pouco mais do que eu pensava", é "o módulo de agendamento de terceiros que nos disseram que devemos usar, pois é um padrão da empresa que pode não estar à altura da tarefa". A maneira como você calcula a quantidade de contingência de risco a adicionar é a porcentagem de chance do risco expressa em decimal (portanto, 50% = 0,5), vezes o impacto desse risco (então, no exemplo, diga que você precisa escrever manualmente CRON trabalhos em vez de usar o agendador e isso levará 10 dias, esse número é 10 dias).

Portanto, se houver uma chance de 50% de seu risco se concretizar, e você precisará de 10 dias de esforço para contorná-lo, adicionando 5 dias. Adicione todos os valores para todos os riscos identificados no projeto e adicione-os ao total.

2) Merda Acontece Contingência - A melhor descrição que já ouvi sobre isso, mesmo que não seja elegante. É um projeto de TI, merda acontece. Nunca é como você pensa, as coisas demoram mais, são perdidas e assim por diante. Geralmente, a Contingência de SH estará entre 10% (mínimo absoluto) e 25% (embora possa ser maior), com 15% sendo típico, o nível exato depende do nível de incerteza e risco geral (mudança de metas, requisitos incertos etc.) )

Se o seu PM não aceitar a Contingência SH (e é possível, ele pode não ter experiência em projetos de TI ou ser um otimista cego), basta adicioná-lo a todos os valores individuais. Se ele souber o que está fazendo, terá um registro de riscos próprio e amará você por pensar nessas coisas. Certamente, se ele tiver algum tipo de qualificação de PM (como o PRINCE2), ele saberá disso.

3) Alterar Contingência - É aqui que você tem certeza de que o cliente fará alterações, mas não quer que seja um ponto de discórdia. Adicione X dias ou X% e ele entrará em um pote para as alterações que o cliente aumentar. Há duas maneiras de lidar com isso: ou você conta a eles e é deles que gastam ou não conta a eles.

A primeira maneira é melhor, mas precisa de um cliente razoavelmente educado e justo - as coisas são classificadas como mudanças e ele pode gastar seu pote como achar melhor (com base em você estimar as coisas à medida que elas aparecem).

A segunda maneira que você menciona é uma mudança, mas não tente cobrar mais dele. Você precisa anotar todas as coisas em que o gasta; se chegar ao ponto em que se esgote, você precisará voltar ao cliente e pedir mais tempo ou dinheiro, e eles dirão "espere, eu" estou pagando blá blá blá ", você pode apontar todas as coisas que eles já mudaram e que você não cobrou como sinal de que não está sendo totalmente irracional. Nem sempre funciona, mas quase sempre fortalece sua mão nas discussões.

Nenhum desses três cobre especificamente as coisas que você esqueceu, mas acho que entre elas você preencherá muitas lacunas que tem.

Jon Hopkins
fonte
Obrigado pela sua resposta. Você levanta pontos interessantes. Eu já incorporo esses três itens de várias maneiras em minhas estimativas. Descobri que seu primeiro tipo pode ser articulado e associado a uma ou mais tarefas. O segundo tipo é incorporado às minhas estimativas de intervalo no nível da tarefa: não tenho permissão para ter um item extra para ele (debatemos e, por enquanto, essa é a política da nossa equipe). No terceiro, os clientes internos aceitam que as mudanças aumentarão nossa estimativa e os clientes externos a fazem por escrito, portanto, não devemos considerar mudanças.
Andrew
Se McConnell cobre contingências, minha cópia também está no trabalho, então eu precisaria verificar. Acho que estou perguntando como contabilizar tarefas perdidas / alteradas ao calcular dados do histórico para informar a próxima estimativa, bem como onde atribuir as horas no TFS, pois uma tarefa de contingência normalmente não é permitida em nosso grupo.
Andrew
0

Quando for solicitada uma estimativa para uma tarefa, forneça uma estimativa de ponta para a equipe e faça uma estimativa de ponta para si mesmo, fazendo isso sempre para que você tenha tempo após a conclusão da tarefa para trabalhar em algo que você pode ter esquecido de mencionar em primeiro lugar.

Rachel
fonte
Obrigado pela resposta. Os intervalos que eu proponho, no geral, tendem a me permitir tempo suficiente para adicionar tarefas esquecidas sem perder a estimativa para todo o projeto. Minha pergunta se refere mais ao uso dessas informações no procedimento de cálculo que estou usando no livro McConnell.
Andrew
0

Você está preocupado que, ao adicionar tarefas extras, você distorça sua precisão histórica? Ou você acha que não incluir as tarefas extras distorcerá a precisão?

Eu acho que para o melhor do projeto, as tarefas devem ser inseridas no sistema de rastreamento. Tenho certeza de que o líder do projeto poderá oferecer uma explicação adequada para o gerenciamento de discrepâncias ...

TGnat
fonte
Eu poderia esperar até amanhã e contar isso pessoalmente. :) Estou mais preocupado com a imprecisão do histórico se as tarefas extras não forem incluídas de alguma forma. Claramente, a falta de uma tarefa durante a estimativa da tarefa é uma "falta" em relação à precisão - mas qual é a figura da precisão? O que eu realmente uso em um sentido quantitativo é se o desempenho real da minha tarefa para cada tarefa estava dentro do intervalo previsto. A outra medida, mais qualitativa, é a frequência com que encontro minhas estimativas de ponto único de 50% de confiança. Muito acima ou abaixo de 50%, e devo ajustar o "julgamento de especialistas" para futuras estimativas de 50%.
Andrew