Los 10 libros que todo programador debería leer, sin excusas

En su día, ya publiqué una lista de los 10 libros sobre programación que, personalmente, considero que todo desarrollador debería leer. Esta vez, vía Slashdot, os traigo una lista votada por los miles de usuarios de Stack Overflow, EL sitio al que dirigirse cuando uno tiene alguna pregunta sobre programación. Me alegra saber que coincidimos en algún libro.

Para no aburriros repitiendo mis impresiones, cada título viene acompañado con la traducción del comentario que de cada libro hicieron los usuarios que los propusieron. Todo el crédito es suyo.

Code Complete

La enciclopedia de las buenas prácticas a la hora de programar. «Code Complete» se centra principalmente en la artesanía individual — todas esas cosas que, una a una, forman lo que instintivamente identificamos como «escribir código limpio». Es el tipo de libro que dedica 50 páginas a hablar de la organización del código y de los espacios en blanco.

The Pragmatic Programmer

Un gran libro para todos aquellos programadores que han aprendido la mecánica de la programación, quizás en la universidad, pero no saben muy bien cómo continuar. Es como la diferencia entre el dibujo técnico y la arquitectura. Lo que aprendiste en aquella clase de la universidad era dibujo técnico, ahora puedes dibujar perfectamente, pero si todavía sientes que no sabrías por dónde empezar si alguien te propusiera desarrollar un cliente P2P de cero, este es justo el libro que necesitas.

Structure and Interpretation of Computer Programs

Personalmente, «Structure and Interpretation of Computer Programs» es, de lejos, el libro sobre programación que más me ha influenciado de todos los que he leído.

Hay clásicos como «Code Complete», «Refactoring» y «Design Patterns» que te enseñan hábitos de trabajo efectivos y los detalles más minuciosos del oficio. Otros, como «Peopleware», «Psychology of Computer Programming» y «The Mythical Man-Month» ahondan en los aspectos psicosociales del desarrollo de software. Hay numerosos libros dedicados a los algoritmos. Todos ellos tienen su lugar.

Sin embargo, SICP, juega en una liga distinta. Es un libro que te iluminará. Evocará en ti una pasión por escribir programas hermosos. Es más, te enseñará a reconocer y apreciar esa belleza. Te dejará en un estado de asombro y con una insaciable sed por aprender. Otros libros pueden hacer que seas mejor programador; este libro te convertirá en programador.

Y entretanto, aprenderás un par de cosas sobre programación funcional (los efectos colaterales no se introducen hasta el capítulo tres), evaluación perezosa, metaprogramación (bueno, abstracciones metalingüisticas), máquinas virtuales, intérpretes, y compiladores.

Algunos piensan que SICP no es un libro para principiantes. Probablemente yo no habría apreciado el libro en su totalidad de no haber tenido una cierta experiencia previa, pero sí lo recomiendo encarecidamente para principantes. Al fin y al cabo, el libro se escribió para el famoso 6.001, el curso de introducción a la programación del MIT. Puede requerir un cierto esfuerzo mental (especialmente si haces los ejercicios – cosa que deberías), pero el premio compensa el esfuerzo con creces.

¿Todavía no estás convencido? Lee el prólogo o el prefacio a la primera edición. El texto completo está disponible gratis en la web e incluso tienes las clases en vídeo para acompañarlo.

The C Programming Language

Es conciso, fácil de leer, y te enseñará tres cosas: el lenguaje de programación C, cómo pensar como un programador, y el bajo nivel del modelo computacional. (Es importante entender qué ocurre entre bambalinas)

Introduction to Algorithms

«Introduction to algorithms» (Cormen, Leiserson, Rivest, Stein) también conocido como CLRS.

«Code Complete» te enseña a programar correctamente, «The Mythical Man-Month» te enseña a gestionar correctamente, «Design Patterns» te enseña a diseñar correctamente… Este libro te enseña a escribir pensar algoritmos.

En mi mente, el código es sólo una herramienta, no la esencia. La parte principal del desarrollo de software (en mi opinión) es la creación de nuevos algoritmos y la re-implementación de algoritmos ya existentes. El resto es sólo ensamblar piezas de Lego o crear capas de «gestión». Todavía sueño con el trabajo en el que me dejen invertir la mayor parte de mi tiempo (>50%) en escribir algoritmos, dejando los detalles de gestión para otra gente…

Refactoring: Improving the Design of Existing Code

Creo que tendría que recomendar «Refactoring: Improving the Design of Existing Code».

Design patterns : elements of reusable object-oriented software

Personalmente creo que «Design Patterns» de The Gang of Four es un libro muy útil. No trata acerca de los «meta» aspectos de la programación como muchas de las otras sugerencias, pero enfatiza el encapsular buenas técnicas de programación en forma de patrones, y ha animado a otros a desarrollar nuevos patrones y anti patrones con los que tener un idioma común a la hora de hablar sobre programación.

The Mythical Man-Month

En el podcast número 12, Jeff y Joel sugirieron un millón de libros recomendados. Yo, por mi parte, no puedo dejar de recomendar «The Mythical Man-Month».

The Art of Computer Programming,

«The Art of Computer Programming», aunque sólo sea por el esfuerzo que Knuth ha puesto en escribirlo.

Compilers: Principles, Techniques and Tools

Me sorprende que nadie haya mencionado el libro del dragón. Nunca olvidaré la portada de la primera edición. Este libro me hizo darme cuenta de lo realmente mágicos que son los compiladores. 🙂

90 comentarios en «Los 10 libros que todo programador debería leer, sin excusas»

  1. Pingback: Los 10 Mejores Libros De Programación Que NUNCA Verás En Las Estanterías

  2. Pingback: Pesadilla en la oficina

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.