Cumprir o prazo ou menos bugs?

15

Em um mundo ideal, é preferível cumprir o prazo com menos erros. Mas a partir da sua experiência, que é mais preferível / aceitável:

  1. Cumpra o prazo, mas tem vários bugs porque o desenvolvedor corre para as coisas
  2. Menos bugs, mas não cumprem o prazo porque o desenvolvedor é muito rigoroso ao escrever o código
Joshua Partogi
fonte
7
E quanto a eliminar recursos? Na minha experiência, você é capaz de fazer uma liberação aceitável no prazo, se conseguir descartar recursos adicionais se eles não se encaixarem mais no projeto. Você deve reservar tempo suficiente para se livrar dos bugs no final do projeto. Qualquer coisa que não tenha sido implementada até então terá que esperar até a próxima versão.
Anne Schuessler
Obtenha uma versão relativamente livre de erros primeiro.
abel
Quando você está realizando o scrum verdadeiro, os bugs existem por mais de uma semana :) Benefícios: A) pagar antecipadamente por bugs é muito mais barato; e B) Quando você paga antecipadamente, sabe qual é o verdadeiro custo.
Job
3
XKCD é tão relevante como sempre. xkcd.com/844
Maxpm 19/01

Respostas:

5

A resposta a essa pergunta depende muito dos objetivos de negócios e do cliente.

Empresa :

Se você estiver negociando com um cliente de nível corporativo que esteja bem estabelecido no mercado, eles serão menos flexíveis e não poderão se adaptar às mudanças tão rapidamente. Portanto, a estabilidade é um requisito absoluto na maioria dos casos. Há exceções para pesquisa e desenvolvimento e inserção de novas verticais. Finalizações mais rápidas primeiro em alguns casos.

Esses tipos de clientes geralmente entendem que um bom software leva tempo para se desenvolver e trabalharão com você para tentar cumprir as metas.

Startups :

Para uma nova inicialização, as regras são drasticamente diferentes. Como uma startup, você precisa saber imediatamente se o produto que você está construindo realmente atenderá a uma necessidade, como previsto em sua pesquisa de marketing. Para uma startup, lançar um protótipo no mercado o mais rápido possível pode gerar muitos comentários valiosos sobre a direção que o produto deve seguir.

Ele também pode estabelecer você como líder de mercado, ajudando você a ganhar uma participação de mercado valiosa em uma nova vertical antes que fique saturada com a concorrência.

Como as startups são pequenas, flexíveis e podem se adaptar rapidamente às mudanças, esse modelo funciona melhor para elas.

Em resumo, existem outros fatores a serem considerados, mas a idéia principal é que cada projeto seja diferente e tenha diferentes objetivos de qualidade e tempo para o mercado. Cabe à liderança executiva determinar uma estratégia de negócios eficaz que inclua uma análise completa dos custos de oportunidade da escolha de um método em detrimento de outro.

jmort253
fonte
14

ou ... 3. Recorte funcionalidades não essenciais

Às vezes, devido aos doces técnicos ou aos recursos solicitados pelo cliente, os prazos são difíceis de cumprir e, inerentemente, ocorre uma quantidade maior de bugs. São os princípios KISS e YAGNI aplicados.

Citando este livro , "Retrabalho", o essencial / núcleo / epicentro do seu software é o que a empresa precisa para funcionar, assim como um carrinho de cachorro-quente pode ser um carrinho de cachorro-quente sem coberturas, o que você não pode cortar é os cachorros-quentes.

Renegociar

Uma das coisas mais difíceis de aprender é como manter os clientes felizes e, na minha experiência, isso pode ser realizado mais facilmente com iterações menores de produtos.

Às vezes, os prazos exigem o software que trabalha com alto nível de produção desde o primeiro dia. Gerentes / clientes nem sempre sabem (na maioria das vezes) o que realmente precisam para o software. Portanto, tente reduzir funcionalidades não essenciais e manter a qualidade. No final, depende de quão crítico será o ambiente de produção, mas tente cortar recursos extras e oferecer qualidade. Citando novamente "Retrabalho":

Fazer depois também significa fazer melhor

... e também cumprir prazos com menos erros

dukeofgaming
fonte
2
Isso é ortogonal à pergunta original. Muitas vezes, você simplesmente não pode cortar a funcionalidade. É bom quando você pode, mas não acho que isso seja uma resposta boa e genérica à pergunta.
Jason Baker
funcionalidade é essencial. tudo isso.
mauris
1
Nem todas as funcionalidades são essenciais .
Jürgen A. Erhard
2
Nem todas as funcionalidades são essenciais. Pode ser muito bom ter ou esperar até o próximo lançamento (supondo que haja um próximo lançamento planejado). Nunca trabalhei em um projeto em que não houvesse alguns recursos que pudessem ser cortados.
Anne Schuessler
4
Normalmente, se você faz a pergunta dessa maneira "Toda essa funcionalidade é essencial?", A resposta que você obtém será "Sim!". No entanto, se você o dividir em pedaços pequenos o suficiente, geralmente há aspectos da funcionalidade que o desenvolvedor considerou essenciais, mas que o cliente não se importa. Isso requer comunicação constante para descobrir. Além disso, se você pedir ao cliente para classificar a funcionalidade, geralmente existem alguns itens no final da lista que podem cair ou aguarde até o "prazo". Não acho que essa resposta seja ortogonal, parece morta.
Marcie
9

Bem, você pode enquadrar da seguinte maneira: deseja pagar pela qualidade agora ou mais tarde? Em primeiro lugar, dedique algum tempo para fazê-lo bem ou dedique algum tempo corrigindo todos os problemas. Eu argumentaria que essa fase de correção de bug pós-desenvolvimento de recursos pode ser mais cara, pois também pode ser mais arriscada e propensa a soluções hacky, já que o código existente já está em vigor e provavelmente não possui qualidade suficiente.

Matt H
fonte
Esse é um ponto muito bom. :-)
Joshua Partogi
8

Cumpra o prazo e apresente uma lista de problemas conhecidos .

As pessoas odeiam encontrar bugs, mas se elas foram avisadas com antecedência, elas tendem a ser muito mais brandas.


fonte
5

Isso depende inteiramente da situação ....

Há muitos fatores a serem considerados:

  1. Quão fácil é lançar patches?
  2. É possível lançar uma versão básica simplificada e, em seguida, corrigir novas funcionalidades (estojo de borda) com o tempo?
  3. Qual é a cultura geral da indústria cliente para esse produto? Eles esperam lançamentos perfeitos únicos ou estão acostumados com a idéia de um sistema em evolução que pode ser problemático quando lançado pela primeira vez?
  4. Qual é o risco para os negócios que uma versão inicial de buggy representa, em vez de estourar o prazo?

Em suma, não há resposta em preto e branco para isso. Por exemplo: Para algo como um sistema incorporado que é difícil e caro de implantar em dispositivos em campo, pode ser melhor tentar esperar (renegociar prazos, se possível) e liberá-lo da maneira mais livre possível de erros. Por outro lado, para algo como um grande sistema de portal da Web (escrito como um aplicativo da Web) que pode ser facilmente atualizado a qualquer momento, lançando correções à medida que são lançadas, pode fazer mais sentido lançar uma versão inicialmente desonesta e em seguida, remova os problemas (e a funcionalidade da caixa de borda) à medida que você chegar a ele.

Mas, no final das contas, na minha experiência, isso tem sido mais uma decisão de negócios do que uma decisão tecnológica. Se você estiver em uma situação em que perder o prazo é um grande problema, enquanto ter uma versão inicial de buggy não é (ou vice-versa) - convém ponderar essas coisas ao tomar a decisão.

NOTA: Como programador, é claro que prefiro a ideia de polir o produto o máximo possível antes de liberá-lo (diabos, prefiro nunca ter prazos;)). Mas realisticamente, isso não é possível na vida real. Freqüentemente, uma versão inicial simplificada é uma boa solução intermediária.

Bobby Tables
fonte
2

