Quase todos os desenvolvedores precisam responder perguntas do lado comercial, como:
Por que levar dois dias para adicionar este formulário de contato simples?
Quando um desenvolvedor estima essa tarefa, ele pode ser dividido em etapas:
- faça algumas alterações no banco de dados
- otimizar alterações de banco de dados para velocidade
- adicionar HTML de front-end
- escrever código do lado do servidor
- adicionar validação
- adicionar javascript do lado do cliente
- use testes de unidade
- verifique se a configuração do SEO está funcionando
- implementar confirmação por email
- refatorar e otimizar o código para velocidade
- ...
Talvez isso seja difícil de explicar para uma pessoa não técnica, que basicamente vê toda a tarefa apenas reunindo um pouco de HTML e criando uma tabela para armazenar os dados. Para eles, pode demorar 2 horas no máximo.
Existe uma maneira melhor de explicar por que a estimativa é alta para um não desenvolvedor?
communication
estimation
Mag20
fonte
fonte
Respostas:
Você acabou de fazer isso na sua pergunta.
Divida a tarefa em etapas individuais e dê estimativas para cada uma. Isso mostrará que você considerou todas as opções e (esperançosamente) abordou todas as eventualidades.
Se a escala de tempo for muito alta, você poderá discutir quais partes (por exemplo, confirmação por e-mail) não são necessárias nesse caso com dados concretos, em vez de apenas tentar enfiar um litro em um pote.
Faça isso com bastante frequência e, com sorte, você ensinará a eles que geralmente há mais em um desenvolvimento do que encontrar à primeira vista.
fonte
Listar tarefas é quase perfeito, mas lembre-se de que as tarefas que fazem todo o sentido para um engenheiro fazem muito pouco sentido para uma pessoa não técnica. Por exemplo, na lista acima, eu sei que "otimizar alterações de banco de dados para velocidade" pode ser uma ou várias tarefas demoradas que incluem a criação de perfil do código, executando-o em busca de pontos lentos, revisando-o com especialistas ou lançando-o através de um conjunto de testes predefinidos específicos para o produto. E então você provavelmente terá várias horas, se não dias, batendo com a cabeça na mesa enquanto tenta encontrar uma maneira de consertar as áreas que são muito lentas.
Mas você pode ter perdido o gerenciamento de projetos com a palavra "DB", se não com a palavra "otimizar".
Geralmente, expresso essas coisas para o gerenciamento de projetos em termos de GRANDES etapas, com palavras que descrevem riscos em termos de negócios. Tomando sua lista, eu resumiria dessa maneira se estivesse conversando com meu gerenciamento de projetos:
Eu evitaria qualquer estimativa inferior a meio dia. Eles terão que confiar, em algum nível, que você sabe do que está falando. E se eles realmente pensam que serão apenas 2 horas, convide-os a ficar com você por 2 horas enquanto você os orienta exatamente como são 2 horas na vida de um desenvolvedor de SW - então faça uma aula de codificação 101 para cerca de 2 horas, para mostrar exatamente o que tudo precisa ser considerado para começar a resolver o problema.
O mais importante é o seguinte:
fonte
Há um ditado: "Você não pode colocar dez quilos de porcaria) em uma sacola de cinco quilos". Seu trabalho é mostrar que a tarefa é de dez libras e eles estão pedindo para executá-la em um prazo de cinco libras.
A única coisa que falta é a estimativa de tempo. Coloque uma estimativa de tempo em cada tarefa e mostre como todas essas coisas se somam à estimativa que você fornece. Não permita que nenhuma estimativa seja maior que 4 horas. Se você tiver alguma tarefa em que diga "um dia" ou "10 horas", divida-a em subtarefas menores.
Agora você tem uma lista detalhada dos custos. Ao todo, isso totaliza até 27 horas de trabalho.
Agora você pode mostrar isso ao seu cliente e dizer "Essas são as coisas que devem ser feitas, com o custo de cada uma". Use a palavra "custo", porque o tempo é um custo e a gerência entende os custos. Explique que você pode abandonar as duas tarefas de otimização no final, mas elas terão um efeito negativo no caminho e representam apenas 15% da estimativa total.
Além disso, certifique-se de explicar de forma realista quais são suas horas / dia. Por exemplo, se você for chamado a dar suporte técnico, ou manter bancos de dados, ou qualquer outra coisa, considere isso em sua estimativa. Não diga "Bem, eu posso fazer 7,5 horas por dia de boa codificação" porque você provavelmente não pode. Provavelmente é mais parecido com 5 ou 6.
Então, o mais importante, acompanhe seu progresso. Diga que você pode fazer 5 horas por dia de codificação. Em seguida, você poderá executar as duas primeiras tarefas (no meu exemplo) na segunda-feira, terminar a terceira e iniciar a quarta na terça-feira, e assim por diante. Faça uma lista de verificação que mostre isso, para que você possa mostrá-los na quarta-feira, quando eles chegarem, e dizer: "Como vai você ainda vai ser feito até o final de sexta-feira?"
Veja meus slides da palestra Prevenindo a Crise: Estimativa e Rastreamento de Projetos que Funcionei, que dei na OSCON há alguns anos. Veja o slide 21, "Planejando a semana". Há também um gráfico de velocidade de amostra .
fonte
Pergunte a eles:
Como você faria? Quais módulos você mudaria? Quantas linhas de código? Quais são as implicações de segurança? Alguma alteração no esquema do banco de dados? Se você fizer alguma alteração no banco de dados, quantos arquivos são afetados? Quanto tempo levou para adicionar o último formulário? Qual é a média (média aritmética) para adicionar um formulário? Qual foi o mais longo? Vou estimar que levará um minuto a menos que o mais longo. Se você não souber quanto tempo levou para adicionar os últimos N formulários, é garantido que essa estimativa seja precisa em uma ordem de magnitude.
fonte
Eu poderia lhe dizer para explicar a eles que o software deles é como uma máquina de 100 toneladas com 10.000 partes diferentes, grande parte conectada de maneiras complicadas. A instalação de uma peça de 1 polegada nesta máquina requer alguma engenharia, para que não a quebre, mas a melhor resposta é:
Se você tivesse uma arquitetura de código melhor, isso facilitaria tarefas como essa? E a resposta é que a maioria das equipes de software não é um bom arquiteto (porque simplesmente não acumulou toneladas de modelos arquitetônicos genéricos ou não é mestra no domínio do problema o suficiente para antecipar todos os problemas) e nem sempre é um bom engenheiro , para que não se sintam confiantes em fornecer estimativas ou fazer promessas.
Assim como o século 20 levou para reunir boa arquitetura e engenharia para a construção de grandes edifícios, as ferramentas para engenharia de software simplesmente não chegaram ao mainstream. Eles estão sendo desenvolvidos: é preciso uma nova mentalidade. Veja o Código Zen em wiki.hackerspaces.org/Hacking_with_the_Tao.
fonte