The Mythical Man Month and Other Essays on Software Engineering – Anniversary Edition

Pocos libros tienen la fama y popularidad de The Mythical Man Month. Hace tiempo ya que quería leer este libro sobre la ingeniería del software y aprovechando la destrucción de fronteras de Amazon Reino Unido, me hice con mi copia.

The Mythical Man Month es una colección de ensayos sobre la construcción de programas inspirada en gran medida por el trabajo el autor, Frederick Brooks en el desarrollo de OS/360, el sistema operativo del System/360 de IBM (del paleolítico de los 60). Brooks analiza sus experiencias, las contrasta con las de otros colegas y ofrece su opinión. Por mucho que nos separan casi 40 años de la fecha de publicación de la primera edición del libro, pocas ideas del libro han quedado obsoletas (en esta edición especial de aniversario, el autor añade al libro contenido comentando estos aspectos). Las predicciones de Brooks, que parten de un análisis de qué factores de la ingeniería del software eran limitaciones de los sistemas de la época y cuáles eran problemas intrínsecos, son precisas, y son reconfirmadas en “No Silver Bullet”, un ensayo suyo del 86 añadido al libro en el que postula que no existen las soluciones “milagro”.

Lógicamente, sí que hay muchas partes del libro que resultan ridículas hoy en día (discusiones sobre microfilms, como encajar programas en la limitada capacidad de las máquinas de los 60, etc.), y ciertas partes de sus argumentos han quedado obsoletas por las prácticas modernas- si bien es cierto que podemos rastrear los orígenes de estas novedades en propuestas de Brooks en el libro- es interesante re-analizar todas estas nuevas tendencias en el campo tras haber leído The Mythical Man Month.

Otra crítica que se podría dirigir al libro (y que de hecho Brooks recibió, tal como explica en el libro), es que gran parte de él es “sentido común”. Ciertamente, sí (y más en este siglo), pero sigue siendo necesario escribir el sentido común en algún sitio, y además, hay muchísimo en el libro que refuerza este sentido común- pruebas, estudios, razonamientos, etc.- que le dan más fuerza y vitalidad. Brooks también aporta mucho más que sentido común; sus ideas sobre composición de equipos son claras y razonadas, e imbuirnos de su filosofía es útil y valioso.

Además, Brooks tiene estilo escribiendo. Los ensayos se enlazan naturalmente, sabe darles vida mediante sus vivencias y consigue que el libro no sea aburrido y que las ideas nos lleguen frescas a la cabeza.

En definitiva, me uno al corrillo de gente que ha leído el libro y, quién sabe, puede que al de los que aplican sus ideas.

Database in Depth – Relational Theory for Practitioners

Database in Depth es un libro del mítico C. J. Date, que ha publicado una barbaridad de libros sobre bases de datos relacionales.

Yo me hallaba buscando un libro para avanzar mis conocimientos de bases de datos; principalmente para mejorar los diseños de esquemas y la manera de trabajar con ellos- seguramente desde un punto de vista teórico pero aplicable a nivel práctico.

En casi todos los mentideros de Internet le dirigen a uno hacia los libros de Date. La complicación es escoger uno, ya que aparentemente todos tienen temáticas y contenidos muy similares. Finalmente, me decidí por Database in Depth porque todo parecía indicar que era el que mejor ajustaba a mis intenciones.

En realidad, ahora creo que no lo es.

Database in Depth parte de la definición estricta del modelo relacional, enunciando y rebatiendo errores populares en la interpretación de las sagradas escrituras de Codd, y apuntando todos los pecados del SQL y sus implementaciones. Esto es interesante, ya que lo hace señalando las inconsistencias del SQL (por ejemplo, defiende la tesis de que NULL no debería existir,  a partir de contradicciones derivadas de su uso) y sus carencias.

Esto tiene un interés práctico, ya que posiblemente se puedan conseguir mejores (y sobre todo, más puros) modelos de datos intentándonos ajustar al modelo relacional verdadero, pero tiene el peligro de que, realmente, no existen implementaciones de éste. En efecto, Date defiende la intercambiabilidad de tablas y vistas, pero pocos gestores de bases de datos implementan actualizaciones sobre vistas, con lo que no se puede explotar este concepto como se debiera (e intentarlo puede llevarnos por el mal camino).

Date también trata temas de normalización, y su explicación es clara e interesante, y llena de argumentos nuevos para mi contra la popular denormalización (por ejemplo, apunta a las dificultades de escribir consultas correctas sobre esquemas denormalizados que estoy seguro que se le han escapado a más de uno), y que son bastante más aplicables a las implementaciones existentes.

En cuanto a la redacción del libro, Date es conciso y claro. No tiene miedo de expresar sus opiniones, pero creo que especifica muy bien cuando está siendo subjetivo. El tratamiento matemático de la teoría puede asustar a alguno, pero es completo y comprensible.

A parte de esto, el libro se me ha quedado corto. El libro no trata (o al menos yo no he sabido extraerlo) temas que me interesaban como el uso de claves artificiales, las consultas y la programación en general sobre bases de datos. A pesar de ello, los 19 eurillos que cuesta son relativamente económicos para un libro técnico, y al menos el contenido teórico ya los vale.