¿Cómo podemos gestionar los riesgos de cronograma introducidos en un proyecto por software de terceros?

Al trabajar en desarrollo web, me enfrento a una situación común cuando los clientes quieren usar software de terceros como punto de partida del proyecto. Eso podría ser un CMS, un sitio de comercio electrónico o algo más. La motivación suele estar impulsada por el presupuesto; al cliente le parece que tener un sitio web creado sobre algún producto listo para usar reducirá los costos. No siempre es cierto. Por ejemplo:

  • Se le dijo al cliente (a menudo una persona sin conocimientos técnicos) que es muy fácil crear un sitio web de 3 páginas utilizando un CMS famoso. Sin embargo, nadie sabe lo que se necesita para construir un sitio web de 100 páginas, con una función de blog y 3 niveles de membresía paga.
  • El equipo no conoce el CMS antes de que comience el proyecto, por lo que agregar funciones solicitadas se convierte en una tarea difícil, y el código CMS existente a menudo se interpone en el camino del desarrollo efectivo.
  • También puede resultar que no haya documentación decente. El equipo crearía características similares más rápido sin ese CMS, pero el cliente aún insiste en usarlo.
  • Agregar un diseño personalizado al sitio basado en CMS puede causar problemas a los desarrolladores de HTML, lo que requiere el desarrollo de un código no trivial (por ejemplo, un sistema de menú oscuro).
  • Puede resultar que el CMS no sea compatible con el alojamiento que se usó normalmente para la implementación, que el CMS tenga fallas internas que impidan la escalabilidad en producción o que la solución requiera una enorme configuración de hardware para funcionar correctamente bajo carga.

Eso lleva a preguntas que me gustaría hacer:

  • ¿Cómo podemos convencer a un cliente de que su solución no debería requerir un CMS personalizado, o que puede llevar más tiempo desarrollar una solución personalizada utilizando código preexistente? Los clientes generalmente tienen argumentos como 'los sitios más grandes en Internet están usando este CMS', pero realmente no sabemos cuánto esfuerzo se puso en esos sitios más grandes para ejecutar el CMS correctamente.
  • ¿Cómo incluir código de terceros (o preexistente) en nuestra estimación inicial y cálculos de gestión de riesgos? Cualquier número y técnica son bienvenidos.
¡Bienvenido a PMSE! Edité su pregunta por gramática y eliminé la pregunta de sondeo al final. Si bien su publicación corre el riesgo de confundirse con una pregunta de ingeniería basada en la web, creo que es un problema común para proyectos complejos de todo tipo.
Gracias por las correcciones. De hecho, la pregunta no es técnica; Estoy buscando una solución general para mitigar el riesgo de estimación cuando se trata de cajas negras. Con demasiada frecuencia, el código de terceros agrega una 'x' adicional a la ecuación y no hay forma de resolverlo. (Y gracias por las correcciones en inglés; necesito mejorarlo).

Respuestas (3)

TL;DR

Realmente no está haciendo una pregunta sobre gestión de riesgos. En el fondo, la pregunta es realmente sobre cómo estimar proyectos en los que no tiene valores de referencia. Una solución común es utilizar un proyecto piloto para generar valores de planificación como entradas para un proyecto a gran escala.

Habilidad para estimar

La capacidad de su proyecto para estimar con precisión (o en absoluto) depende en gran medida de la experiencia del equipo con un dominio de conocimiento específico. Si no tiene experiencia con una determinada tecnología o proyecto, entonces el cronograma de su proyecto es una caja negra; no hay forma de estimarlo más que conjeturas.

Incluso suponiendo algún conocimiento, todos los proyectos tienen un cono de incertidumbre . Por lo general, trazará un cronograma preliminar basado en algunos valores de planificación, a menudo ajustados por un factor de error que representa la cantidad de incertidumbre que tiene el equipo sobre el proyecto. Por ejemplo, los equipos sin experiencia pueden multiplicar sus valores iniciales de productividad (por ejemplo, la velocidad) por 0,6, o aumentar su programación multiplicando las estimaciones de tiempo por 1,4.

El valor real del factor de fudge es menos importante que el conocimiento claro de que es un ajuste a los valores de planificación. Recuerde: una estimación es una opinión informada , no una garantía absoluta.

Proyecto de piloto

Si su proyecto involucra habilidades fuera del área de especialización actual del equipo, o si es necesario realizar algunas tareas para calibrar el cronograma de un proyecto más grande, entonces necesita un proyecto piloto .

Por ejemplo, en lugar de tratar de estimar un sitio web de 100 páginas con una cadena de herramientas con la que nadie tiene experiencia, podría planificar un proyecto piloto para un sitio web de 5 páginas. Los entregables importantes de un proyecto piloto como este no son en realidad las páginas web; los entregables reales son la experiencia con la solución propuesta y mejores valores de entrada para el proyecto más grande.

Por ejemplo, puede hacer su estudio de 5 páginas en dos semanas, pero descubre que la solución no escalará de la manera que lo necesita. O bien, es posible que descubra que la configuración inicial lleva una semana y que los desarrolladores pueden promediar una página al día siguiente.

Cualesquiera que sean los resultados, utiliza los datos del proyecto piloto junto con un nuevo conjunto de factores fudge más informados para generar el cronograma o la estimación para el proyecto más grande. Esto puede o no ser lineal: un proyecto web de 100 páginas no es necesariamente 20 veces más complejo que un proyecto de 5 páginas. Sin embargo, su cono de incertidumbre debería ser más pequeño después de un estudio piloto, y es mucho más probable que sus estimaciones caigan dentro de los límites de la varianza aceptable.

Pregunta #1: este es un caso de negocios. Para convencer a un cliente de cualquier cosa, debe construir un argumento. Desarrolle un caso que muestre varias alternativas entre las que el cliente puede elegir, los beneficios/costos/riesgos de cada alternativa y su recomendación. Su recomendación debe estar respaldada y fundamentada con los estándares de la industria y los hechos que encuentre en su investigación, no solo su opinión probablemente sesgada por su búsqueda de ganancias. Toda su presentación debe estar respaldada por la relación que ha desarrollado con su cliente. No sería solo un vendedor que ofrece sus productos, sino un asesor de confianza.

Pregunta #2: Esta es una pregunta de gestión de riesgos. Y aplicaría técnicas normales de gestión de riesgos. Hay pocos proyectos por ahí que no dependan de algo externo que podría tener un impacto adverso o favorable en su cronograma y presupuesto. Así que esto es normal; bienvenido a gestión de proyectos 101.

Investigue lo que pueda sobre la dependencia externa, por ejemplo, reputación en el mercado, historial de retrasos o puntualidad, referencias, etc. Lo que no puede aprender, necesita redactar una suposición adecuada (una fuente de riesgo). Carga su programación con los hitos externos basados ​​en esa suposición para que pueda comunicar claramente cómo se vería afectado su rendimiento si esas suposiciones no dan resultado. Puede cargar reservas de programación para acomodar algo que llega tarde y, sobre todo, le comunica claramente a su cliente dónde tiene dependencias, los riesgos que usted y su cliente deben aceptar y cualquier actualización de lo que está observando.

Solo puedes controlar lo que puedes controlar. La mayoría de las variables muy aleatorias que afectan nuestro desempeño, tanto favorable como desfavorablemente, están fuera de nuestro control, lo cual es muy contrario a la intuición de todos los proyectos de gestión de negocios tipo A, pero así es la vida. Todo lo que puede hacer es observarlos, planificar para ellos (gestión de riesgos), comunicar lo que está observando de manera oportuna y aceptar el hecho de que todo esto es muy normal.

Para responder a su segunda pregunta, aplicaría técnicas de gestión de riesgos. Hay mucho material en Internet sobre todo el proceso. Hay un buen ejemplo elaborado de gestión de riesgos en un proyecto de software en la Guía del usuario de Risk Register .