project-management - sinnaps - software de gestion de proyectos gratis
Prioridades y políticas de seguimiento de errores (10)
En nuestro lugar:
Usamos "arreglo para" y prioridades (en ese orden) para dar a los errores y solicitudes de características un orden de resolución recomendado.
Nuestras prioridades son:
- Asignar prioridad : es más alto y predeterminado.
- ¡Urgente! ¡Urgente! - Eso es para casos de "dejar todo lo demás", el nombre, un poco tonto, fue elegido para que la gente no lo abuse. Que a partir de ahora ha funcionado bien.
- Showstopper : este está bloqueando a alguien para que haga su trabajo de manera eficiente, evita la demo de alguna característica o similar.
- Necesario : necesario para la próxima versión a la que está asignado. Una función que prometimos o es parte de un hito específico del proyecto del cliente
- Esperado : algo que debería estar en la próxima versión, pero que se puede descartar.
- Arreglar si es el momento - un poco de lengua en cheeck, porque "lo hacemos cuando tenemos mucho tiempo" es el equivalente local de "no contener la respiración".
"Asignar prioridad" es el más alto y predeterminado para una presentación fácil. Lo mínimo que debe hacer el desarrollador responsable es evaluar la gravedad, ver si puede reproducirlo, resolver duplicados, etc.
En su mayoría, los desarrolladores están lo suficientemente involucrados en su parte de los productos que pueden descifrar el orden por sí mismos, y él podría arreglar un showtopepr antes de evaluar un nuevo caso. En general, esperaría que el gerente respectivo los coloque en un orden definido en caso de duda; ese no es el trabajo de los programadores, pero generalmente son buenos en eso.
Usamos FogBugz, por cierto.
Desencadenado por una pregunta sobre The Old New Thing , me gustaría preguntar:
¿Cómo configuras las prioridades de tu rastreador de errores? De manera más general, ¿cuáles son sus reglas para trabajar en ellas? ¿Qué tan estricto eres con "corregir errores primero"? ¿Todos ellos?
Marqué esta wiki de la comunidad y la publicaré como una respuesta separada. (Así que puedes votar por ellos si crees que son malos :)
No tengo ninguna falla con las respuestas hasta el momento, pero me gustaría añadir una observación sobre la productividad. Si un programador ingresa en un subsistema para reparar un error, hay un tiempo y esfuerzo dedicado a volver a familiarizarse con el código. Por lo tanto, arregle todos los errores que pueda que parezcan provenir de ese subsistema. Utilice el buen juicio sobre en qué subsistema trabajar primero y cuándo pasar al siguiente subsistema de prioridad. Este juicio está ciertamente influenciado por lo que piensa el soporte al cliente, y cómo otros han clasificado errores, pero la eficiencia también es muy importante.
Personalmente trato de trabajar siempre en errores primero, y luego mejoras como un producto estable en el que es más fácil implementar mejoras. Ahora no es un mundo perfecto, así que eso no siempre sucede, pero ese es mi objetivo.
Creo que mi vida como economista de código por Eric Sink pertenece aquí. Su esencia es: priorizar errores de acuerdo con la gravedad, frecuencia, costo y riesgo. No solucione todos los errores, sino más bien tenga una lista de los menos graves y soluciónelos a medida que avanza.
A propósito de "Corregir errores primero", descubrimos que nuestros clientes nos empujan mucho para soluciones rápidas (que desestabilizan el sistema) y no podíamos retroceder, así que decidimos por un sistema "humo". Cualquier solución rápida (es decir, que no haya sido revisada o probada correctamente, simplemente expulsada para satisfacer a un cliente) cuenta como un error "humo". Si la cantidad de chinches de humo abiertas aumentara a más de 5, reprimiríamos e iniciaríamos una unidad de reducción. Además, hicimos un anuncio público de que no haríamos correcciones rápidas una vez que esto sucediera e involucraríamos a nuestros clientes en todo el proceso.
No respondía exactamente a su pregunta, pero el enfoque resultó útil para nosotros.
Mi equipo no clasifica las tareas solo por prioridad; utilizamos tres criterios fundamentales: prioridad , gravedad y visibilidad .
La prioridad se refiere a nuestro cronograma de desarrollo. Un error o característica de alta prioridad es uno que está programado para completarse en el ciclo de desarrollo actual o se ha prometido a un cliente en una fecha determinada, relativamente pronto. Un ejemplo de una tarea de baja prioridad sería un error en una característica que aún está en desarrollo temprano y que no estará en el mapa de ruta oficial por algún tiempo.
La gravedad se refiere al impacto de la presencia del error o de la ausencia de la característica (en el caso de las solicitudes de mejora). Los errores que pueden arruinar los datos del usuario, dañar el hardware o crear una situación permanentemente irrecuperable tienen la mayor gravedad. Si otro equipo importante dentro de la empresa está atascado esperándonos para corregir un error o agregar una función, entonces esa tarea también tendría una gravedad bastante alta. Las clasificaciones de gravedad media se asignan a tareas como optimizaciones de rendimiento que son importantes pero no necesarias para que el proyecto funcione. Las tareas de baja gravedad son cosas como los errores ortográficos en los mensajes de error o las características que ayudarían a facilitar la depuración / prueba interna, pero que no son visibles para el usuario final.
La visibilidad se refiere a quién puede ver el error. Un error que bloquearía el software para cada usuario al iniciarse sería una tarea de alta visibilidad. Los errores que dependen de una configuración específica poco común o que solo se ven en nuestros laboratorios (o en los de nuestros socios) tienen una visibilidad media. Los errores dentro de las funciones internas de depuración y prueba (y no pueden ser encontrados por el usuario final) tienen la visibilidad más baja.
Para cada error entrante, solicitud de mejora o característica planificada / nuevo desarrollo asignamos una prioridad, gravedad y visibilidad (valor P / S / V abreviado) entre 1 y 5 (siendo 5 el más alto). En general, priorizamos nuestros esfuerzos clasificando la lista de cosas por hacer por la suma de los tres valores (por el contrario, es un sistema de lógica difusa). Se trabajará en un informe de error con un P / S / V de 2/5/4 antes de una nueva tarea de desarrollo con los valores 5/1/3, pero solo después de la solicitud de mejora con los valores 5/2/5.
Esta es (por supuesto) una ciencia inexacta, y siempre hay excepciones al sistema. A veces, es preferible manejar una solicitud de mejora de menor rango si también funciona con un error de mayor rango. Para todas las tareas con una clasificación de X
, los errores con rango X
generalmente se abordan antes de las mejoras del rango X
Por lo general, también consideramos que todas las clasificaciones tienen un margen de error de +/- 1.
Una desventaja de este sistema es que no tiene en cuenta la cantidad de tiempo que una tarea ha estado en la lista de tareas pendientes (algunas tareas obsoletas antiguas pueden durar mucho tiempo) o el tiempo estimado que la tarea tardará en completarse. Afortunadamente, tenemos suficientes personas en nuestro equipo que podemos permitirnos que alguien pase un día limpiando algunas tareas de bajo rango de vez en cuando.
Oficialmente, nuestra empresa tenía una estricta política de "corregir errores primero, luego escribir nuevas características". Sin embargo, las pocas personas que realmente parecían defenderlo también fueron los más importantes en términos de desarrollo nuevo. Nos tomó un tiempo, pero nos dimos cuenta de que corregir un error que hará feliz a un cliente es menos importante que agregar una nueva característica que hará felices a 100 clientes.
Además, nuestros productos son tan grandes por ahora, que tomaría años arreglar realmente todos los errores, este no es un intervalo de tiempo aceptable para una falta total de nuevas características / versiones.
En este punto, dado que tenemos un sistema de seguimiento de errores y de volcado de emergencia muy decente, se han corregido casi todos los errores fáciles, y hemos asumido la noción de que muchos de los restantes son molestos, pero no se detienen.
Nuestro sistema de priorización siempre está en el contexto de la iteración actual del software y funciona de la siguiente manera.
- Prioridad 1: todo el trabajo se detiene, excepto este elemento. Lanzamos el arreglo tan pronto como se prueba.
- Prioridad 2: la próxima versión no se apagará sin la resolución de este elemento.
- Prioridad 3: Realmente deseado en este lanzamiento, pero si nos quedamos sin tiempo lo presionaremos.
- Prioridad 4: Realmente no esperamos llegar a esto en este lanzamiento, pero si se quedan sin tareas, trabaje en ello.
- Prioridad 5: no trabaje en eso.
En cuanto a la advertencia "corregir errores primero". Generalmente hacemos eso, pero también aplicamos el sentido común. No todos los errores se crean por igual. Si el sistema da mal formato a las fechas cuando ya pasaron el año 10.000, ciertamente no es crítico retirar las características para obtener esa corrección. Si calcula mal el saldo bancario de alguien, eso lo lleva al primer lugar de la lista.
Errores que se pueden solucionar en menos de 2 horas primero, luego los que requieren más tiempo.
Utilizamos algo como esto (en la práctica los significados son un poco confusos):
Loco:
1. Bloqueador - Reservado para fallas catastróficas - excepciones, bloqueos, datos corruptos, etc. que (a) impiden que alguien complete su tarea, y (b) no tienen ninguna solución alternativa. Estos deberían ser extremadamente raros. Deben corregirse de inmediato (el mismo día) y desplegarse como revisiones.
2. Crítico : pueden referirse a excepciones no controladas u otros errores "graves" que solo ocurren bajo ciertas condiciones específicas (es decir, hay una solución práctica disponible). No hay un límite estricto para el tiempo de resolución, pero se debe arreglar dentro de la semana (revisión) y debe ser resuelto por la próxima versión. La distinción clave entre (1) y (2) no es la gravedad o el impacto, sino la existencia de una solución temporal .
3. Mayor : generalmente reservado para problemas de rendimiento. Cualquier cosa que perjudique seriamente la productividad pero en realidad no impide que se realice el trabajo. Reparar en la próxima versión.
4. Menor : estos son errores "molestos". No se aplica una configuración predeterminada, un campo de solo lectura que se muestra como editable (o viceversa), una condición de carrera en la interfaz de usuario, un mensaje de error engañoso, etc. Solución para esta versión si no hay problemas de mayor prioridad, de lo contrario el siguiente lanzamiento.
5. Trivial - Cuestiones cosméticas. Las barras de desplazamiento aparecen donde no deberían, la ventana no recuerda el tamaño / la ubicación guardada, los errores tipográficos, el último carácter de una etiqueta que se corta, ese tipo de cosas. Se arreglarán si la reparación solo toma unos minutos y alguien está trabajando en la misma pantalla / función al mismo tiempo, de lo contrario, tal vez nunca. Ninguna garantía se adjunta a estos.
Solicitudes de cambio (características)
2. Errores de diseño : como en, entendimos mal la especificación y la característica no hace lo que se supone que debe hacer, o lo hace tan mal que no se puede usar. Esta es la máxima prioridad para una solicitud de cambio, pero sigue siendo una prioridad 2: una solicitud de cambio nunca puede tener prioridad sobre un error de bloqueador. Estos deben ser arreglados por la próxima versión.
3. Importante : ahorros de costos significativos (o potencial de ganancias, según el tipo de software), mejoras de rendimiento importantes, cualquier cosa que haga que la aplicación sea más impresionante . O cualquier cosa escalada a este nivel por la administración: este es el nivel de escalamiento más alto para una función. Se espera que entre en el próximo lanzamiento, pero puede cortarse en caso de que se produzca una crisis de tiempo o de efectivo.
4. Normal - Básicamente es algo que mucha gente quiere (o un VIP quiere), y la razón para ello es clara y razonable, pero no hay nada especial que lo justifique tomando precedencia sobre cualquier otra carrera de la solicitud de molienda Ajustes de rendimiento menores, agregue este campo o este botón o este informe, haga que este tipo sea un número en lugar de alfabéticamente, ese tipo de cosas. Estos se asignan a la próxima versión, pero son los primeros en ser eliminados si se produce algún retraso.
5. De bajo impacto : cambios en el diseño, cambios en la redacción, cambios que pueden entrar en conflicto con los requisitos de línea de base, funciones que pueden tardar meses en implementarse, etc. Estos se asignan automáticamente a versiones futuras a menos que seamos no trabajando en nada más importante (que es ... nunca). A menudo, cuando se publique la próxima versión, se pospondrá a una versión posterior a medida que se acumulen solicitudes más importantes.
6. Opcional : en realidad no lo llamamos opcional (creo que oficialmente es "Permiso de tiempo"), pero eso es más o menos lo que es. Generalmente reservado para dos clases de cambios: (a) solicitudes tontas que sabemos que solo molestarán a la mayoría de las personas ("mostrar un diálogo de confirmación cada vez que el usuario intente hacer clic en este botón"), y (b) características concebidas internamente que podamos justificar el costo por encima de las solicitudes oficiales. No asignado a ningún lanzamiento.