¿Por qué modificar un software cuesta tanto?
Igor Támara
Senior Software EngineerEs una pregunta reiterativa. ¿Por qué las compañías de software cobran tanto cuando se hacen modificaciones a una plataforma que ya está funcionando?
Tenemos unos símiles para orientar un poco la respuesta: la fachada, la ventana, el ascensor, el último piso, el piso 13, el sótano, el anfiavión, la sexta y el botón de reset.
Antes de continuar, vamos a aclarar algo: crear software es un proceso de ingeniería, no un proceso de creatividad e inspiración. Por lo tanto, dibujar o crear un diseño en un momento de inspiración como lo hacen las empresas dedicadas a tal labor es algo totalmente distinto a lo que trataremos aquí.
El software es más bien como una tulpa, crearlo requiere tiempo, esfuerzo, experiencia, guía y aprendizaje de otros que ya hayan construido cosas similares. El software es aquello que no se puede romper con un hacha...
Después de construido un edificio, ¿sería sensato colocarle un ascensor? Si hay presupuesto abundante, pero no tanto como para comenzar otro edificio, pueden surgir algunas preguntas:
- ¿Es permitido ubicar ascensor al exterior del edificio?
- O, debido a reglamentaciones, ¿va a ser indispensable construirlo por dentro del edificio?
- ¿Qué implicaciones tiene hacerlo? ¿Hay que romper pisos, o reubicar cables y tuberías?
- ¿Hay que garantizar que la estructura siga en pie durante la obra?
- ¿Es necesario que no se interrumpa el uso de todas las oficinas?
Vamos una a una con las metáforas:
La fachada
Las restricciones de una fachada se remite a los siguientes escenarios:
- Si hay poco presupuesto y el sistema es desechable.
- Si hay una cadena de subcontratación larga, el presupuesto final es de esta forma.
- Si el presupuesto incluye licencias costosas, pero programadores que no tienen experiencia o habilidad, generalmente asociado al ítem anterior.
Ahí tiene su casa pintada. Tenemos como referencia la estrategia del Caracol.
La Ventana
Cuando tienes una casa, un auto o un edificio es posible añadir una ventana:
- ¿Dónde irá la ventana?
- ¿En el techo en forma de claraboya?
- ¿Una ventana en qué piso?
- ¿Para dar iluminación al interior?
- ¿O es una ventana con posibilidad de ventana de emergencia?
- ¿Cuánto cuesta colocar un sunroof a un automóvil?
El Ascensor
¿El ascensor? Bueno, ya lo tratamos con anterioridad, nosotros trabajamos con DRY, no haremos copy paste.
El último piso
Está el edificio, un edificio con Penthouse, un edificio con bases sólidas, ahora se quiere colocar una piscina en el último piso, algunas consideraciones:
- ¿Cuántas toneladas pesa el agua que tiene la piscina?
- ¿Cómo lograr la impermeabilización?
- ¿Cómo garantizar el bombeo de agua o los desagües?
- ¿De qué forma podríamos mitigar los riesgos de un tubo roto?
El piso 13
Con la experiencia de la piscina ya se tiene idea de la dificultad de lograr que el piso nuevo esté en el piso 13 y no en el último.
- Revisemos que el peso adicional del edificio continúa con las bases actuales para no tener que hacer adecuaciones en las bases del edificio
- Construyamos el piso 31 y una vez esté construido mudamos los pisos del 14 hacia arriba
- Construyamos el piso 13, permitamos que los que están trabajando del 12 hacia abajo que continúen trabajando, los demás se van de vacaciones mientras termina la obra
- Si no se puede detener la operación y todos deben continuar, sigamos adelante.
- Siempre que se coloque un piso intermedio para no tener que mudar a todo el mundo, habrá que extender los cables en la mitad.
El sótano
A medida que se requiere cambiar estructuras en un edificio en partes que están más en la base en un sistema, la complejidad de mover todo lo superior aumenta y la posibilidad de que quede no operativo aumenta exponencialmente.
Hemos llegado a la necesidad de colocar parqueaderos en el sótano de un edificio, pero el edificio inicialmente no tenía sótano. Que bueno que el software no se puede partir con el hacha.
- Debemos garantizar que durante la adecuación no vamos a permitir que el edificio colapse.
- Podemos colocar globos o grúas para colgar el edificio, para poder colgarlo, debemos hacer refuerzo y colocar los anclajes requeridos en los sitios estratégicos para no colapsar.
- También será necesario idear algo para que el flujo de las entidades que entran y salen del mismo puedan continuar operando.
- Abrir en profundidad un hoyo mucho más grande para colocar las nuevas bases debajo del parqueadero.
- Colocar las vigas dentro del parqueadero para que soporten el edificio.
- Garantizar que hay conexión entre el sótano y los pisos superiores.
- Ensamblar de nuevo.
El anfiavión
Nuestro software es más rápido que un avión, como funciona tan bien, y es capaz de aterrizar en un aeropuerto y despegar desde ahí, ahora necesitamos que pueda aterrizar en un lago, en un mar o en el río.
- Todos hemos visto aviones que son capaces de acuatizar.
- Coloquemos los flotadores.
- Mantengamos la capacidad para que además de acuatizar, aterrice en una pista para aviones.
- Mantengamos la velocidad actual del avión.
- La aerodinámica la podemos sobrellevar, pongamos turbinas más fuertes...
- Como vamos a aterrizar en el mar, debemos garantizar que los materiales sean los adecuados.
La sexta
Nuestro automóvil puede andar rápido y cargar la cantidad inicial de pasajeros, pero queremos que ande más rápido añadiendo una sexta velocidad. ¿Así o más sencillo?
- Un motor más potente no cabe en el capó.
- La resistencia del viento puede impedir que alcance la velocidad esperada.
- Cambiemos las llantas para que tengan mejor agarre.
- Cambiemos la superficie sobre la que anda.
- Mejoremos el sistema de frenos; si acelera y no frena vamos a estar en graves problemas.
El botón de reset
De acuerdo a todo lo visto, este último recurso puede que sea el más efectivo de todos: mudemos todo a un nuevo sistema e infraestructura. Construir un sistema desde ceros es mucho más económico y flexible que modificar uno existente.
En caso de hacerlo, sin embargo, tendremos que enfrentar otros retos. Entre los principales, realizar la migración de datos anteriores, lograr la aceptación en los usuarios y establecer rutas para interactuar con los sistemas previos.
* Nota: Esta entrada tiene algunas imágenes que hacen falta, si tiene una imagen para adicionar en las secciones faltantes, son bien recibidas, las imágenes de la fachada, el ascensor, el último piso, el piso intermedio y el anfiavión son todas obras originales de Vera Mazuga.
Written by Igor Támara
A seasoned developer, Igor brings expertise in designing and building complex software systems. With a focus on quality and performance, they lead projects that drive innovation and deliver reliable solutions to meet user needs.