Las situaciones no triviales no pueden resolverse suficientemente con una métrica trivial. Me gusta ver el conjunto completo de costos asociados con el software:
- ¿Cuánto cuesta mantener tal como es? Para abordar los defectos que los clientes informan?
- ¿Cuánto cuesta modificar el código? Añadir una nueva característica? ¿Cambiar una función existente?
- ¿Cuánto cuesta operar? Para una aplicación web que sería la infraestructura: servidores, equilibradores de carga, bases de datos, etc. Para una aplicación instalada que sería el personal de marketing, ventas, soporte, cualquier solución implementada para clientes, etc.
- ¿Qué tan fácil es encontrar nuevos desarrolladores para agregar al equipo? ¿Cuánto tiempo se tarda en aumentarlos para que sean productivos? ¿Cuál es la tasa de rotación del equipo?
- ¿Existen planes de proyectos concretos (nuevas características, integraciones, migraciones, etc.) que tendrán una cantidad de trabajo cuantificable? ¿Cuáles son los costos involucrados con estos proyectos?
No todos estos aspectos pueden ser significativos para su producto y equipo. Elija lo que tenga sentido, pero no evite algo solo porque no lo sabe. Haga una estimación razonable, digamos del personal de soporte (atención al cliente, TI, soporte de ventas) para que, si las cosas cambian, pueda señalar el número y decir si es probable que baje, permanezca igual o suba con cualquier alternativa considerada
La clave aquí es conocer el valor comercial que proporciona el código. Ese valor debe expresarse en moneda porque así es como sus clientes pagan a una empresa. Si es demasiado costoso, y es una llamada de valor, entonces es una muy buena idea evaluar otras opciones. Puede comenzar un esfuerzo de refactorización tomando una sección del código a la vez y actualizándola. Puede rediseñar el código extrayendo áreas discretas de responsabilidad y convirtiéndolas en servicios independientes.
- ¿Qué software utiliza Blizzard Entertainment para administrar internamente los mundos ricos que crean?
- ¿Es posible escribir aplicaciones completas usando sketchware?
- ¿Cuánto cuesta toda la suite de Adobe?
- ¿Cuáles son algunas buenas aplicaciones para aprender programación?
- ¿Cuál es la mejor aplicación para leer libros electrónicos gratis?
Cualquier ruta alternativa también debe evaluarse en términos del costo para el negocio para hacer el trabajo, el costo de oportunidad de otras cosas que no se pueden hacer mientras se realiza este trabajo, el costo de operar, mantener y actualizar el nuevo código también.
Todas estas opciones se reducen a números: la cantidad para ejecutar el software actual cada trimestre y año durante los próximos años, dando expectativas razonables sobre el crecimiento de la aplicación. La cantidad para ejecutar cada alternativa para el mismo período con los mismos planes de crecimiento.
Puede argumentar que el código es demasiado complejo y, por lo tanto, demasiado difícil de mantener, pero eso es solo una parte del rompecabezas. Tome una perspectiva comercial como si cada centavo que se utiliza para pagar la solicitud provenga de su cuenta bancaria y tenga en cuenta todos los costos de las soluciones actuales y alternativas. Luego puede tomar una decisión informada sobre cómo utilizar mejor los recursos disponibles.
Una recomendación más. No hay visiones de “pastel en el cielo” de lo que podría ser el software. Base todas las evaluaciones solo en lo que sabe que debe estar en el software; de lo contrario, se arriesga a tomar decisiones hoy en base a un plan futuro que tal vez nunca se realice. En mi experiencia, muy pocos planes más allá de los 6 meses entran en producción sin alteraciones significativas. Muy, muy, muy pocos.