¿Por qué todavía se lanza software con errores conocidos? [cerrado]

18

Parece que con frecuencia en proyectos grandes, el software todavía se lanza con el rastreador de errores lleno de errores. Ahora puedo entender las solicitudes de funciones, pero varias veces he visto un gran número de errores aún sin resolver, no revisados ​​o no terminados, pero todavía se ha eliminado una versión.

¿Por qué? ¿Por qué se lanzaría un proyecto de código abierto o un proyecto en general con errores conocidos ? ¿Por qué no esperarían hasta que el rastreador de errores tuviera 0 errores abiertos?

TheLQ
fuente
3
Huele a tonto.
Trabajo
41
Muéstranos un software utilizable sin errores.
Joel Etherton el
13
Porque si bien el tiempo es infinito, las personas no lo son?
Joe
77
Gracias por esta publicación, me dio una buena risa ... No me sorprendió ver que tienes 18 años en tu perfil. : D Obviamente aún no ha trabajado con los gerentes de equipos de software .
Yam Marcovic
77
Una de las razones más comunes: la versión corrige errores críticos o errores que están afectando a los clientes del mundo real y, al menos hasta donde se sabe, no agrega ningún error nuevo que pueda hacerlo.
David Schwartz el

Respuestas:

41

Cualquier número de razones, que incluyen:

  1. La compañía se había comprometido con la base de usuarios para lanzar en un momento particular
  2. Los errores no eran críticos para la misión, ni siquiera importantes.
  3. El desarrollo de nuevas características fue visto como más importante (ya sea correctamente o no)

En pequeña medida, esto es como preguntarte por qué trabajas como programador a pesar de que tu conocimiento de programación no está "completo". En la mayoría de los proyectos complejos, habrá muchos errores. Tratar con ellos al agregar nuevas características es una tarea difícil y compleja.

eykanal
fuente
24
+1, pero quiero agregar: 4) Extraños errores de aparición aparentemente irrepetibles que registran QA. Se debe realizar un seguimiento de este tipo de cosas, pero puede haber sido el resultado de una interrupción inexplicable de la red, un tiempo de inactividad del entorno no planificado o un control de calidad simplemente no proporcionó suficiente información para que posiblemente se depure. 5) Errores menores que requieren una cantidad desproporcionada de esfuerzo para resolver, por ej. Refactorización completa de un módulo específico.
maple_shaft
44
Buen comentario, los errores menores que requieren enormes esfuerzos de refactorización para eliminar tienden a quedar sin resolver.
eykanal
55
También podría ser que los errores no fueran vistos por la empresa como críticos o importantes. Los clientes pueden decir lo contrario, pero usted solo sabe cuando sus clientes se lo dicen.
joshin4colours
37

Porque un software con un error es mejor que ningún software.
Por la misma razón:

  • Las empresas de transporte se molestan en hacer horarios, aunque siempre hay demoras.
  • Las compañías farmacéuticas venden medicamentos con efectos secundarios conocidos (y en su mayoría documentados).
  • Las escuelas de todo el mundo enseñan física de Newton, aunque tiene limitaciones conocidas.

Tener una solución con deficiencias conocidas es mucho mejor que no tener una solución, o tener una solución con deficiencias desconocidas.
Mi IDE favorito tiene muchas características nuevas, que están lejos de ser estables. Digamos: prefiero tener que hacer algo a mano cada vigésima vez, porque la función falla, en lugar de tener que hacerlo todo a mano.

O decirlo con las palabras de Voltaire: "Le mieux est l'ennemi du bien".

back2dos
fuente
22

En última instancia, es una decisión comercial, incluso para el software libre y de código abierto. Hay un punto en el que los defectos que existen tienen un bajo impacto que es mejor liberar, poner su software en manos del usuario y obtener comentarios (incluidas, entre otras, solicitudes de funciones y nuevos informes de errores de defectos no encontrados en pruebas). Esta decisión está impulsada por la necesidad de obtener tracción en el mercado para el software entre los competidores. Si desea que su software tenga un impacto, debe vencer a sus competidores para comercializar con nuevas características o conceptos.

Thomas Owens
fuente
1
Me gustaría señalar que, obviamente, si su software está lleno de errores, el impacto puede no ser beneficioso;)
Matthieu M.
7

