Resolver qué errores proporcionarán el mayor beneficio de costos [cerrado]

9

Quería tener una idea de clasificar los errores en función de lo fácil que es resolverlos y cuánto beneficio me dará. por ejemplo, si hay un error que tomará aproximadamente una hora (cierre doble de archivo, etc.) para resolverlo frente a otro que demore un día (falla de segmentación). Pero si resolver el primer error no es muy importante, entonces probablemente trabajaré en el segundo.

¿Existe algún trabajo de investigación que clasifique los errores en función de la relación costo-beneficio o una métrica similar?


Digamos que es posible clasificar los errores en función de sus características, por ejemplo, vulnerabilidad de seguridad, error de memoria, error lógico, etc. En la otra dimensión podría haber parámetros como dificultad (fácil, medio, difícil). ¿Hay otras dimensiones que debería estar buscando? Para simplificar las cosas, puedo suponer dos cosas:

  1. Todos los programadores del equipo son igualmente capaces de resolver cualquier error
  2. No hay fecha límite
Alaska
fuente
44
No estoy convencido de que se pueda estimar con precisión el tiempo que llevará reparar un error .
Mike
Estoy de acuerdo contigo. No estoy pidiendo un enfoque universal, sino uno aproximado. Hay ciertos errores para los cuales podemos estimar fácilmente el tiempo (que a veces puede estar mal pero está bien).
AK
1
No categorice el tiempo que tomará / puede tomar. Clasifique en importancia: "mostrar tapones" (bloqueos, no inicio, interfaz de usuario inutilizable), "corrección", "satisfacción del cliente", etc. y en urgencia. Ordénelos según importante y urgente; importante pero no urgente; no importante y urgente; no importante no urgente. (Si solo mira lo urgente, entonces las cosas importantes no urgentes tienden a ser expulsadas por cosas urgentes no importantes).
Marjan Venema
2
Esta pregunta también se publicó aquí: pm.stackexchange.com/questions/9664/… . No creo que se haya hecho daño, ya que podría decirse que esto podría pasar a la Gestión de Proyectos. Estoy vinculando esto para que otros que encuentren esta pregunta puedan ver todas las respuestas. ¡Espero que esto ayude! :)
jmort253
"¿Hay algún trabajo de investigación ..." - Las preguntas que nos piden que recomiende una herramienta, biblioteca o recurso favorito fuera del sitio no están incluidas en el tema para los programadores, ya que tienden a atraer respuestas obstinadas y spam. En cambio, describa el problema y lo que se ha hecho hasta ahora para resolverlo.
mosquito

Respuestas:

11

El sistema de seguimiento de errores típico tiene dos, tal vez tres campos que identifican la relación costo beneficio del error:

  1. Prioridad (asignada por el dueño del negocio)
  2. Severidad (clasificación de error - crítico a bajo)
  3. Horas estimadas (una conjetura sobre cuánto tiempo llevará hacer)

Como observa, esto identifica qué error es importante para trabajar.

El sistema presentado en PEF / REV: una métrica de seguimiento de errores multidimensional agrega más información sobre el negocio y los componentes del desarrollador para el beneficio del costo del error.

Todos los valores están en una escala 1 .. N (el mismo valor superior para cada uno).

PEF es identificado por el negocio:

  • P ain: cuán doloroso es el error
  • E ffort: cuánto esfuerzo se necesita para evitar el error
  • Solicitud F : con qué frecuencia ocurre el error

REV viene del desarrollador:

  • R isk - ¿Qué tan arriesgada es la solución al sistema?
  • E ffort - ¿Cuánto esfuerzo hay para arreglar el error?
  • V eriabilidad - ¿Qué tan fácil es verificar la corrección de errores?

Si, por ejemplo, tiene un bloqueo que ocurre con poca frecuencia y es fácil de solucionar (activar el autoguardado), podría ser un PEF de 7,1,1 (puntaje 9). Si bien la reparación puede implicar un cambio en un módulo central y tener un REV de 9,3,2 (puntaje 14).

Por otro lado, podrías tener una molestia que siempre está ahí (3,3,9 - puntaje 15) que tiene una solución trivial (1,1,3 - puntaje 5).

En este ejemplo, la molestia parece ser una mejor relación costo / beneficio para trabajar.


fuente
Me gusta esto. Parece que también sería posible aplicar esto a las "nuevas funciones".
Martin Wickman
Esto es muy informativo. Nuestro equipo usa bugzilla, y creo que no tiene características similares.
AK
1
@AdityaKumar Bugzilla es muy personalizable, aunque esto se puede hacer con la adición de campos personalizados y luego ejecutar informes contra los valores PEF / REV.
@MartinWickman absolutamente. El REV se puede traducir casi sin cambios. PEF probablemente se convertiría en una combinación de Utilidad (lo bueno que es tener) y Frecuencia (Con qué frecuencia se usa) y Valor (Cuánto sería el valor percibido de la característica). (Y gracias por hacerme pensar en esa dimensión)
5

El problema que está describiendo es muy común y la mejor respuesta podría ser "usar su instinto".

Por lo general, divido los errores en tres categorías: bloqueo, molesto, cosmético (podrían llamarse 1, 2, 3, eso realmente no importa) y luego anoto una estimación general del tiempo necesario para corregir cada error (todos los errores deben tener una estimación actualizada aproximada en todo momento).

Al resolver errores Crashing> Molesto> Cosmético y luego simplemente hago un "trabajo más corto primero" para obtener el mayor rendimiento inicial posible.

Encuentro MUY difícil calcular cualquier tipo de beneficio financiero directo de la resolución de cualquier error, a menos que sea un trabajo remunerado muy limitado.

Una nota que puede necesitar es que realmente debería estar a la altura del quinto punto en The Joel Test , esto podría estar influenciado por el tamaño del equipo y la distribución entre varios otros problemas "locales", pero generalmente es un signo de buena práctica.

Michael Banzon
fuente
1
De acuerdo aquí, pero lo que cada una de esas clasificaciones realmente significa es importante acordar si está trabajando con otras personas que las usan. "Crashing" parece bastante objetivo, lo hace o no. Pero luego llegamos a la parte "Molesto" / "Cosmético". ¿Que molesto? ¿Y a quien? Etc. A menudo hay otra clasificación entre "Crashing" y "Molesto". Donde "Crashing" puede no tener una solución alternativa, "Breaking" (si puedo) puede tener una solución alternativa.
tamouse
Estoy de acuerdo @tamouse: mi ejemplo es una traducción de una redacción (tal vez deficiente) en mi lengua materna ;-)
Michael Banzon
3

Otra consideración podría ser el tipo de prueba u organización de prueba que descubre el error, al tratar de determinar el impacto y el costo del error y corregirlo. Las pruebas unitarias o funcionales pueden apuntar a algo en el diseño que necesita ser cambiado y, por lo tanto, la corrección temprana sería más fácil y menos costosa que después. Las pruebas de sistema o integración pueden apuntar a algo que afecta a una variedad más amplia de clientes. Y las pruebas de estándares, aunque a menudo son algo no crítico para un gran subconjunto de clientes, pueden provocar una pérdida de certificación si no se corrigen y tener un impacto negativo en el negocio.

Dicho esto, solo porque una organización de prueba en particular tenga una falla en la prueba no debería automáticamente hacer que un error sea "crítico". Por ejemplo, puede haber una tentación de decir algo como "todas las pruebas del sistema deben pasar antes del envío, por lo tanto, cualquier prueba del sistema que falle automáticamente da como resultado un error crítico / de alta gravedad". Esperemos que ninguna organización haga esa declaración (los buenos criterios de salida de la prueba son una discusión diferente), pero el punto es que la "gravedad" del error debe juzgarse por su impacto en el cliente, el producto o la imagen de la empresa en lugar de dónde o cuándo Está descubierto.

