
Ingeniería de software vs. ingenierías clásicas: similitudes, diferencias y desafíos
Introducción
A finales de año pasado me incorporé a IED como ingeniero de software, un rol claramente en minoría dentro de la empresa. Mi contratación ya demuestra un interés por el mundo digital, pero desde entonces solo he visto reforzada esa apuesta, especialmente desde el inicio de nuestra colaboración con 540. IED busca seriamente reforzar su oferta de software como un soporte para aumentar su producto electrónico.
Esto es un movimiento natural, un buen ecosistema de software puede hacer una oferta electrónica más atractiva y ayudar a sacar más rendimiento al producto vendido. Sin embargo, aun siendo natural, está transición puede ser ardua. Abordar proyectos de software no es lo mismo que para otros tipos de ingenierías más “tradicionales”, esto quedó en evidencia desde el principio mismo de la disciplina, cuando muchos ingenieros empezaron a abordar el software usando las metodologías que habían usado tradicionalmente, resultando en mucho sufrimiento y rechinar de dientes. Como resultado de estas experiencias, durante los 2000 surgieron una plétora de nuevos frameworks para organizar el código y a los equipos que lo desarrollan (hexagonal architecture, extreme programming, agile, etc.), Waterfall se convirtió en tabú y se extendió una sensación general de que el software era “algo distinto”. Lo que nos lleva a la pregunta. ¿Qué hace al software tan complicado? ¿Es siquiera complicado o tan solo distinto?
Distintos
Primero de todo, el desarrollo de software no es tan complicado, al menos no más que cualquier otro tipo de ingeniería, es simplemente, distinto. Está diferencia surge de sus limitaciones, o más concretamente de la ausencia de estas. El software es tremendamente flexible, maleable y portable. Imaginemos un plano para un nuevo componente electrónico o dispositivo, para poder probarlo será necesario fabricarlo: contactar con un fabricante, pasarle las especificaciones, esperar a que tenga el prototipo listo etc, esto puede llegar a requerir semanas y un coste monetario. En el mundo del software, en cuestión de segundos se puede tener un prototipo listo y funcionando. En el mundo del software una actualización que arregle un problema critico puede ser entregada a miles de clientes por todo el mundo en cuestión de minutos a un coste ínfimo. Por el contrario, por poner un ejemplo, para un modelo de coche con un fallo de diseño crítico, la consecuente llamada a revisión a los vehículos ya en circulación puede requerir meses y causar perdidas catastróficas para el desafortunado fabricante. Está flexibilidad tiene consecuencias inmensurables a nivel tanto de desarrollo como de negocio.
Consecuencias en desarrollo
En ocasiones más flexibilidad implica más posibilidades para equivocarnos y más libertad para hacer las cosas mal. Cuando todo problema tiene un parche y cualquier solución puede ser mejorada más tarde, la tentación de tomar la vía rápida puede ser irresistible. Un apaño puede ser un pequeño inconveniente para desarrollos futuros, pero cuando una aplicación se convierte en una amalgama de remiendos mal avenidos, cualquier pequeña modificación se vuelve una tarea titánica. Bajo estas condiciones la implementación de nuevas funcionalidades se detiene hasta un goteo. La única solución llegados a este punto es dedicar una gran cantidad de recursos a arreglar chapuzas, a costa de los nuevos desarrollos, lo cual es muy difícil de justificar a nivel de negocio.
Y lo que hace este problema más insidioso todavía, es que en ocasiones tomar la vía rápida es absolutamente imprescindible. Para un nuevo producto, la prioridad siempre debe ser obtener una versión lo suficientemente avanzada como para ser comercializada, sin una visión concreta del producto o su viabilidad, la velocidad y flexibilidad es fundamental y prima sobre la sostenibilidad, de nada sirve tener la aplicación más robusta y escalable posible, si tiene que ser abandonada porqué nadie la usa. Es conformé el producto madura que se deber reconocer cuando pivotar a un enfoque más centrado en la robustez del producto. Porque el software siempre es una carrera de fondo, en el ecosistema actual las actualizaciones constantes no son un lujo, son una necesidad.
Consecuencias en negocio
En el ámbito de negocio, el software es lo que se conoce como un “Bien Informacional”, como una película o un libro. Una característica fundamental de estos bienes es que, aunque puedan tener un coste de desarrollo, su coste marginal es prácticamente nulo, esto tiene muchas implicaciones.
Primero, el valor del producto viene completamente determinado por lo que esté dispuesto a pagar el cliente, cualquier precio genera beneficio por lo que la cuestión radica en cómo sacar el mayor provecho de cada cliente, esto suele llevar a ofertas muy flexibles con muchos precios y niveles para adaptarse a cada tipo de cliente. También significa que el potencial beneficio de un producto exitoso puede ser enorme.
Segundo, el desarrollador de una pieza de software no es el único que puede reproducirla. Aunque no se traten de copias directas, otros competidores pueden reproducir las partes exitosas de un producto para ponerse al día, esto es cierto para cualquier industria, pero para el software está adaptación puede ser mucho más rápida. Esto es una bendición para un competidor emergente como lo es IED, pero asegura una competición fiera y hay una necesidad de mejora constante, el triunfo requiere de un trabajo continuado y una apuesta a largo plazo.
Conclusión
La industria del software, con su flexibilidad, velocidad de iteración y bajo coste marginal, presenta características únicas que pueden convertirse en serios obstáculos para una empresa que recién se adentra en este sector. La tentación de priorizar soluciones rápidas, la facilidad de acumular deuda técnica y la feroz competencia hacen que el camino inicial sea complejo y exigente.
Sin embargo, estas mismas particularidades también abren oportunidades significativas. La posibilidad de reproducir y adaptar soluciones en poco tiempo, junto con la capacidad de acceder a nichos de mercado específicos mediante propuestas innovadoras, facilita la entrada de nuevos actores que sepan aprovechar la dinámica del sector. Para aquellos que logren sortear los desafíos y labrarse un lugar en el mercado, la recompensa puede ser tan grande como transformadora.
IED tiene una ardua tarea por delante, pero una muy provechosa en caso de tener éxito. En mi experiencia creo que IED ha entendido los retos que se le presentan y está actuando de manera acorde, lo que me hace ser optimista sobre nuestro éxito.