todo se reduce a análisis de costo vs. beneficio. Cada corrección de errores tiene algún valor de costo asociado (horas hombre para arreglar, riesgo de hacer más cambios de código X días antes del lanzamiento ...). Al mismo tiempo, cada corrección de errores claramente aporta un valor adicional en términos de más funciones, usabilidad, etc.

Entonces, esta es la pregunta que cada equipo de desarrollo enfrenta al realizar un lanzamiento: 1) vale la pena solucionar el error #i dado el costo y el valor adicional y 2) repetir para todos los errores abiertos de i = 0 a N.

Tenga en cuenta que un producto de software que no se lanza NO tiene valor para nadie. El producto de software que tiene 200 errores pendientes pero tiene el 90% de su funcionalidad funcionando, tiene valor para todas las personas que están contentas con lo que funciona en el momento del lanzamiento.

Nunca estuve en ninguna compañía en ningún producto que se lanzó con 0 errores y creo que eso es perfectamente normal. En algún momento, simplemente reduce sus pérdidas y capitaliza lo que funciona. De lo contrario, nunca liberarás nada.

DXM
fuente
6

En un proyecto grande, nunca dejas de encontrar errores. Si tuviera que esperar hasta que se corrigieran todos los errores y se probara la regresión de las correcciones, nunca se liberaría.

Además, tenga en cuenta que no todos los errores son internos. Cada programa es parte de una red compleja de otro software, y los cambios en otros lugares pueden manifestarse como "errores" en su software. No puedes detener el mundo.

ddyer
fuente
Relacionado con esto está el hecho de que cada corrección de errores crea la oportunidad de introducir nuevos errores en el producto que pueden ser más serios que el error original.
Malaquías
4

Además de las muchas buenas respuestas, a veces hay una carrera hacia el mercado con un nuevo producto. Si cree que puede obtener la mayor parte de la cuota de mercado incluso con el 15% (o algún otro número) de defectos no críticos abiertos, podría valer la pena liberar el producto para obtener una ventaja sobre los competidores.

FrustratedWithFormsDesigner
fuente
2

Estos errores pueden ser bastante menores. Recuerde que el software comercial debe enviarse y presionarse en los discos y esas cosas. Cumplir con esas fechas de lanzamiento tiene serias implicaciones financieras, y retrasarse por algunos problemas menores no tiene sentido financiero, sin mencionar la necesidad de llegar al mercado por otras razones.

DeadMG
fuente
2

Posibles respuestas:

  • Es muy poco probable que alguien encuentre el error.
  • Hay soluciones para los errores.
  • El software debe lanzarse en algún momento, y es poco probable que se logre la perfección.
John Fisher
fuente
2

Estoy seguro de que, idealmente, a la mayoría de los desarrolladores les gustaría ver cero errores en sus aplicaciones, lamentablemente las condiciones pueden no permitir tal estado de utopía.

Me gustaría creer que es porque la base de usuarios exige nuevas características y está dispuesta a incorporar los mismos o más errores para una funcionalidad adicional.

Si hay una administración involucrada, los plazos deben cumplirse por una variedad de razones: horarios de publicidad, problemas adicionales de disponibilidad de personal, la mentalidad de "debemos ser los primeros con esta funcionalidad".

¿Menos optimista en mi mente, posiblemente porque los desarrolladores son flojos?

También recuerde que en las comunidades de código abierto normalmente es "quién" quiere asumir qué solicitudes de error / función / problema, tal vez nadie desee tratar los problemas que están presentes debido a problemas más grandes detrás de ellos.

Darren Nolan
fuente
1

En la prueba programática más simple:

if (management->perceived_cost_to_fix > management->perceived_benefit_release_now) {
    release;
}

Todo es siempre una compensación, ya sea arreglando errores, tiempo / espacio / memoria o seguridad / usabilidad. Piense en el cálculo de compensación que se realizó. Puede estar en desacuerdo con él, pero está en problemas si no lo entiende.

Además, piense en esos cálculos en una curva de campana ... algunas personas harán muy malos a ambos lados. Ver Duke Nukem Forever para un extremo de la curva.

Jeff Ferland
fuente