Eu já vi muitos PMs com medo de dizer ao cliente que não podemos cumprir o cronograma e insistir em enviar com erros conhecidos. Posso lhe dizer que toda vez que eles informam ao cliente, ele geralmente está muito mais interessado em menos bugs e em um prazo final alterado. Eu garanto que eles se lembrarão dos bugs mais do que o prazo perdido, a menos que o prazo seja absolutamente inalterável (como o início da temporada de declaração de impostos quando você estiver fazendo um software tributário) ou afetará algumas outras coisas que serão muito caras de mudar (IMHO 98% de todos os prazos não atendem a esses critérios).

HLGEM
fonte
1

Eu acho que depende do bug. Deseja atrasar um lançamento para corrigir um erro em que o aplicativo falha no minuto em que é iniciado em qualquer computador? Sim definitivamente. Você precisa corrigir um erro que ocorre apenas no Windows ME enquanto há lua cheia? Provavelmente isso pode esperar.

Se for um bug crítico, é preferível executar o número 2 sem o conhecimento prévio. A razão é que custa exponencialmente mais para corrigir se você precisar enviá-lo em uma atualização.

Para atualizações menos críticas, você pode lançar uma atualização em pacote que reduz esse custo em algum grau.

Em caso de dúvida, digo que você segue a segunda posição, mas não ficaria surpreso ao receber uma resposta da gerência com essa abordagem. Suspeito que os gerentes tendem a ser julgados mais pelo bom desempenho em cumprir os prazos do que por não causar atualizações críticas desnecessárias.

Jason Baker
fonte
1

Nem. Por que não apresentar qualidade com seu código? Ser capaz de cumprir prazos com código de qualidade? Você pode oferecer menos recursos, mas se a qualidade for incorporada ao processo, poderá obter os dois.

O que acontece agora é que você precisará de um líder de equipe ou gerente de desenvolvimento habilitado que possa dar um empurrão nos negócios e conversar sobre duas coisas:

  1. Qualidade inserida no código = menos 2 recursos por compilação
  2. Priorizar os recursos mais altos necessários das partes interessadas quanto ao que eles REALMENTE precisam.

Depois, você pode se concentrar nos recursos de maior valor e destacá-los com excelência.

Escoteiro Ágil
fonte
0

Bem, no que diz respeito aos testes, nunca termina. acabou, mas nunca terminou.

Vá para o lançamento com erros com severidade e mais prioridade resolvida.

maz3tt
fonte
4
Sim, mas você não comete suicídio porque vai morrer de qualquer maneira. Você leva uma vida mais longa e saudável possível. Por esse mesmo motivo, você não apenas expulsa o lixo só porque ele nunca vai terminar de qualquer maneira. Você tenta fazê-lo o mais acabado possível.
Jason Baker
Bem dito @ Jason. 1
Dan McGrath
0

Cumprir o prazo com muitos erros torna você pobre no setor e o cliente não volta mais. Você pode conversar com o cliente para obter o atraso em dois ou três dias.

Abimaran Kugathasan
fonte
0

Se você olhar para isso de um usuário final, eu ficaria muito desapontado se alguém prometesse fazer algo para segunda-feira e quando tentei usá-lo, ele não funcionaria, ou seria tudo de buggy.

Mas se você olhar para o lado "processual", significa que o aplicativo precisa de mais testes e faz parte da vida natural do software.

Minha melhor abordagem é tentar fazer as coisas funcionarem da maneira que elas deveriam funcionar (se for um módulo importante, não preste atenção aos detalhes, o login no formulário deve fazer login, mas qualquer pessoa será picada se você não exibir notificações posteriormente).

guiman
fonte
0

Esta é uma pergunta que somente você pode responder. Depende do tipo de produto, quem é o cliente, o que ele exige, etc. Não há como dar uma resposta simples 'a ou b'. É completamente dependente da situação.

Mas lembrarei que o custo de corrigir um bug após o lançamento é muito maior do que corrigi-lo antes do lançamento. Considere isso ao decidir se deve ou não esperar até o lançamento para corrigir um erro, pois você estará gastando mais tempo / esforço / dinheiro com isso.

GrandmasterB
fonte