Una posible forma de abordar eso es hacer una distinción entre "severidad" y "urgencia". Por ejemplo, a medida que se acerca la fecha de lanzamiento, puede haber presión de tiempo para determinar si un error de gravedad aparentemente menor podría afectar a un gran subconjunto de clientes, dándole al error una mayor "urgencia" y elevando el trabajo sobre ese error por encima (algunos) otros en menos hasta que se pueda hacer esa determinación. Un equilibrio adecuado entre los dos, junto con la experiencia y el buen juicio, ayudaría a dirigir dónde se gasta el tiempo y el esfuerzo.

Mark Grubbs
fuente
2

Además de lo que otros han dicho sobre la clasificación de errores, etc., también considere mirar el Acoplamiento aferente (Ca) para determinar el nivel de criticidad que un error particular podría representar. Si tiene un error en un módulo con un alto recuento de Ca, podría estar tratando de solucionarlo primero, ya que podría beneficiar a otros componentes del sistema. Ca lo ayuda a determinar el nivel de responsabilidad, y los módulos responsables con errores perjudican a toda la aplicación (lea más sobre Ca aquí: http://www.ibm.com/developerworks/java/library/j-cq04256/index.html )

Con eso en mente, tendemos a clasificar los errores y colocarlos en prioridad según su impacto en el cliente. Su cliente variará, pero tenerlos involucrados en la discusión finalmente conducirá los errores que se deben corregir sobre los demás. No es realmente científico, pero como equipo completo tendemos a llegar a un consenso sobre la prioridad y la categorización de los errores, todos tienen aportes sobre los "grandes" (todos los interesados ​​pueden dar su aporte), y desde allí apilamos.

Jack
fuente
2

No puede determinar el costo real de todos los errores. Algunos pueden, para muchos es muy difícil de cuantificar. Por ejemplo, supongamos que tiene un error que hace que todo el texto de los botones esté ligeramente desalineado. Hace que su producto 1.0 se vea un poco descuidado. Esto no hace que su programa se bloquee o que sus usuarios pierdan datos. Probablemente un error bastante barato, ¿verdad?

Ahora, ¿qué pasa si cada cliente suyo nota este problema y cada revisor lo menciona en las revisiones de su producto? ¿Y qué pasa si este error pasa de la versión 1.0 a 1.1 y 1.2? Su empresa ahora puede tener la reputación de ser un poco descuidada en el control de calidad. ¿Qué tan costoso podría ser este simple error en términos de posibles pérdidas de ventas para su empresa para futuros productos? O, ¿cómo podría afectar esto a una revisión que recibe su producto? Su producto puede satisfacer perfectamente las necesidades de sus clientes, pero solo obtiene un 9 de 10 porque se ve un poco descuidado.

Por lo tanto, no solo debe mirar el costo de un error específico en términos de lo que cuesta solucionarlo y su impacto directo en el usuario, sino que debe considerarlo en el contexto más amplio de cómo afecta la percepción de su producto en el mercado y cómo esa percepción afecta las ventas futuras.

Esto puede parecer exagerado pero no lo es. En el momento en que escribo esto, puede ir a otro sitio en la web que tiene un artículo sobre cómo Apple ha movido el "1" en su ícono de calendario por un píxel o dos. Si realiza una búsqueda, verá varios artículos negativos sobre este pequeño error. Por supuesto, esto no ha afectado directamente el resultado final de Apple, pero se promueven a sí mismos como el pináculo del buen diseño, por lo que tener un error de diseño afecta esa percepción, aunque solo sea un poco.

Bryan Oakley
fuente
Me gusta su idea de que el impacto en el cliente / usuario puede convertirse en una gran fuerza impulsora sobre qué errores resolver.
AK