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.
Respuestas:
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.
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 .
fuente
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.
fuente
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.
fuente
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.
fuente