promedios de la industria por el tiempo dedicado al mantenimiento

17

Un gerente anunció recientemente que estaban pasando demasiado tiempo arreglando errores. Supongo que piensa que deberíamos escribir un código perfecto todo el tiempo (¡sin dejar de cumplir esos plazos imposibles, por supuesto!) Y me hizo preguntarme cuál fue el promedio de tiempo de la industria que pasó la corrección de errores al escribir el nuevo código.

Entonces, ¿alguien tiene alguna métrica sobre el tiempo dedicado a la corrección de errores contra el desarrollo de nuevos códigos? ¿O hay algún análisis empírico del tiempo de corrección de errores para la industria en su conjunto? ¿El 50% de los errores gastados se solucionan demasiado o es correcto? ¿Qué tal 20% o 33%?

Estoy feliz de aceptar evidencia anecdótica de la experiencia personal, ya que eso formaría parte de algunas estadísticas aquí con las que podría comparar nuestro desempeño.

gbjbaanb
fuente
9
Su gerente suena muy ignorante. Lectura sugerida para casos como ese: Hechos y Falacias de Ingeniería de Software por Robert L. Glass, particularmente "Hecho 43. El mantenimiento es una solución, no un problema". Artículo de Wikipedia menciona 80% esfuerzos invertidos en el mantenimiento del software
mosquito
3
¿Cuál es el verdadero problema? ¿Tienes un problema de calidad? ¿Es tu proceso realmente ineficiente? ¿O su gerente solo desea que el software no le cueste tanto?
Kevin Cline
@gnat: tu comentario es la mejor respuesta
kevin cline
@kevincline gracias - convertido comentario a respuesta
mosquito
El mantenimiento no se trata solo de corregir errores (defectos) y su cantidad varía enormemente para proyectos individuales (= sin respuesta definitiva). Para mí, parece que tienes problemas de calidad.
MaR

Respuestas:

13

Un gerente anunció recientemente que estaban pasando demasiado tiempo arreglando errores.

Arriba suena muy ignorante. Lectura sugerida para casos como ese: Hechos y Falacias de Ingeniería de Software por Robert L. Glass, particularmente "Hecho 43. El mantenimiento es una solución, no un problema".

El artículo de Wikipedia menciona el 80% de los esfuerzos dedicados al mantenimiento del software.

mi manager hace que el PHB de Dilbert parezca un genio :)

Hm, dado anteriormente, también me esforzaría por analizar si todas las solicitudes que haces son errores .

En mi experiencia, era demasiado frecuente que las solicitudes de mejoras o nuevas características se enviaran como errores. Los buenos gerentes involucran a sus programadores en averiguar sobre eso; los malos gerentes, bueno, simplemente se quejan de demasiado tiempo reparando errores .

mosquito
fuente
2
Corrección de errores! = Mantenimiento! La corrección de errores significa que usted codificó las fallas en el sistema y deben corregirse para restaurar la funcionalidad correcta . Por mantenimiento me referiría a todas las tareas, como la corrección de errores, las mejoras de escalabilidad, la migración de hardware y las mejoras de rendimiento, etc. Diría que más del 25-30% del tiempo que se dedica solo a la corrección de errores necesita una llamada de gobierno de inmediato. Hasta el 40-50% del esfuerzo dedicado al mantenimiento en general parece razonable para un sistema empresarial de tamaño medio.
Apoorv Khurasia
¿Tienes alguna figura para las diferentes clases de error? Obviamente, si está obteniendo un gran número de errores de alta prioridad, "show stopper", puede darse el caso de que el proceso de desarrollo necesite un poco de trabajo para determinar la fuente, pero si todo es poca cosa, no es un gran problema. Además, como dice el mosquito, muchos de ellos pueden ser solicitudes de mejora.
Stevetech
¡Tu cita del artículo de Wikipedia está equivocada! Dice que "el 80% del esfuerzo de mantenimiento se usa para acciones no correctivas" , pero no dice nada sobre el tiempo de mantenimiento en comparación con el diseño o la codificación u otro trabajo.
Tobias Knauss
9

La primera pregunta que debe hacerse es si su "corrección de errores" en realidad está arreglando errores de codificación o algo más. La corrección de errores de código reales debería ser relativamente pequeña en la mayoría de los casos, siempre que tenga una buena base de código. Si está trabajando con una base de código pobre, es inevitable la corrección extensiva de errores.

Sin embargo, al poner un programa en producción, encontrará requisitos que no fueron documentados, actividad inesperada del usuario, anomalías de datos, incompatibilidades de hardware, problemas de instalación y otros problemas que no son estrictamente errores de código. A menudo, los administradores y usuarios considerarán estos problemas de soporte / mantenimiento de producción como errores, ya que generalmente requieren cambios de código.

También me he encontrado con gerentes que agruparían lo que debería haberse denominado solicitudes de mejora menores como errores. A menudo, estos se ingresan en un sistema de seguimiento de errores o de informe de problemas y esto puede hacer que sus estadísticas de "error" sean más altas de lo que realmente son.

jfrankcarr
fuente
Lo que usted describe es lo que tenemos, pero eso no cambia nada :(
gbjbaanb
8

Depende de la cantidad de código que tenga, cuánto tiempo haya estado disponible, etc.

El tiempo dedicado a corregir errores en el software debe cargarse de antemano a los primeros 6-12 meses de lanzamiento, sin embargo, a medida que el tiempo se acerca al infinito, el tiempo dedicado al mantenimiento frente al tiempo dedicado al desarrollo inicial superará el 100%. trabajo.

Si bien no tengo estadísticas concretas (Code Complete sí, pero no puedo decir exactamente qué página / sección), en mi experiencia, aproximadamente el 40% del desarrollo (a veces hasta el 60%) se gasta en mantenimiento. Es obvio que cuanto más código libere, más tiempo de mantenimiento tendrá. Los errores no siempre son funcionales, y son tanto el resultado de la incertidumbre como los defectos programáticos.

Jonathan Rich
fuente
0

si está utilizando un buen rastreador de entradas (como Jira de Atlasian) y ha pasado tiempo ingresando todas las diferentes categorías, historias de usuarios, niveles de urgencia correctamente y con el acuerdo de sus compañeros de equipo, calculando estas métricas (y más) son asombrosamente fáciles

En un proyecto anterior, utilizamos a Jira para administrar nuestras listas de errores / tareas / tareas pendientes, y al final realmente nos mostró que la mayor causa de demoras y problemas resultó ser prácticas de administración ineficientes.

Curiosamente, cuando salió esa información, de repente nos dijeron que ya no estaríamos usando Jira, y que se traería un nuevo producto para reemplazarlo.

Mientras tanto, todas las solicitudes de transferencia de datos a través de Jira tuvieron que enviarse al equipo de administración, y se eliminó nuestro acceso directo.

Lo que no se notó fue que, como parte del cálculo de estadísticas, el equipo de desarrollo tenía a Jira introduciendo datos en un enlace web, y este enlace web se usó para pasar datos a un punto final en algunos servidores internos, donde teníamos un código que creó Estos informes automáticamente.

Comenzamos a monitorear el enlace web y descubrimos que a pesar de que nos dijeron que Jira ya no se usaba, permaneció muy vivo durante un tiempo considerable más (más de 6 meses para ser exactos) y el abuso generalizado por parte de la alta gerencia fue simplemente desenfrenado con uso incorrecto.

Por supuesto, no tiene que ser algo tan complejo como Jira.

Si desea una solución de bajo rendimiento, puede usar una hoja de cálculo de google-docs y la API de notificación de GDocs para rastrear tareas / tickets / errores / solicitudes de funciones, etc.

GDocs ahora puede emitir web-hooks y todo tipo de cosas.

Combine eso con Git y / o Github y algunos ganchos que se activan cuando el código se confirma en su repositorio, y usted tiene un sistema de elaboración casera razonablemente eficiente, que puede registrar una sorprendente cantidad de datos.

Sin embargo, en general, del 100% de la vida útil natural de un producto, la división entre el desarrollo y el mantenimiento de greenfield es generalmente de 20/80, la mayor parte del costo en el ciclo ALM (Application Lifetime Management) se hace cargo de los costos de mantenimiento y soporte.

No hay tal cosa como pasar demasiado tiempo arreglando errores, porque simplemente no es posible escribir código libre de errores.

Las buenas políticas de prueba e integración continua reducirán la deficiencia, pero nunca la erradicará por completo.

Cualquiera que crea lo contrario (en mi humilde opinión) no tiene suficiente conocimiento para emitir un juicio exacto, o es ciego (el caso más habitual) de lo difícil que es escribir software.

Si su gerente está dispuesto a hacerlo, y algunos de ellos lo están, entonces puede sugerirle que lo siga por un día, para que pueda ver exactamente lo que hace y cómo lo hace.

Iv'e trabajó en algunas compañías donde este tipo de trabajo se fomentó activamente, con personal de nivel superior que sombreaba al personal de nivel inferior, y viceversa, puede ser una experiencia de aprendizaje realmente muy buena para ambas partes involucradas.

ricura
fuente
2
"No hay tal cosa como pasar demasiado tiempo arreglando errores", qué carga de basura. Si pasa suficiente tiempo arreglando errores que su empresa deja de funcionar porque no podía seguir siendo competitiva en el mercado (porque estaba arreglando errores en lugar de hacer cosas), pasaba demasiado tiempo arreglando errores ...
Telastyn
¿Y la alternativa? - No pasa el tiempo suficiente reparando errores, y su aplicación se bloquea, se quema y su competidor toma toda su costumbre, y lo expulsa del mercado. El truco (y la parte más difícil de todo esto) es encontrar un equilibrio aceptable.
shawty
1
No, estoy de acuerdo, pero esas son mis propias opiniones, porque realmente creo en esta época, el arte de la depuración adecuada se está convirtiendo en un arte perdido. Demasiados de nosotros, dependemos demasiado de cosas como las pruebas unitarias, que en mi humilde opinión proporcionan demasiada seguridad falsa. No estoy diciendo que la prueba de la unidad deba ser abolida, pero estoy diciendo que ya no hay suficientes prácticas adecuadas de depuración y corrección de errores, debido a eso. Este es el turno que lleva a los gerentes (como se describió anteriormente) a creer que la corrección de errores no es necesaria, y como resultado realmente no (de nuevo en mi humilde opinión) hacemos lo suficiente.
Shawty
2
las pruebas unitarias y la depuración son diferentes artes utilizadas para diferentes problemas. Aunque resolver el problema "es nuestro código correcto" evita mejor el problema "por qué se rompió mi código". En igualdad de condiciones, prefiero que las personas sean buenas haciendo el código correcto que identificando las causas raíz.
Telastyn
1
Ahora ese punto tiene mi total acuerdo. Es un hecho triste que en la industria de hoy en día muchos programadores lo tratan como otro trabajo de 9 a 5, donde ingresan, golpean el código hasta la hora de inicio y cierran. En el pasado, los desarrolladores se enorgullecían enormemente de escribir código bueno, sólido y bien probado y pasaban el tiempo pensando en ello antes de acercarse a un teclado, se ve muy poco de eso en la actualidad.
Shawty