Artículos que hay que leer, los imprescindibles

Cuando he tratado el tema de leer, te he recomendado casi siempre libros. Sin ir más lejos, la última, y más extensa, serie de recomendaciones sobre qué cosas yo leería (re-leería) fue sólo de libros (te dejo abajo lo enlaces a aquella serie). Pero hay un «formato» también muy antiguo al que cada vez le damos menos importancia, y hasta se nos olvida: los artículos

Ranking de libros recomendados (1): agilidad y gestión básica.
Ranking de libros recomendados (2): equipos
Ranking de libros recomendados (3): Product Owner
Ranking de libros recomendados (4): Scrum Master
Ranking de libros recomendados (5): Negocio (management)

Cierto es que en los últimos años el artículo ha sido muy cuestionado (en su día ya traté el tema, por ejemplo, ¿Es el JCR una herramienta de evaluación de la investigación poderosa o un gran error?). Corren otros tiempos, llegó la web, el conocimiento en abierto, información masiva fácilmente accesible para todos (sin pasar por el pago a la web de una editorial), la velocidad en la difusión de conocimiento, etc., y el artículo ha ido resintiéndose de todo ello.
Pero hace muchos años el hoy casi «deprecated» artículo, que frente al libro es un formato más corto y más rápido de escribir, fue un gran motor del conocimiento. Y de aquellos años hay escritas autenticas JOYAS, que han caído en el olvido para la mayoría. Hay viejos artículos fundamentales para entender muchas cosas de esta profesión, de lo que hoy consideramos agilidad, de qué somos los que nos dedicamos al software, etc., que la mayoría no sabe ni que existen y que su lectura es tan obligada como la de muchos libros.
Y hoy te quería hablar de eso, y quería dejarte mi selección de artículos IMPRESCINDIBLES. De hecho podía haber hecho una sección de «rarezas» (Rarezas, nuestra colección sobre el desarrollo software (1), la 2 y la 3) con cada uno de ellos.
Seguro que me dejo alguno, por eso espero que esta sea una lista abierta, ahí vamos…

No Silver Bullet (Fred Brooks, 1986)

Lo he puesto el primero porque es IMPRESCINDIBLE. En el 2009 te dejé un post sobre la parte más fundamental de este artículo: Del conocimiento esencial y del accidental. Brooks dividió en esenciales y accidentales las propiedades del software. Esenciales o propiedades inherentes del software, sin las que el software no sería software, igual que sin cuatro ruedas un coche no sería un coche (complejidad, conformidad, modificabilidad e invisibilidad). Y las accidentales, aspectos no inherentes, como el tipo de lenguaje de programación (el software podría construirse con Java o C#), la marca del gestor de BBDD, etc.
Con el tiempo, la profesión ido creando un amplio cuerpo de conocimiento que nos ha enseñado la mejor manera de trabajar, afrontar o resolver problemas asociados a lo esencial o naturaleza del software. Pero estos, en demasiadas ocasiones, se olvidan, o desconocen, y se buscan, y se ofrecen, “balas de plata”, soluciones desde lo accidental (una determinada herramienta, entorno automático o CASE, cambiar a cierto lenguaje de programación, utilizar cierto el modelo de procesos, etc.).

Programming as Theory Building (Peter Naur, 1985)

Otro de esos que no puedes ir por la vida sin haberlo leído, y menos «de ágil». No me voy a extender aquí porque la semana pasada le dediqué un post a el solito: Comprendiendo qué es crear software (y como no es una actividad de producción). Pero si quieres entender qué es crear software y hacer buen uso de muchas ideas ágiles… tienes que leerlo.

Object Oriented Patterns (Coad, 1992)

En el 92 Coad escribió el primer artículo sobre patrones software (hubo un trabajo antes de Beck y Cunningan, pero no era un artículo). En aquel olvidado artículo Coad comentaba como los métodos para la creación de modelos OO tienden a enfocarse a la construcción de bloques de bajo nivel (clases y objetos), existiendo una clara similitud entre estos y los elementos base descritos por Alexander (el de los patrones de arquitectura, de casas, vamos).

The GOTO considered harmful (Dijkstra, 1968)

La historia de este artículo es muy curiosa, te la conté en 2013 en El primer “meme” del software, o el primer catálogo de malas practicas creando software. En 1964, durante una conferencia, un tal van Wijngaard explicaba la manera de deshacerse de todas las declaraciones GOTO utilizando recursividad. Lo cual dejó muy preocupado Dijkstra porque él sabía que el GOTO era peligroso… pero la recursividad que lo reemplazaba era peor. Dijkstra se pasó la noche re-escribiendo programas para que no tuvieran GOTOs y sin usar la recursividad, usando bucles. En 1968, Dijkstra escribió sus ideas para el resto del mundo y las publicó en: “The GOTO considered harmful”.

Iterative enhancement: A practical technique for software development (Basili y Turner, 1975)

Un artículo que se publicó en IEEE Transactions on Software Engineering, y que es especial porque  cuenta con la primera referencia sobre el ciclo de vida interativo (el ágil es un tipo especial de iterativo e incremental), pero además porque habla de un montón de buenas prácticas que aún hoy para muchos son desconocidas. En Rarezas (4): primera referencia al ciclo de vida por iteraciones te hablé también de él.

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

2 comentarios en “Artículos que hay que leer, los imprescindibles”

Dejar un comentario

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