En este vídeo, Mary Poppendieck nos explica algunos de los principios básicos de la Ingeniería de Software que siguen siendo tan válidos hoy como hace 50-60 años cuando nació esta ingeniería (y el nombre con el que se bautizó en esta conferencia de la OTAN en 1968) y algunos de los errores que no debemos repetir.

Mary recorre la historia de la tecnología desde los 1960 hasta hoy y como los diferentes problemas y fallos que se fueron encontrando han sido el aprendizaje ideal para muchas de las buenas prácticas que seguimos hoy en día.

Por ejemplo, de la década de los 1960, Mary destaca la importancia de la arquitectura (en esos tiempos, principalmente la arquitectura de las incipientes redes), la importancia de que la arquitectura del sistema sea consistente con la de la organización detrás del mismo (Conway’s law) y la necesidad de evitar la propagación de errores en cascada.

 

 

De los 1970s, Mary destaca la responsabilidad de los ingenieros, el diseño presuponiendo que todo lo que puede ir mal irá mal, y la explosión de la programación estructurada.

Ingeniería de software en los 1970

 

En los 1980 vimos el boom de los ordenadores personales y las lenguajes de programación de cuarta generación lo que hizo que algunos empezarán a decir que los programadores perderían su trabajo (algo que hemos vuelto a oír insistentemente hace poco). Por suerte, en seguida se dieron cuenta que estos lenguajes de más alto nivel permitían tratar problemas más complejos para los que se seguía necesitando expertos. En cuanto a las buenas prácticas que Mary destaca de esa época, tenemos la importancia de la optimización y ejecución de procesos, sobretodo orientada a los resultados del proceso y, como decíamos, la capacidad de tratar cada vez problemas más complejos.

Llegamos a los 90. Ahí fue cuando yo mismo empecé a trabajar con la arquitectura estrella de la época, la arquitectura cliente-servidor.

arquitectura cliente servidor

También fue en los 90 donde empezó la explosión del software libre y a preguntarnos como el modelo “bazar” del software libre podía ser una práctica efectiva de Ingeniería de Software.

Estas nuevas discusiones sobre metodologías (más allá del hasta ese momento estándar: el desarrollo en cascada) se intensificaron en los 2000 con la aparición de las metodos ágiles y dieron lugar a nuevas prácticas, incluyendo una nueva “mala” práctica, la aparición de todos estos product owners, customer representative,… que añaden más ruido que nada al proceso. Según su opinión (y la mía 🙂 ).

Ingeniería de software en los 2000

La década pasada (2010) fue la gran explosión de la integración continua y todas sus variantes y de nuevas arquitectura distribuidas como los microservicios (con las implicaciones de estos cambios en la coordinación de los equipos de desarrollo).

 

¿Cuáles serán los temas principales de esta década? Según Mary, la COVID nos ha enseñado que tenemos también que preparar y diseñar nuestras infraestructuras para eventos excepcionales. Añadir resiliencia a todos nuestros proyectos.

 

Si queréis saber más acerca de las ideas y visión de Mary acerca del desarrollo de software, os recomiendo su libro Lean Software Development.  Muy recomendable también mirar esta otra colección de vídeos de los pioneros de la Ingeniería de Software.