Futuro de la ingeniería software: velocidad, datos y ecosistemas (llámalo futuro ágil)

Una de mis revistas preferidas era la IEEE Software, donde, incluso, hace años me publicaron un artículo sobre Orientación a Objetos. Hablo en pasado porque, aunque sigue siendo buena, en los tiempos que corren, ya desde hace años, el “conocimiento” no lo encuentras tanto en revistas, modelo de distribución de experiencias y conocimiento bastante anticuado y lento, sino en otros medios como blogs, slideshare, enlaces desde Twitter, etc.
No obstante, de vez en cuando, aunque cada vez con menos frecuencia, paso por la web de la IEEE Software a ver qué temas ha tratado en los últimos meses. En línea con lo que te contaba, gran parte de los artículos son de temas o demasiado teóricos o antiguos (la revista sale bimensualmente). Pero, no obstante, siempre puedes rescatar alguno, siempre hay alguno, cada varios números, que se salva, como aquel que dio pie al post de ¿Se puede vivir de la programación, o la tecnología, después de los 40? O este que he rescatado hoy de Speed, Data, and Ecosystems: The Future of Software Engineering.
La verdad que el artículo no dice nada que no hayamos dicho ya por estos post, si que es cierto que de manera más “particionada”, y siempre viene bien comprobar que otra gente tiene ideas similares a las tuyas. Y es por ello que le he dedicado este post resumen – análisis.
Según comenta el autor, Jan Bosch, hay tres factores fundamentales para el progreso de la ingeniería de software:
– La innovación. El software se está convirtiendo en el elemento diferenciador de muchos productos. Y el software puede actualizarse con frecuencia. Por ello, los clientes esperan cada vez más que sus productos evolucionen.
– De productos a servicios. El objetivo ha pasado de la venta de la mayor cantidad de un producto a proporcionar la mayor cantidad de servicios, con un nivel de calidad.
– Innovación dirigida por el Cliente. Las innovaciones exitosas a menudo son desarrolladas por los clientes, que expresan sus necesidades.
Hasta aquí, todo lo anterior también lo puedes llamar ciclo de vida ágil, iterativo e incremental, adaptación al cambio, prototipos, MVP, etc.
A raíz de o anterior, el artículo repasa varias “tendencias” (lo de tendencias lo entrecomillo, porque suena futuro y ya es presente pasado) o necesidades a los que los anteriores nos llevan.
Velocidad. Como decíamos en 2012, en Hoy lo más determinante es la velocidad de desarrollo. ¿Eres rápido? Tu empresa lo tiene todo, Las empresas hoy en día deben responder a las nuevas necesidades de los clientes y a velocidades sin precedentes, lo que requiere un nivel de agilidad en toda la empresa que a menudo es muy difícil en las organizaciones tradicionales y jerárquicas. La necesidad de velocidad obliga a las empresas a seguir diferentes maneras de organizar y construir software.
Datos. La recogida de datos desde productos y servicios. Sin embargo, el desafío es la capacidad de la organización para tomar decisiones inteligentes y oportunas basadas en esos datos.
Ecosistemas. Las organizaciones tendrán ecosistemas cada vez más interdependientes. Como resultado del aumento de la velocidad y de la necesidad de datos, las empresas tendrán que cambiar con frecuencia y de manera agresiva su función y posición en ecosistemas.
Y varias implicaciones:
De la planificación a la Experimentación. Las empresas deben pasar de trabajar con especificaciones detalladas de requisitos a la experimentación continua con los clientes (vamos, un ciclo de vida ágil). Según dice el artículo, no sé de donde saca el dato, pero bueno, la investigación ha demostrado que más de la mitad de las características en un sistema típico de software intensivo nunca o casi nunca son utilizados. Y las necesidades y deseos de los clientes cambian rápidamente.
La modularidad Arquitectura y Flexibilidad. Con la creciente importancia de la velocidad, de la experimentación y la autonomía del equipo, la modularidad y flexibilidad están siendo prioridad, véase la tendencia a micro-servicios.
La refactorización continua. Que vendría a estar relacionado con la parte “iterativa” del ciclo de vida. Para reducir al mínimo el costo de agregar características y casos de uso.
Recopilación de Datos Integral. Las arquitecturas futuras deben asumir que se requiere la recopilación de datos en todos los niveles del sistema y debe integrarse de forma predeterminada.
Proceso de despliegue continuo, así la empresa puede ejecutar más experimentos con los clientes.
Equipos multifuncionales. Te dejo un post, Los equipos modernos de desarrollo son multifuncionales, así disparan la velocidad y la productividad. Esto ya es un clásico, organizaciones tradicionales se basan en jerarquías, que a menudo conduce a retrasar la toma de decisiones y la ejecución debido a los muchos traspasos entre las funciones y decisiones que deben ir hacia arriba y hacia abajo en la jerarquía.
Autogestión. Te dejo un post de 2012, De qué va eso de “equipo ágil auto-organizado”, que verás que no es nada fácil de lograr. El gran tamaño de los sistemas está construyendo en estos días hace que sea cada vez más difícil de manejar sus complejidades. En su lugar, hay que verlas como ecosistemas con varias partes y las unidades organizativas autónomas responsables de las partes.

Javier Garzás

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba