Un proyecto es un conjunto de actividades relacionadas que utilizan recursos para cumplir con un objetivo deseado dentro de un plazo de tiempo delimitado.

Las actividades son las tareas que deben realizarse para el cumplimiento del objetivo, mientras que los recursos son los elementos requeridos para cumplir cada tarea.

Todo proyecto tiene limitantes que pueden ser de orden económico, técnico, operativo, de recursos humanos, etc.

Características de un proyecto

  • Tiene fecha de inicio y fin.
  • Define cada tarea en un calendario.
  • Tienen una sucesión de actividades.
  • Consumen de recursos.
  • Produce un resultado único.

Decimos que un proyecto es exitoso cuando

  • Se termina en el tiempo pactado, con el presupuesto comprometido y con la funcionalidad deseada.
  • El cliente se siente satisfecho con los resultados.
  • El producto ofrece las ventajas comerciales deseadas.
  • El equipo considera que su participación fue valiosa.
  • El proyecto eleva el nivel de conocimiento y permite mejorar a futuro.

Al mismo tiempo, consideramos al proyecto un fracaso cuando

  • Se exceden los costos o los tiempos.
  • El proyecto no cumple lo prometido.
  • El cliente no se encuentra satisfecho.
  • El proyecto cumple técnicamente, pero no es rentable.

Los factores que influyen en el fracaso de un proyecto son múltiples e ilimitados, pudiendo resumirse los más frecuentes en proyectos de software en:

  • Falta de personal calificado.
  • Error en la selección de recursos.
  • Falta de capacidad administrativa.
  • Falta de comunicación.
  • Incompleto análisis de requisitos.
  • Problemas técnicos de diseño.
  • Fallas en el planeamiento.
  • Falla en la ejecución de tareas.
  • Falla en el diseño de procesos.
  • Equipo de trabajo no comprometido con los objetivos buscados.

Un estudio realizado por la consultora internacional «Accenture», analizado por el especialista John Avellanet, reveló algunas cifras alarmantes.

  • En los proyectos de IT solo el 29% es un éxito.
  • El costo previsto se sobrepasa en un 56%
  • El tiempo es excedido en un 84%

En la actualidad, la ingeniería de software ofrece diferentes técnicas para el logro del éxito de un proyecto.

  • Dividir en fases cortas para que cada una ofrezca un beneficio inmediato al negocio.
  • Las estimaciones deben ser realistas, considerando días de 6 horas reales de trabajo, y meses de 15 días.

Los proyectos son realizados por personas, por lo tanto:

  • Seleccionar personal adecuado.
  • Tomar decisiones cuando el proyecto tiene problemas internos. No postergarlas.
  • Orientar al equipo para conseguir objetivos concretos.
  • Validar con frecuencia y en intervalos regulares la calidad de los resultados.
  • La comunicación es un factor fundamental. La transparencia y la exactitud deben ser corrientes.
  • Aplicar el esfuerzo en el lugar adecuado, incrementando funcionalidad.
  • No se puede ser juez y parte. Las pruebas de funcionamiento y control se deben hacer por personas externas al equipo de desarrollo.

Gestión de Proyectos

La gestión de proyectos es la disciplina encargada de organizar y administrar recursos para poder llevar a cabo los proyectos, cumpliendo con las restricciones pactadas.

La administración del proyecto es una tarea compleja que involucra una gran cantidad de variables originadas en el resultado deseado, único producto del proyecto. Estas variables se generan de manera indirecta y no siempre están correctamente identificadas.

El origen de la gestión de proyectos, como lo conocemos actualmente, puede ser situado en los años 50, donde se desarrollaron algunas técnicas matemáticas que comenzaron a aplicarse.

Los modelos matemáticos denominados PERT (Program Evaluation and Review Technique, o Técnica para Evaluar y Revisar Programas) y CPM (Critical Path Method, o Método de Ruta Crítica) son aun vigentes y muy utilizados.

El método PERT fue desarrollado por la Armada de los Estados Unidos en 1957, para controlar los tiempos de ejecución de los proyectos aeroespaciales.

Se lo utilizó en el  «plan Polaris», proyecto de desarrollo de de misiles llevado a cabo entre la Armada de Estados Unidos y la empresa Lockheed Corporation.

Desde entonces, este método sigue siendo implementado por ambas corporaciones; y es muy difundido como herramienta valida de gestión.

El método CPM, en cambio, tiene origen civil. Fue desarrollado también en 1957, en Estados Unidos, por un centro de investigación de operaciones financiado por las firmas Dupont y Remington Rand, buscando el control y optimización de los costos mediante la planificación y programación adecuadas de las actividades que componen cada proyecto.

Se sigue utilizando y perfeccionando esta técnica, porque busca optimizar los costos a través de mejoras en el planeamiento.

Para la misma época, se comenzaron a aplicar nuevas técnicas, como herramientas de gestión de costos y de control de calidad; técnicas que estaban madurando en el mismo momento de la economía de post guerra.

En 1969, en Estados Unidos, se crea el Proyect Management Institute (PMI – http://www.pmi.org) para difundir y mejorar las técnicas de gestión de proyectos, con la intención de ofrecer apoyo a la industria.

De manera paralela, en Europa se crea la International Proyect Managment Association (IPMA – http://ipma.ch).

Actualmente es PMI es quien establece los estándares internacionales que se aplican en gestión de proyectos de software.

Nuevo Escenario

Las técnicas, herramientas y tecnologías de  gestión de proyectos cambiaron definitivamente la industria y la manera de gerenciar y controlar a las empresas, a partir de los años setentas.

La posibilidad de nuevos productos, los adelantos tecnológicos de producción, la velocidad financiera en los nuevos negocios, hicieron necesario que las metodologías de gestión de proyectos pasaran a ser mas dinámicas.

Las diferencias entre las técnicas predictivas de los años cincuenta y las modernas pasaron a ser más notorias. Se comenzaron a  necesitar técnicas mas dinámicas; situación que se termina de manifestar en la industria del software.

La incertidumbre, cada vez mayor como consecuencia  de la velocidad, no posibilita los desarrollos en donde la previsión y el planeamiento inicial sean lo más importante, debido a que estos deben ser desechados continuamente al igual que el esfuerzo en análisis y diseño.

En este nuevo escenario competitivo, las variables más importantes pasan a ser

  • Retroalimentación de los sistemas y el entorno.
  • Mayor innovación del sistema.
  • Reducción de tiempos y costos.
  • Implementación inmediata de cambios.
  • Evolución permanente. El sistema debe adaptarse al entorno cambiante. Nunca esta terminado.

Es decir; las técnicas de gestión de proyectos de software, en la actualidad, deben ser adaptables, ágiles, inmediatas y económicas.

Las empresas y sus requisitos impredecibles

Podemos afirmar en la actualidad que los sistemas empresariales tienen requisitos cambiantes.

Reformas fiscales, ajustes inflacionarios, cambio de equipamientos, crisis, crecimiento repentino, nuevos socios, expansión, contracción, endeudamiento, etc.

Lo único constante para todos los sistemas empresariales es que su entorno es dinámico y los sistema requieren ajustarse inmediatamente.

Ante esta situación, uno de los peores escenarios es el desconocimiento de la posibilidad de cambio. La idea de creer que los requisitos no cambiaran, hará que estos sean verdaderamente estáticos. Gradualmente los procedimientos sistematizados se alejarán de la realidad; situación que termina en una crisis cuando se requiere tomar una decisión y el software es completamente ajeno a la realidad de la gerencia.

Cambio de razonamiento

Partiendo de que es imposible hacer estimaciones certeras y definitivas para los requisitos del sistema de una empresa, de sus procesos,  actividades, problemas y estrategias de resoluciones, debemos pensar en técnicas que nos permitan salvar este inconveniente.

Aquí es donde entran en escena las «metodologías ágiles». Son diferentes estrategias de ingeniería de sistemas de información que promueven:

  • Iteraciones cortas.
  • Reutilización de componentes.
  • Equipos altamente integrados, liderados por el cliente.
  • Facilitación de la comunicación.
  • Aprendizaje continuo.

Se trata de convivir con la idea de que no existe un producto final. Son versiones en constante mejora. La anticipación y la adaptación se erigen entonces como los pilares de este nuevo enfoque. Los proyectos deben liderarse anticipando los cambios y adaptándose a nuevos escenarios, de manera gradual y constante.  La gestión ágil intenta responder ante los nuevos cuatro pilares de la industria:

  • Valor: Capitalizar la inversión. Los recursos invertidos retornan como soluciones de negocios.
  • Tiempos: Corto plazo es un día, mediano plazo dos semanas, largo plazo un mes.
  • Fiabilidad: Resultados certeros basados en procesos formales.
  • Agilidad: Si la solución no es simple entonces no sirve.

Dar un mayor valor al producto es fundamental en ambientes competitivos, y este factor se encuentra compuesto por la innovación y la flexibilidad.

Las prácticas que se necesitan para innovar permanentemente y de manera flexible, cosa que se permita adaptarse a cualquier cambio de entorno, se caracterizan por:

  • Fases de desarrollo superpuestas.
  • Incrementos de funcionalidad.
  • Entrega temprana del producto.
  • Mayor contacto con el cliente.

El desarrollo ágil de soluciones empresariales basadas en valor, tiempo, fiabilidad y agilidad, es un proceso iterativo que presenta, en mayor o menor medida, las fases de desarrollo que mencionamos a continuación.

  • Especulación.
  • Exploración.
  • Revisión.

Concepto
A partir de los requerimientos del sistema y mediante la interacción y participación del equipo, se desarrolla la visión de la solución. Se define el alcance inicial y se determina el equipo que lo llevará a cabo.

El «alcance» (o dominio del problema) es la suma total de todos los objetivos y sus requisitos. Este alcance es lo que decimos que cambia a lo largo del proceso. Sin embargo, en la mayoría de los métodos de estimación, al alcance se lo considera estático o constante; cosa que no se ve reflejada en la realidad.

Especulación
Esta fase permite que el equipo realice distintos avances sobre las posibles soluciones y sus limitaciones. Esta fase se repite continuamente a lo largo del desarrollo, con la ventaja de que en cada iteración, los conocimientos del equipo sobre el negocio aumentan. En esta etapa se llevan a cabo las siguientes tareas:

  • Detalle del producto.
  • Armado de requisitos.
  • Determinación de tareas.
  • Determinación del plan de entregas.
  • Determinación de los responsables de las tareas.

Exploración
En la fase de exploración todos los integrantes del equipo desarrollan sus tareas, mientras puedan aparecer inconvenientes que son atendidos también de forma inmediata. El objetivo de la fase es el incremento de funcionalidad propuesto en la etapa anterior.

Revisión
Con la finalización de la ejecución de las tareas se alcanza el producto real. Una versión del sistema que debe ser utilizado y comparado con la propuesta inicial. En base de los objetivos alcanzados y propuestos se fijan las nuevas metas.

Cierre
Se llega al fin de la iteración y se implementa el sistema, el cual puede seguir siendo desarrollado con las mismas técnicas.

De acuerdo a estas características y fases de desarrollo, podemos pensar que el desarrollo y la gestión ágil pueden adaptarse mejor a ambientes complejos y cambiantes.

Además de todos los elementos que han impactado en el desarrollo de software, tradicionalmente se han utilizado pautas que no siempre son reales, denominadas mitos del desarrollo ortodoxo.

  • Mito de la especificación: Una ves que tengamos el análisis de requisitos completo comenzamos a diseñar. Esta clase de pensamiento arraigado en los programadores es uno de los componentes más importantes para llevar un proyecto al fracaso. Los requisitos estáticos son característicos de otro tipo de software. Los sistemas para empresas se caracterizan por requisitos dinámicos, lo cual cambia el paradigma de desarrollo de software.
  • Mito del mantenimiento: El mantenimiento es necesario para corregir el software. Debemos remarcar que el software no tiene desgaste ni degradación en si mismo, lo que sucede es que el ambiente es cambiante y repercute en él. Además del contexto técnico, debemos tener en cuenta los cambios del negocio que se producen alrededor del software que se encuentra implementado. Es decir, el mantenimiento del software empresarial esta asociado directamente a la mejora continua de sus procedimientos internos.
  • Mito de la caja negra: Si el software ofrece una salida correcta a mi entrada, el problema esta solucionado. Es fundamental entender que el software empresarial esta vinculado a procesos administrativos, a personas, a reglas y métodos de trabajo que definen un negocio. Que el software emita una respuesta correcta no alcanza para que ofrezca ventajas competitivas. El sistema debe integrarse, desde su algoritmia interna, con la empresa y sus procesos. Solo el negocio es estático. Vendemos camisas. Fabricamos productos de plástico. Incluso esto es verdad solo en parte; el sistema debe evolucionar al mismo ritmo que el entorno del negocio mismo.

La creencia de estos mitos (hay muchos mas) ofrece el marco de trabajo ideal para seguir utilizando metodologías tradicionales, dejando de lado las técnicas ágiles, pero de los contextos de cambios es que surgieron estas metodologías ágiles, que hasta hoy en día se siguen expandiendo y asentando.