Como explicar a uma pessoa não técnica por que a tarefa levará muito mais tempo do que eles pensam? [fechadas]


60

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?


15
Votei sua pergunta porque é a melhor resposta para si mesma.
31411 JohnFx

3
Exatamente. Diga-lhes os deets uma vez e então talvez eles vão entender as especificidades ... Fazê-lo uma vez e talvez eles shaddup sobre os detalhes da próxima vez ...
Agile Escoteiro


4
Você acha que é difícil explicar isso para pessoas não técnicas? Mesmo os técnicos não entendem!
congusbongus

11
Bater nelas com uma truta grande e gritar para que se curvem diante do seu poder tecnológico é certamente mais divertido, mas acho que as balas são realmente uma boa idéia.
Erik Reppen

Respostas:


26

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.


3
Normalmente, dou um passo adiante e o coloco no Microsoft Project. É algo profissional que eles podem levar para seus chefes e você pode listar o tempo de cada um (de preferência em horas) e depois mostrar todas as etapas envolvidas. É muito mais difícil para eles discutir sobre tarefas individuais que duram 4 horas e somam uma semana. Se houver tarefas listadas que levem dias ou semanas, tente dividi-las em tarefas menores.
Daniel Knoodle

11
@ Daniel - Acho que depende de quão "formal" você precisa, mas o Project (ou equivalente) parece mais profissional.
ChrisF

Na verdade, concordo que as formalidades sejam mais do que necessárias para alguns casos. É tudo sobre qual opção recebe menos retorno e até que ponto a escada precisa subir. Pessoalmente eu uso projeto para agendar as tarefas de casa .. lol
Daniel Knoodle

11
É claro que a desvantagem disso é que essa lista se torna um compromisso e, se algo der errado, você será atingido.
Andy

Pertencente ao comentário de @Andy, isso é realmente muito difícil de corrigir. Uma das principais maneiras de fazer um esforço consciente para mitigá-lo é reduzir suas estimativas, mas você corre dois riscos: 1) Você ainda está subestimando o tempo que precisa ou 2) as estimativas parecem muito longas, pelo menos parcialmente do estofamento. Esse também é um problema que surge no Scrum: os desenvolvedores deixarão muito espaço em suas estimativas para sprints. (É por isso que eu preferiria pessoalmente o Kanban.) Espero que haja algum tipo de maneira de lidar com esses dois problemas em potencial ao se comunicar.
Panzercrisis

11

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:

  1. Primeiro, há duas partes: a página da web que o usuário vê e o servidor que realiza o trabalho pesado. Ambas as partes precisam estar lá para que esse recurso funcione.
  2. A primeira parte será criar uma página da Web que faça sentido para o usuário (adicione HTML de front-end, adicione javascript do lado do cliente). A chave aqui é que a página da Web deve parecer que faz parte deste produto, deve operar em todos os navegadores que suportamos e deve ser lisa. Isso é o que o usuário vê; portanto, se parecer ruim, o usuário pensará que nosso produto é ruim. O desenvolvimento e o teste levarão X dias.
  3. Em seguida, é preciso haver coisas embaixo da página da web que fazem o trabalho. Nesse caso, isso significa inserir a descrição do recurso aqui (mapeia para - fazer algumas alterações no banco de dados, escrever código do lado do servidor, implementar confirmação por email, adicionar validação, usar testes de unidade). Não posso simplesmente juntar isso. Se o código for desenvolvido e testado, corremos o risco de causar danos aos dados de TODOS os usuários. Isso significa que uma coisa nova e simples pode prejudicar a reputação do produto em geral - mesmo para usuários que não estão usando esse recurso em particular. Nossas práticas de desenvolvimento cobrem isso - fazemos muitos testes para garantir que isso não aconteça - mas isso significa que tenho que planejar a tempo de testá-lo adequadamente. Isso vai me levar dias.
  4. A velocidade é muito importante em nosso produto. Se as coisas não acontecerem rapidamente, os usuários acharão que o produto não é bom. Então, depois de escrever todas essas coisas, eu preciso fazer o trabalho e garantir que ele esteja em pé de igualdade em termos de desempenho. Isso é muito importante no material da Web - se as pessoas veem um site ficar lento, elas rapidamente se voltam para um produto diferente para atender à mesma necessidade, porque é realmente difícil ver a diferença entre lento e quebrado. Esse tipo de trabalho normalmente leva Z dias (otimize as alterações no DB para velocidade, refatorar e otimize o código para velocidade)

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:

  • Compre falando mais sobre a percepção do cliente e o uso do produto, você está começando a falar o idioma deles - o idioma de $$ -, o ponto é que, se o código for hackeado de maneira ruim, você acabará perdendo negócios - se não nesse recurso, depois em algum recurso subsequente, quando práticas inadequadas de desenvolvimento tornaram impossível estender o código.
  • Defina uma sequência de eventos. A próxima pergunta não técnica será "se tivermos mais desenvolvedores do que você, isso aconteceria mais rápido? Se sim, se levar 40 horas para fazer isso, 40 pessoas podem fazer isso acontecer esta tarde?" A resposta, é claro, é "NÃO! VOCÊ ESTÁ FORA DA SUA MENTE ??". Mas essa não é a melhor. O melhor é que há uma sequência lógica de etapas aqui. A coisa B não pode ser feita até que a coisa A esteja no lugar (se você não escreveu nenhum código, não pode realmente otimizar ou testá-lo ...). As coisas A e A 'poderiam ser feitas juntas; portanto, se eles pudessem poupar aquele cara esperto por lá, você poderia reduzir o tempo de uma semana para 4 dias, e se eles puderem garantir o incrível suporte ao teste, você provavelmente conseguiria 3 dias. Lá'
  • Concentre-se no risco e esteja preparado para saber que alguns riscos valem a pena no momento. É por isso que os caras da empresa recebem muito dinheiro - descobrindo que riscos vale a pena correr. Por exemplo, se a velocidade de comercialização pesa um desempenho ruim porque sua empresa possui dinheiro suficiente para organizar um número ridículo de servidores a curto prazo, você pode ser instruído a ignorar tudo isso na etapa 4 (a otimização de código / banco de dados ) É esse o direito deles - é seu trabalho explicar os riscos inerentes a essa decisão.
  • No entanto, se você não confia nessas pessoas, receba uma confirmação por escrito - não precisa ser um confronto, apenas um e-mail rápido dizendo "aqui está o que eu acho que discutimos, aqui está o que eu não estou fazendo, aqui está o Eu vou fazer isso agora, então deixe-me saber se você não concorda ... se eu não tiver notícias, você assumirá que este é o caminho certo a seguir ". Como o gerenciamento de produtos pode ser o centro da perda de memória a curto prazo, isso é bastante útil para todos.

É quando seria bom poder responder às respostas favoritas.
Panzercrisis

9

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.

2h make some changes to Database
2h add front end HTML
   write server side code
     4h input validation
     4h database inserts
2h add validation
2h add client side javascript
   use unit tests
     2h client-side tests
     3h server-side tests
2h make sure SEO is setup is working
2h implement email confirmation
2h optimize DB changes for speed
2h refactor and optimize the code for speed

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 .


5
Cinco ou seis horas de boa codificação por dia? Deve ser legal!
APENAS MINHA OPINIÃO correta

1

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.


11
Parece que isso me parece passivo-agressivo.
Andy

Não, é o método socrático.
SnoopDougieDoug 31/07

-2

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.


este não parece oferecer nada substancial sobre os pontos feitos e explicado na prévia 5 respostas
mosquito
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.