|
Cotización temprana de sistemas
Breve guía sobre la presupuestación del desarrollo de aplicaciones
Copyright © 2002 Ernesto De Spirito
Este artículo fue primero publicado en el Boletín para Desarrolladores de
Software
Índice
El problema
Un cliente nos solicita un sistema a medida para su empresa. Realizamos
entonces un estudio inicial -- muchas veces gratis -- en el que hablamos
con el cliente para saber qué es lo que quiere, entrevistamos todos los
involucrados, conseguimos copia de todos los formularios (comprobantes,
planillas, etc.) que se manejan en la empresa, y todas esas cosas, y
determinamos los requerimientos del sistema. Terminado el estudio
inicial, en ese punto el cliente nos pide una cotización de todo el
desarrollo, pero ¿Como hacemos? ¿Cómo cotizamos lo que todavía no hemos
ni diseñado? ¿Cómo calculamos el tiempo de todo un desarrollo basados en
un estudio inicial? ¿Es el momento de cotizar? ¿Podemos estimar con un
relevamiento cuánto nos llevará el diseño y construcción del sistema?
Comprendamos al cliente
A veces uno le puede hacer entender a los clientes que no se puede saber
cuánto tiempo llevará (y costará) la construcción de un sistema, si
primero no se lo ha diseñado, y que no se puede saber cuánto tomará el
diseño si primero no se realizó el análisis de lo que se relevó, etc...
Entienden todo eso, que las etapas, que los informes, que los puntos de
control, que la calidad del trabajo, pero por lo general igual después
de un relevamiento inicial quieren conocer el costo total del proyecto
porque necesitan ese dato de antemano, aunque sea un estimado (lo más
ajustado a la realidad posible), antes de decidirse a encarar el
proyecto, pues necesitan saber de antemano si podrá afrontar los costos
de todo el proyecto y planificar el flujo de efectivo.
Contratación por Ajuste Alzado
Hay que comprender la necesidad del cliente, pero no se puede contratar
todo el desarrollo del sistema por ajuste alzado o llave en mano.
Ajuste alzado es una modalidad de contratación en la que se fija un
precio fijo y cerrado para la ejecución de un proyecto. Los trabajos
incluirán todo aquello necesario para que el sistema se considere
completo y quede puesto en marcha. Llave en mano es como el ajuste
alzado pero se supone que el precio incluye todos los trabajos hasta
el último detalle, o sea, hasta cumplir el último capricho del cliente).
Esta suposición obviamente está prohibida por la legislación de
cualquier país civilizado, pero el término llave en mano se sigue
utilizando (sólo como una forma de dar a entender que los trabajos son
de buena calidad y de gran nivel de sus detalles de terminación).
La modalidad de contratación por ajuste alzado es apta para casos en
que los trabajos se encuentran perfectamente definidos y detallados.
Por ejemplo, sería apata para contratar una etapa del desarrollo de
un sistema a partir de la etapa anterior. Por ejemplo, a partir de un
estudio inicial podemos presupuestar sin problemas un análisis, con
base a un análisis podemos presupuestar un diseño conceptual, a partir
de un diseño conceptual podemos presupuestar un diseño detallado, y así
sucesivamente con todas las etapas...
Alternativas
Pero el ajuste alzado no es apto cuando el proyecto no está definido a
priori o cuando está sujeto a eventualidades o es cambiante. Entonces,
tras un estudio inicial, habiendo totavía muchas cosas por definir, no
podemos fijar un monto global para el proyecto por ajuste alzado. El
cliente bien que querría eso ;) pero para nosotros es inaceptable. Se
presentan entonces las siguientes alternativas:
Ir contratando etapa por etapa (o hasta puede ser uniendo etapas) por
ajuste alzado. Conveniente para nosotros porque nos resultará fácil
hacer estimaciones de lo que viene en base a lo ya hecho, pero
generalmente no para el cliente que quiere fijar un monto global para
todo el proyecto desde el primer momento o un estimado muy cercano a
la realidad.
Contratación del desarrollo del sistema por la modalidad de coste
y costas. Con este sistema de contratación, el contratista le
factura al cliente lo que los trabajos han costado. Mucho más
conveniente para nosotros pues es riesgo cero ya que directamente ni
siquiera tenemos que presupuestar (salvo por ejemplo dar precios de
elementos básicos de costo como el valor hora del analista,
diseñador, programador, capacitador y otros), pero se repite la
dificultad para el cliente expresada en el punto anterior, además
que requiere gran confianza del cliente en nosotros, o ejercer gran
control sobre el avance de nuestros trabajos.
Contratación del desarrollo del sistema por la modalidad de límite
de costo. En base a un estudio inicial, en muchos casos puede
estimarse los tiempos y costos del proyecto a ojo de buen cubero y el
desarrollo del sistema se realizará buscando cumplir con esos
parámetros (se explica mejor abajo). Esta modalidad continúa siendo
favorable a nosotros pues no presenta riesgos, y permite al cliente
fijar un precio global al inicio del proyecto. Al igual que en el
caso anterior, requiere gran confianza o control de parte del
cliente.
Combinaciones híbridas de las anteriores.
Contratación por Límite de Costo
En esta modalidad de contratación se estiman los tiempos y costos a ojo
de buen cubero (explicamos eso más adelante) y después el desarrollo
trata de ajustarse a esos parámetros. En otras palabras, si por ejemplo
se fijan dos meses de plazo de ejecución y dos mil pesos de costo, pues
el cliente tendrá un sistema de dos meses y de dos mil pesos. En otras
palabras, es como si el cliente nos dijera "hazme el mejor sistema que
puedas y que cumpla los objetivos planteados, en dos meses y dos mil
pesos, que es lo que puedo pagar."
Dentro de este sistema se considerarán trabajos adicionales todo aquello
que el cliente quiera y que nos saque de los límites prefijados, así que
cuando el cliente nos venga con un "domingo siete" de esos que ya
conocemos, debemos decirle que con eso nos salimos del presupuesto
original, y dejarle que él decida si paga la diferencia, si no se hace,
o si se recorta por otro lado para compensar.
Por las características de este sistema de contratación, la estimación
de tiempos y costos hasta se puede negociar con el cliente para fijar el
tiempo de desarrollo y el precio final. En definitiva lo que se negocia
es si el sistema traerá sólo básico o si será un sistema con todos los
lujos. Lo habitual es presenter tres alternativas (una económica, una
mediana y una costosa) y dejar que el cliente decida.
Estimación del costo de un sistema a ojo de buen cubero
¿Se puede estimar el costo de un sistema a mano alzada con base a un
estudio inicial? Sé que muchos van a decir categóricamente que no. Sería
como decir cuánto costará construir una casa con sólo hecharle un
vistazo a un croquis... Pero, precisamente, por eso es que sí se puede.
Aunque un constructor no tenga un plano definitivo, y no haya hecho un
cálculo de materiales y mano de obra para saber cuántos ladrillos,
cuánta arena, cuánta cal, cuánto cemento, etc. llevará una obra, igual
sabe que para el costo de una vivienda de una determinada metodología
constructiva existe una relación entre precio por metro cuadrado y
calidad, de modo que dado un nivel de calidad deseado (que define el
precio por metro cuadrado) y la cantidad de metros cuadrados (que se
obtiene de unas mediciones sobre el croquis), se calcula con una simple
multiplicación el costo total de la obra. El tiempo de construcción
también es función de la cantidad de metros cuadrados y la calidad de
los trabajos.
Lo mismo ocurre con los sistemas. El problema aquí es ¿cuál es el
equivalente de los metros cuadrados? Tenemos que obtener una medida
cuantitativa que represente el estudio inicial, así como los metros
cuadrados son una medida cuantitavia que representa al croquis. ¿Qué
valor cuantitativo que se puede obtener o estimar sin problemas en
base a un estudio inicial tiene fuerte correlación con el costo de un
sistema y el tiempo de desarrollo? Bueno, pues el parámetro que se
toma habitualmente es la cantidad de tablas, que multplicándolo por el
precio por tabla (que se conoce de antemano en base a la experiencia)
nos dará el costo total del sistema.
Obtener la cantidad de tablas en base a un estudio inicial no es tan
simple como medir un croquis con un escalímetro, pero tampoco es
imposible hacer un borrador de las tablas y sus relaciones en función
de lo que nos imaginamos del sistema, sumándole un margen de error
razonable en función de la experiencia. Por ejemplo si tras el estudio
inicial identificamos unas 40 tablas pero sabemos por experiencia que
en sistema de este tamaño por lo general es normal que en etapas
posteriores surjan un 20% de tablas más, y si tomamos un 5% como margen
de error, entonces en nuestros cálculos tomaremos 50 tablas.
Queda por último establecer la función que nos dará el precio por
tabla. La forma más simple es la sumatoria de elementos de costos
(siendo algunos de ellos coeficientes obtenidos por la experiencia)
multiplicados por los precios unitarios de esos elementos de costos.
Por ejemplo:
Cantidad promedio de horas de análisis y diseño por tabla
x Valor hora de análisis y diseño
+ Cantidad promedio de horas de programación por tabla (incl.
creación, carga de datos de prueba, diseño de formularios,
diseño de listados, depuración, detalles, prueba, puesta a
punto, etc.)
x Valor hora de programación
+ Cantidad promedio de horas de carga inicial de datos por tabla
x Valor hora de operador
+ Cant. prom. de horas de conversión de datos existentes por tabla
x Valor hora de conversión de datos
+ Cantidad promedio de horas de preparación documentación por tabla
x Valor hora de documentador
+ Cantidad promedio de horas de capacitación por tabla
x Valor hora de capacitación del usuario
+ Costos fijos y variables / Cantidad de tablas
-------------------------------------------------------------------
Precio por tabla
La cantidad de horas de cada elemento de costo depende de muchos
factores como la complejidad del sistema, la experiencia con las tecnologías
a emplear, la calidad del trabajo y el nivel de sus detalles de
terminación, el lugar y las condiciones de trabajo, capacitacías y
coordinaciones necesarias (aumenta en función de la cantidad de miembros
del equipo), imprevistos, etc. La sumatoria de los tiempos obviamente
sirve para estimar el tiempo total de desarrollo.
Los valores hora dependen de la región, el tipo de trabajo, el bolsillo
del cliente, el lugar y las condiciones de trabajo, etc. y otras
consideraciones como por ejemplo las posibilidades de reventa del
sistema.
Cabe mencionar que si bien le hemos dado bastante detalle a los
cálculos, el nivel de detalle en realidad lo fija uno según el caso y
su experiencia, pero el detalle es importante a la hora de justificar
los costos, de determinar los tiempos y costos de las etapas, de medir
después el avance del proyecto (sobre todo para cobrar) y hacer un buen
control de costos, de fijar precios de referencia para los trabajos
adicionales, y para después hacer análisis de costos y mejorar nuestros
parámetros de cara a cotizaciones futuras.
|