viernes, 9 de noviembre de 2012

La Trampa de Contratar Desarrollo de Software Barato

Tal como cuando un edificio puede recién ser habitado cuando tiene los permisos adecuados de la autoridad, que justamente buscan asegurar calidad constructiva, una ingeniería y cálculo, y un proceso bajo un estándar de calidad mínimo, es que un nuevo software también podría ser "peligroso" para sus habitantes (en este caso usuarios).

Para un cliente que requiere un nuevo sistema, o una actualización o quizás simplemente la contratación de un servicio externo para el manejo de uno de sus procesos o gestión de información de su negocio, resulta relevante considerar algunos aspectos que todo desarrollo profesional deberá tener, y que justamente lo hace diferente a un desarrollo amateur o estudiantil. Intentaré aclarar con precisión y simpleza estos puntos.


  1. El software debe tener un diseño de ingeniería (y no me refiero a diseño gráfico). Esto calza perfectamente con el ejemplo que daba del edificio. Un sistema sin una etapa inicial y sin que alguna cabeza pensante lo haga puede generar resultados desastrosos. Debe pasar un por un proceso de estrategia, de análisis, que permita definir y estudiar la mejor forma de construirlo.
  2. El software debe estar documentado, sino su mantenimiento y mejoras resultan exponencialmente cada vez más caras hasta llegar a un punto que es mucho más conveniente rehacerlo completamente
  3. El desempeño del sistema sí es afectado por el hardware o servidor, y la red donde correrá. Normalmente no es considerado como algo importante, pero muchos sistemas comienzan a estresarse artificialmente y a requerir soporte sin ser realmente eficiente (esta optimización en hh de desarrollo son mucho más caras que upgradear el hardware)
  4. Un sistema idealmente debe tener sus servicios corriendo en "ambientes tuniables". Esto quiere decir que normalmente generará mucho mejor desempeño disponer de una base de datos corriendo en un servidor diferente a donde está la aplicación (si fuera un sistema web). Con esto sí puede lograrse configurar y optimizar cómo está operando cada uno de estos componentes sin afectarse entre sí
  5. Al momento de evaluar externalizar un desarrollo no siempre se contempla la necesidad "natural" de requerir soporte. Muchos clientes pierden productividad por no tener horas expertas (aunque sea unas pocas) de forma no parar la fábrica productiva de sus propio negocio

Si bien estos aspectos están contenidos y altamente tratados en metodologías que finalmente promueven buenas prácticas -como la implementación de CMMI aplicado a los procesos de desarrollo -, no siempre están a la vista del cliente, sobre todo en proyectos pequeños. Es deber ético de quienes trabajamos en este rubro hacérselo patente a nuestros mandantes, y con esto asegurar una utilidad para todas las partes.

No hay comentarios.: