- Metodología: Teniendo variables de presupuesto, tiempo y tecnología, es la hora de decidir que metodología de trabajo tendremos que usar, esto debido que debemos tener una forma de afrontar el proyecto adecuada para poder cumplir con las expectativas funcionales y de negocio esperadas.
Hay que definir brevemente metodología, entendemos que son las reglas, políticas, técnicas y procedimientos para el seguimiento del desarrollo de un proyecto. Es importante mencionar algunos tipos de metodologías las tradicionales, ágiles y propietarias (No vamos a meternos más en este tema, ya que es muy extenso).
Habiendo definido la metodología nos enfrentamos a la dependencia de los primeros 2 factores (negociación y tecnología) de la siguiente manera.
La negociación de tiempo y presupuesto nos puede indicar el camino a seguir en la selección de la metodología. Es importante identificar qué tipo de metodología se va a utilizar. Si quisiéramos adoptar una metodología tradicional (RUP por ejemplo) es necesario tener el tiempo y presupuesto adecuado, es decir, estas implican un costo mayor en horas hombre en documentar, analizar y definir todos los pasos de dicha metodología, este tipo es recomendable en proyectos donde los equipos de trabajo son grandes y los consultores cuentan con diversos perfiles y niveles de conocimiento. Si quisiéramos adoptar una metodología ágil y/o propietaria (siempre y cuando estén orientadas al resultado y no al plan) (XP por ejemplo), estaríamos hablando de proyectos donde el presupuesto y tiempo son pequeños (o muy castigados en la negociación) en relación al alcance funcional del proyecto.
Aunque la metodología no tiene una dependencia con la tecnología seleccionada, es necesario aclarar que ciertas tecnologías se adaptan mejor a ciertas metodologías de desarrollo, por decir los lenguaje orientados a objetos son más fácilmente modularizables y reciclables que la programación estructurada.
Un punto importante por definir en este factor de éxito, es si la metodología es orientada al resultado o al plan. Se dice que las metodologías ágiles son orientadas al resultado, es decir, a software funcional, y no a actividades o tareas en cierto tiempo, para esto se necesita una administración de proyecto flexible, para lo cual entendemos que nuestro plan de trabajo original puede sufrir cambios positivos o negativos buscando siempre el resultado funcional. En el caso de metodologías orientadas al plan, son conocidas las metodologías tradicionales como RUP, donde existen tareas por desarrollar durante todas las etapas del proyecto, pero muchas de ellas no entregan funcionalidad del software, solo los requerimientos de control y documentación definidos por la metodología, estas regularmente no son tan flexibles por estructura, para lo cual se tienen que hacer renegociaciones intermedias si se detecta o requiere funcionalidad nueva no solicitada en fases anteriores.
RecomendaciónLa selección de la metodología de trabajo es un factor importante en la búsqueda de un proyecto de éxito, para lo cual la selección de la metodología debería ser de la siguiente manera.
Debido a que tenemos dependencia directa o indirecta de los 2 factores iníciales que son la negociación y la tecnología, lo recomendable es seleccionar nuestra metodología de trabajo en base a lo siguiente:
• Si el proyecto requiere un equipo de trabajo grande debido a las etapas y dimensiones del proyecto, el uso de una metodología tradicional es lo más recomendable, eso sí, el costo y tiempo deben ser proporcionales, en otro caso, nuestro proyecto antes de empezar será un proyecto con pocas probabilidades de éxito.
• Si nuestro proyecto puede ser desarrollado con equipos pequeños de trabajo, lo recomendable es el uso de metodologías ágiles, ya que dichas metodologías están orientadas al resultado y no a las actividades (plan), pero para que nuestro proyecto tenga certidumbre de éxito requiere que además tenga una administración flexible, es decir el costo es menor a una metodología tradicional, pero el tiempo puede ser variable debido a la búsqueda del resultado final y no en base a una fecha de terminación donde no se considere lo inestimado. - Recursos: El último factor son los recursos que estarán involucrados en el proyecto, es decir, las personas y sus respectivos perfiles de conocimientos y experiencia en el tipo de proyecto, metodología de trabajo y tecnología.
La asignación de recursos a nuestro proyecto se puede dar de diferentes maneras, iniciamos por la dependencia con cada factor previamente visto.
En la negociación se define las 2 variables principales de nuestro proyecto, que son el tiempo y el costo, esto determinara la cantidad de recursos que podremos disponer para nuestro proyecto, y más importante aún será el perfil y experiencia que se pueda costear con el presupuesto asignado. En estos casos la fórmula es sencilla, salvo que sea una estrategia comercial del proveedor (por ejemplo: ganar un cliente, abrir mercado, etc.):
“el nivel y la cantidad de recursos asignados a nuestro proyecto será directamente proporcional al presupuesto de nuestro proyecto, independientemente del tiempo que tengamos para dicho proyecto”.Como vimos en los artículos previos, la selección de la tecnología + el presupuesto del proyecto, influirán positiva o negativamente en el perfil y experiencia de los recursos asignados, es decir, hay ciertas tecnologías donde la oferta y la demanda de dicho perfil técnico determinaran los costos de los recursos. Si la tecnología es de cierto nicho o muy especializada, esto generará una dependencia durante mucho tiempo de nuestro proveedor seleccionado, que posteriormente si acaso la tarifa inicial fue económica, ya existiendo la dependencia el proveedor podrá renegociar tarifas nuevas en etapas posteriores del proyecto.En la metodología seleccionada y su relación con los recursos es como sigue, para ciertas metodologías se requiere cierta cantidad y perfiles especiales de los recursos involucrados, es decir se determinan responsabilidades y roles especiales tanto como para administrar, controlar y desarrollar, para lo cual en muchos casos es difícil que un recurso pueda cubrir varias funciones, por lo tanto ciertas metodologías requieren diferentes perfiles de recursos durante las diferentes etapas del proyecto, por decir un ejemplo, Project Manager, Software Architect, Data Architect, DBA, Developer Senior, Developer Junior, Project Leader, Tester entre otros.
RecomendaciónLa selección de los recursos deberá ser en función a los factores de negociación, tecnología y metodologías, es decir, los perfiles y experiencia de los recursos, deberán ser los adecuados a nuestras variables del proyecto, si por alguna razón los recursos no dominan la tecnología, ó no tenemos los recursos suficientes para cubrir el plan de trabajo en tiempo, ó asignamos juniors o practicantes (de manera arbitraria) para reducir costos, nuestro proyecto estará muy limitado en sus posibilidades de éxito. Un caso común es que algunas empresas prefieren tener una mayor cantidad de recursos juniors ó practicantes que reduzcan costos y por cantidad de recursos puedan tener el proyecto a tiempo, lamentablemente estos casos son difícilmente ejemplos de éxito, es posible que el proyecto se termine, pero la calidad dejará mucho que desear y en muchos casos el re-trabajo costará más que hacerlo bien a la primera, donde aplica el conocido refrán “lo barato, sale caro”.
Resumen General:
- NegociaciónEn este factor se determina las 2 variables principales de nuestro proyecto, el tiempo y el costo.
- TecnologíaEn este factor se determina sobre que plataforma tecnológica se desarrollará nuestro proyecto.
- MetodologíaLa selección de la metodología de desarrollo adecuada depende del tiempo, costo y tecnología seleccionada.
- RecursosEs importante medir el nivel del proyecto teniendo como base los anteriores factores para así poder asignar los recursos con las capacidades necesarias para afrontarlo.