23 May 2009

El Proyecto y el Producto

Veo una constante confusión en los equipos de desarrollos de software y en general en las disciplinas de TI entre el proyecto y el producto. No tener estas distinciones claras y no saber separar estos dos contextos tiene un impacto directo en la mantenibilidad, en costos, al verse reflejada en la documentación de los sistemas y de las organizaciones.

Una analogía que me ha ayudado a explicar este fenómeno, como casi siempre tomada de la ingeniería civil. Imaginen que van a una ciudad y para ubicarse piden el mapa de vías. La expectativa esta clara para todos, puede ir de un plan en papel a un GPS, con mayor o menor información asociada es en el fondo lo mismo, una imagen de todas las calles, vías y avenidas en una determinada región. Imaginen por un momento que en vez de recibir esto les dan la documentación de todos los proyectos de ingeniería civil realizados sobre la vialidad de la ciudad durante los últimos 40 años; el proyecto de construcción de un puente, el de asfaltado de una calle, el de ensanchado de una autopista, etc., con la expectativa que ustedes sean capaces de deducir de ahí el mapa vial de la ciudad. Ante estas realidades es que hay que recordar que no debemos desesperar, la ingeniería civil nos tiene 2.000 años de ventaja.

Tengo la certeza que la mayoría de las organizaciones no son capaces de dar su mapa de vías en el contexto tecnológico. También que nuestras disciplinas (desarrollo de software, arquitectura empresarial, etc.) seguirán su progreso acelerado en los próximos años y alcanzarán y superarán estos niveles obvios.

Siguiendo con el proyecto y el producto, lo abordo en tres escenarios diferentes y tres ejemplos.

El Proyecto y el Sistema

Un sistema de información inicia su ciclo de vida una vez que entra en producción y termina una vez que es descontinuado (o desenchufado) unos años después. Durante este periodo típicamente pasa por múltiples proyectos que lo completan, adaptan, evolucionan y sobre todo reparan. Al arrancar cualquiera de los proyectos sobre el sistema, el caso típico es que el equipo mantenedor se encuentra con la situación de la analogía inicial, para entender su funcionalidad y su arquitectura el equipo debe reconstruir la historia de los proyectos anteriores cuando en realidad esto no agrega ningún valor para ejecutar la tarea del momento. Si agrega valor es precisamente porque la documentación funcional y de arquitectura del sistema no es suficientemente completa.

Una aplicación o componente de software en general debe contar tanto de documentación funcional como de arquitectura que permita comprender qué hace,
para qué lo hace, cómo lo hace y por qué se decidió que lo hiciera de esa forma. Contando con esta información el equipo se enfrenta a un problema con baja incertidumbre y puede tomar acciones;

  • Disminuyendo drásticamente el riesgo de afectar el funcionamiento.
  • Disminuyendo drásticamente el tiempo de análisis requerido para iniciar el mantenimiento y por ende el costo del proyecto.
  • Disminuyendo el riesgo de incluir elementos que no cumplen los lineamientos de diseño del sistema.
Adicionalmente se aumenta la posibilidad de reutilizar diseños y componentes, en este sistema y otros, al permitir entender rápidamente los elementos que conforman el sistema.

En resumen el mensaje que quiero transmitir es que lo importante no es el proyecto, es el producto resultante. Poco valor tendrá el proyecto que terminó en menor tiempo pero que dejó la realidad que disparará los costos del próximo proyecto sobre el mismo producto. El valor de la información del proyecto es temporal o circunstancial, mientras
que el producto es un activo de la organización y su valor dependerá entre otras cosas de la calidad de la información que le acompañe.

Estos son algunos casos específicos donde he visto mezclados el proyecto y el producto.
  • Como parte de un proyecto se hace un documento de visión (utilizando como metodología PU) que define nuevas características a incorporar a una plataforma existente, pero no se actualiza el documento funcional original (como el de casos de uso). Lo mismo podría ocurrir en metodologías ágiles si haces por ejemplo nuevos user stories y no los agregas al repositorio de los existentes.
  • Cualquier cambio de índole tecnológico que no actualiza el documento de arquitectura, luego por ejemplo tomarían días en averiguar qué frameworks se utilizan, en qué versiones y con qué fines.
A partir de estos momentos comienza la historia de tener que reconstruir proyectos para entender el sistema.

El Proyecto y los Sistemas

Lo mismo que ocurre con con un proyecto que afecta un sistema, ocurre con un proyecto que afecta o produce varios sistemas. Se generan documentos en el contexto del proyecto que hablan de múltiples sistemas, haciendo la información aún más densa y compleja de entender.

Se debe asegurar en estos proyectos dejar la información actualizada de cada sistema.

El Proyecto y la Organización

Una situación similar a la que describo en el contexto de sistemas, se me presentó recientemente con procesos de negocio de una organización.

En proyectos orientados a atender necesidades de negocio, es muy posible que se vean afectados los procesos de la organización. Toda organización debe tener sus procesos documentados y difundidos. Cualquier cambio sobre estos implica acciones de difusión, entrenamiento, cambios en sistemas, etc. Pueden y existen grupos de consultores que no ven los procesos más allá del proyecto y donde los cambios a estos quedan sólo en los documentos del proyecto, creando un riesgo importante de operación en la organización. Esto puede ocurrir
en organizaciones pequeñas o inmaduras donde el uso de procesos no está institucionalizado.


Estas situaciones suelen ocurrir por ingenuidad sobre la realidad de la vida de un sistema al pensar sólo en el proyecto actual y no en los futuros, por falta de experiencia y/o por comodidad. En cualquier caso se disminuye el valor del activo y se dispara el costo de futuros mantenimientos.

No comments: