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?
Respuestas:
Cualquier número de razones, que incluyen:
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.
fuente
Porque un software con un error es mejor que ningún software.
Por la misma razón:
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".
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
Posibles respuestas:
fuente
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.
fuente
En la prueba programática más simple:
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.
fuente