¿Cómo estimar un proyecto de Investigación y Desarrollo?

Nuestro equipo de software ha estado trabajando mucho en I+D para mejorar el rendimiento de nuestro producto. Por supuesto, al equipo de administración le gustaría saber cuánto tiempo tomará mejorar el desempeño y cuánta mejora lograremos.

Me gustaría saber (1) si hay alguna técnica de estimación sugerida al estimar el tiempo que los desarrolladores dedicarán a trabajar en elementos como las mejoras de rendimiento

Además, si es posible, (2) qué estrategias son útiles para estimar la cantidad de mejora que podría obtener con una inversión dada


Más antecedentes:

Nuestra investigación específica se centra en mejorar el rendimiento de la aplicación, como la carga de contenido, la velocidad percibida de las transiciones dentro de la aplicación y otros aspectos de la experiencia del usuario.

Desde el punto de vista de los desarrolladores, no sabemos cuánta mejora obtendremos hasta que hagamos las mejoras, y no sabemos cuánto tiempo tomará hacer las mejoras hasta que profundicemos y encontremos todas las diferentes maneras en que podríamos acelerar las cosas.

He leído la literatura básica sobre técnicas de estimación de software (puntos de historia, puntos de función, etc.), por lo que no necesito un manual básico sobre eso. Tenemos al menos un buen comienzo en la recopilación de métricas de rendimiento de referencia y no necesito más información sobre métricas básicas en este momento.

Hola Linda, ¿tu equipo es un equipo ya estable o es un equipo relativamente nuevo? ¿Hay apertura para hablar con franqueza con la alta dirección? Esto es clave para definir cómo abordar la mejora del desempeño.
Somos un equipo maduro, con una capacidad razonable para hablar con franqueza con la gerencia, sí.
Hola Linda. He reestructurado la pregunta para que sea menos específica para tu caso. Espero que las preguntas centrales aún se mantengan. Siéntase libre de revertir los cambios si no está de acuerdo con ellos.

Respuestas (2)

¿Mantiene las métricas de los esfuerzos de refactorización anteriores? Si no deberías. Esto permite una estimación basada en evidencia; ¿Qué hicimos antes? ¿Cuánto tiempo pensamos que tomaría? ¿Cuánto tiempo tomó realmente?

Una vez que tenga algunos puntos de datos, puede ver comparaciones de manzanas con manzanas. Para las cosas que no tiene, puede echar un vistazo a sus estimaciones frente a los datos reales para poder determinar qué tan preciso es su equipo. Incluso si están constantemente 200% por debajo de los datos reales, eso le da una idea bastante buena de que esta estimación también estará por debajo de lo que realmente se necesitará.

El porcentaje de mejoras en el rendimiento es más difícil de cuantificar, pero si está creando las cosas correctamente, el porcentaje debería disminuir a medida que se optimizan las cosas fáciles.

1) Para poder determinar el tiempo que tomará, debe determinar lo que va a hacer. Si tiene una línea de base del rendimiento actual, debe poder determinar las cosas que necesitan para funcionar mejor. Si le preguntas a los desarrolladores, pueden pasar años ajustando y mejorando el rendimiento. La clave es, en mi opinión, definir un alcance y trabajar hacia eso. Identifique las partes 'lentas' y determine qué tan rápido debe ser, la meta no tiene que alcanzarse de una sola vez. Puede crear picos por disciplina (por ejemplo, búsqueda, back-end, front-end) para que puedan investigar el rendimiento y encontrar soluciones. esto me ha funcionado varias veces

2) La mejora solo se puede probar ejecutando las mismas pruebas que crearon la línea base de rendimiento. Un desarrollador siempre podrá indicar si algo mejorará el rendimiento o no, pero no en cuánto %. Obviamente, se deben realizar algunas pruebas al implementar las mejoras para ver si tienen el efecto deseado, pero a menos que se realicen en un entorno de producción, será una indicación.

Espero que esto ayude, Bart