Cuando una organización necesita digitalizar o mejorar un proceso suele aparecer una pregunta importante: ¿conviene utilizar un sistema existente o desarrollar una solución propia?
No existe una respuesta universal. Una aplicación disponible en el mercado puede resolver correctamente muchas necesidades y evitar el costo inicial de construir software. Sin embargo, cuando los procesos presentan características particulares, numerosas adaptaciones manuales o necesidades de integración específicas, una solución a medida puede aportar mayor valor.
La decisión debería surgir de un análisis del problema y no de una preferencia por determinada tecnología.
Comprender el problema antes de decidir desarrollar
El desarrollo de software debería comenzar con una necesidad concreta. Antes de analizar lenguajes, frameworks o arquitecturas es necesario comprender qué proceso se desea mejorar, quiénes participan y qué dificultades existen actualmente.
En algunos casos el problema puede resolverse modificando un procedimiento, configurando correctamente una herramienta existente o integrando servicios que la organización ya utiliza.
Evaluar primero si una herramienta existente cubre la necesidad
El mercado ofrece sistemas para facturación, administración, ventas, inventarios, atención al cliente, gestión documental y muchas otras actividades. Cuando una solución existente cubre adecuadamente los requisitos, adoptarla puede resultar más conveniente que iniciar un desarrollo desde cero.
Sin embargo, debe evaluarse el costo completo de adaptación: licencias, configuraciones, capacitación, integraciones, restricciones y dependencia del proveedor.
Porcentaje de necesidades que la herramienta cubre sin modificaciones.
Costo de licencias y crecimiento futuro.
Posibilidades de integración con otros sistemas.
Acceso y portabilidad de los datos.
Capacidad de personalización.
Soporte y continuidad del proveedor.
Considerar software propio cuando el proceso es parte del diferencial de la organización
Algunas empresas poseen procesos particulares que forman parte de su forma de trabajar. Intentar adaptar esos procesos permanentemente a un sistema genérico puede generar planillas adicionales, tareas duplicadas o procedimientos manuales.
Una solución a medida permite modelar reglas, usuarios, flujos de trabajo y datos según la realidad de la organización.
Analizar crecimiento, integraciones y evolución futura
Una necesidad actual puede ser relativamente sencilla, pero la organización puede prever nuevas sucursales, mayor cantidad de usuarios, integración con proveedores o incorporación de nuevos canales.
Cuando se desarrolla una solución propia, la arquitectura debería considerar esa evolución desde el comienzo sin intentar anticipar funcionalidades que quizás nunca sean necesarias.
Cantidad actual y futura de usuarios.
Necesidad de aplicaciones web, móviles o de escritorio.
Integración mediante APIs.
Intercambio de información con sistemas existentes.
Crecimiento del volumen de datos.
Nuevas funcionalidades previstas.
Comparar inversión inicial con costo operativo a largo plazo
El software a medida normalmente requiere una inversión inicial mayor que contratar una herramienta existente. Sin embargo, la comparación debería considerar todo el ciclo de vida.
Procesos manuales, licencias crecientes, tareas duplicadas, falta de integración y limitaciones operativas también generan costos aunque no siempre aparezcan identificados como gastos tecnológicos.
Tomar la decisión a partir de un análisis de factibilidad
Antes de comenzar el desarrollo conviene establecer objetivos, alcance inicial, restricciones, usuarios, datos, riesgos y prioridades.
Ese análisis permite decidir si corresponde construir una solución completa, comenzar con un módulo pequeño, integrar herramientas existentes o postergar el proyecto hasta disponer de mejores condiciones.
Definir claramente el problema.
Identificar usuarios y procesos involucrados.
Relevar herramientas actualmente disponibles.
Comparar alternativas.
Estimar beneficios, costos y riesgos.
Establecer un alcance inicial realista.