Gestión eficiente de proyectos de software
Gestionar un proyecto de software como un portafolio trae ventajas que nos permite tomar deciones objetivas para crear valor lo antes posible.
Hay dos características que hacen especiales a los proyectos tecnológicos: tienden a ser riesgosos y rentables. Estas variables, en equilibrio, estudiadas, nos permite tener una perspectiva más acertada de cómo gestionar nuestro desarrollo de software.
Antes de seguir con el artículo, es importante señalar: la tecnología es una disciplina que trabaja con sistemas de alta complejidad, tanto por la naturaleza técnica como por la gestión social que esta requiere.
Una buena gestión no requiere solo un análisis big picture. Es importante entender la propia naturaleza del software para que estos proyectos obtengan su máximo potencial y retorno.
En el presente artículo nos referiremos a cómo, dado un proyecto específico con sus requerimientos definidos, podemos obtener el mayor retorno en menor tiempo.
Composición de un proyecto de software
Un desarrollo de software se debe dividir, ante cualquier circunstancia, en la mayor cantidad de funcionalidades. Entre más pequeña estas sean, mejor, ya que nos permite aislar la necesidad y controlar mejor su varianza.
En las metodologías ágiles, que permiten avanzar rápidamente a soluciones que generan valor (una forma de ver el desarrollo ya no tan moderna), habitualmente, cada funcionalidad se le conoce como historias de usuario, ya que cada una de estas le permite a un usuario completar una actividad que le genera valor.
Estas historias de usuarios se pueden agrupar en grandes historias, a lo que – al igual que en la literatura – se le denominan épicas, que no son más que múltiples funcionalidades que en conjunto añaden más valor que individualmente.
Las épicas puede (y deben) ser administradas como un portafolio. La tecnología no es un costo directo o gasto, se asimila más bien a un activo de inversión que genera retorno con su riesgo asociado.
Gestión de nuestro portafolio de épicas
El gran desafío en la gestión de un proyecto tecnológico está en distribuir los recursos escasos (tiempo de desarrollo) para obtener el mayor retorno. Ante esto, es importante considerar:
- Entre antes se obtenga el valor, mejor. Reduce riesgo ante incertidumbre futura.
- Cuando las funcionalidades a ser desarrolladas no son estructuradas, la mayoría de las veces es incierta la respuesta de los usuarios, por lo tanto, diversificar resulta eficiente.
- El costo de cada funcionalidad no es un valor fijo y predecible, tiene un comportamiento variable.
Dado lo anterior, el trabajo de gestión de un proyecto o un portafolio de épicas se basa en priorizar. Qué funcionalidades debo hacer primero y porqué.
Al igual que cualquier portafolio, existen métodos eficientes de hacerlo. Para esto debemos entender tres dimensiones de cada funcionalidad, o mejor dicho épica:
- Costo: es decir cuantas horas de desarrollo implica esta funcionalidad (esto es transformable en costo monetario dado que conocemos los sueldos, gastos, etc).
- Retorno directo: es decir una épica cuanto incremento en ventas significará (por ejemplo: clientes están esperando un set de funcionalidades para usar nuestro producto) o cuanto costo directo reducirá.
- Retorno indirecto: es decir el aporte estratégico de la épica, pensando en por ejemplo en funcionalidades que no se traducen en ventas, pero si en posicionamiento.
Estos tres factores se deben ponderar para determinar el orden de desarrollo de las épicas, es decir el orden de inversión en nuestro portafolio.
Cuantificar el costo de una funcionalidad
Dado que el comportamiento de un proyecto de desarrollo opera con gran varianza, es esperable es que existan sobrecostos – y no menores- al finalizar el proyecto. Esto es un factor fundamental a la hora de cuantificar el costo de una épica.
A pesar de que existen muchas técnicas, que por lo general no muy precisas, en Nursoft utilizamos técnicas estocásticas de inteligencia artificial para simular el comportamiento de las épicas, y en consecuencia, del proyecto. Es decir, dada las funcionalidades, historias de usuario, podemos simular distintos escenarios de cómo se va a comportar un proyecto. Esto lo realizamos mediante técnicas de machine learning contra una base de datos que contiene más de 100.000 registros detallados.
Con nuestro sistema, llamado BlackSheep, logramos reducir la varianza de los proyectos de un 200% a un 25%, lo que permite mejor gestión de estos.
Con esto, tenemos rangos de comportamientos que nos permiten tener escenarios optimistas, pesimistas y esperado de cada funcionalidad. Esto implica mayor control del proyecto.
La gestión diaria eficiente o, cómo priorizar
Dada todas las variables anteriores, podemos estructurar cada épica evaluándola en las tres variables: costos, retorno directo e indirecto, y finalmente optimizando este orden obtenemos que debemos hacer primero.
A modo de ejemplo, simulamos 50 épicas, cada una con su costo y retorno directo estimado, para que se considere en el análisis:
- El costo directo se consideró se realizaron 10.000 simulaciones, donde se ponderó el peso de cada épica para determinar el costo unitario, el costo considerado es el promedio ponderado de los escenarios llevados a valores horas estándar.
- El retorno se consideró el incremento de ingresos dado el valor por cada usuario nuevo durante un año.
- Más allá de cómo se estimó cada parámetro, el objetivo es distinguir la priorización.
Al tener cada parámetro objetivo (el retorno indirecto no se consideró en esta ocasión) definido, es posible distinguir que existen épicas de mayor retorno a menor costo y viceversa.
Dado lo anterior, aquellas que se ubican en el cuadrante I, son épicas que cuestan menos inversión y retornan más, a diferencia de las del cuadrante IV, que son lo opuesto, por lo tanto, el orden de trabajo queda definida lógicamente la gestión del proyecto.
Esto resulta sumamente familiar al compararlo con un portafolio, la frontera eficiente se sitúa en aquellos activos que tienen menor volatilidad (costo) y mayor retorno (retorno directo) dado un presupuesto dado. Estas técnicas ya descritas en la década de los 50 son completamente extrapolables a la gestión de un proyecto tecnológico.
Los requerimientos cambian
Sabemos que los negocios son cambiantes, y los proyectos tecnológicos no se eximen de esto. Es por eso por lo que dado que avanza el desarrollo es natural ver que las épicas han ido mutando, algunas se desechan y otras se añaden.
Es por esto que el trabajo de gestión es continuo y lo presentado en este artículo responde a un momento dado, ante cambios es importante volver a repetir el ejercicio de gestión para mantener alineada la tecnología con el negocio.