Category Archives: Libros Técnicos

Libros sobre programación, ingeniería del software, o cualquier otro tema de aprendizaje (todo menos literatura vamos)

Practical Reporting with Ruby and Rails

practical reporting with ruby and railsPractical Reporting with Ruby and Rails es un libro escrito por David Berube sobre reporting con la ayuda de ruby. Se compone de varios capítulos que van desde generar un gráfico con gruff, generar xml/csv/pdf, importaciones desde feeds, hojas de cálculo o Microsoft Office. Todo esto suena bastante bien, pero es el propio carácter del libro, practical, que hace que pierda bastante puntos por su simpleza y falta de profundidad a la hora de tocar los distintos temas.

Es un libro realmente bueno si lo lees con las expectativas apropiadas, y puede llegar a ser un auténtico fiasco en otros casos. En mi particular caso fue el último escenario.

Ya es la segunda vez que me pasa con libros de esta editorial, Apress. Son libros bien escritos, tratando muchos temas, pero con un nivel bastante bajo en cuanto a profundidad de conceptos y nivel requerido. Esto no es malo, por supuesto, simplemente es algo a tener en cuenta para saber si es un libro que te reportará algún beneficio y satisfacción.

Cada capítulo suele seguir la siguiente estructura: (1) Puesta en contexto del problema a resolver, (2) introducción de herramientas a usar, (3) trozo de código, (4) explicación del código. Donde las dos últimas partes suelen ser prácticamente la totalidad del capítulo. El código suele ser bastante simple y sencillo de entender, pero a pesar de ello tendremos luego un considerable número de páginas para explicar obviedades para cualquiera que haya programado mínimamente en ruby o en reporting en general. Si a esto añadimos que el libro no es muy extenso en páginas (280 aprox.) tenemos que se podría resumir el libro en un listado de referencias a herramientas usadas y 5 o 6 snippets de código interesantes de no más de 200 líneas.

De todas formas, para alguien que esté interesado en estos temas (reporting) y que no tenga mucha experiencia (en reporting, en ruby o en ambos), es un libro bastante bueno, bien redactado, bien explicado (demasiado) y de rápida lectura. En otros casos no lo recomendaría, y personalmente no me ha gustado mucho que digamos.

RESTful Web Services

Portada de “RESTful Web Services”Hace ya un tiempo que me acabé este libro. Su tema principal son los servicios web en general y los acordes a los principios REST en particular.

El libro contiene una 400 páginas, las cuales podrían resumirse y condensarse en una cuarta parte sin problemas, pero el autor continuamente está dando ejemplos y situaciones para plasmar cada concepto que explica. Incluso tenemos implementado, mostrando todo el código, un servicio web completo (gracias en parte a la brevedad de ruby).

¿Qué nos podemos esperar después de leerlo? Comprender de una vez por todas qué es eso del REST, término que asiduamente es malinterpretado y se ha convertido en una de las palabras clave a mencionar para quedar como si entendieses del tema (ya si lo nombras junto con rails, j2ee y [algo] business eres el puto amo).

¿Cuáles son los contenidos? En una primera parte nos habla de los servicios web en general, algo que puede servir para poner en contexto a quien no comprenda o este al tanto de qué y cómo son realmente.

Justo a continuación se nos explica toda la teoría y conceptos relacionados con la arquitectura orientada a recursos (ROA), la base y propósito de todo libro. Luego tenemos una aplicación de estos conceptos, tanto a nivel de diseño como a nivel de implementación. Estos capítulos, totalmente prácticos, sirven para afianzar todo lo anteriormente explicado, pues en pocas páginas el autor diseña e implementa aplicaciones reales (diseña un servicio de mapas, e implementa un agregador tipo del.icio.us). Después tenemos explicaciones concretas de aspectos específicos que podría llegar a tomarse como una referencia para crear servicios web que será realmente útil para cuando volvamos a recurrir al libro en momentos concretos de dudas.

Finalmente se hacen unas comparaciones con los WS-*, para mi sorpresa, sin meterse mucho con ellos (y no será por oportunidades…), pero que después de haber leído todo lo anterior choca bastante como todavía pueden existir cosas tan increíblemente estúpidas y absurdas (¡y que encima todavía se usan!). Para concluir también tendremos el capítulo de rigor sobre ajax y sus implicaciones al usar servicios web rest (pues una aplicación ajax puede tomarse como un mero cliente de un servicio web) y un breve recorrido sobre frameworks existentes que tratan REST (rails en ruby, django en python y restlet en java).

Este es un libro que lo recomiendo encarecidamente a cualquiera que esté o vaya a crear aplicaciones Web (que a día de hoy es como decir a todo el mundo). Incluso para quien crea haber usado exitosamente REST. Pues dada su popularidad creciente, es un término que continuamente se está enseñando y usando erróneamente (me incluyo aquí el primero, y eso que mi pfc iba sobre eso). Ha sido uno de los libros más vendidos del 2007 (de desarrollo de software claro) y no ha recibido pocos elogios que digamos.

Every developer working with the Web needs to read this book

David Heinemeier Hansson, creador de Ruby on Rails

Simplemente, un libro magnifico.

The Pragmatic Programmer

The pragmatic programmerThe Pragmatic Programmer es un conocido libro sobre ingeniería del software que dio comienzo a una serie de libros con planteamientos similares, para programadores pragmáticos.

El libro se mueve en torno a una serie de consejos, ideas y observaciones para desarrolladores. Toca prácticamente todos los puntos en el trabajo diario de un programador, desde las herramientas a usar a cómo implementar incuso cómo actuar y pensar. A decir verdad, muchos capítulos podrían aplicarse a cualquier otra labor y son bastante genéricos.

Al final del libro viene una chuleta con todos los tips que se han ido mencionando, muy curiosa. La mayoría de ellos son bastante razonables, como “Always design for concurrency“, otros son interesantes y sorprendentes, “English is just a programming language”; pero la mayoría son tópicos que cualquiera con un mínimo de experiencia conocerá, “DRY“, “Think about your work“, pero que no viene mal verlos en escrito una vez más.

En general es un libro realmente bueno, y que cualquiera que le guste leer libros técnicos, debería tener en su lista, pues además es muy corto (quitando anexos, poco más de 200pag., letra gorda y fácil lectura). No es un libro donde aprendas cosas concretas, lo definiría más bien como una forma de dialogar sobre el desarrollo y la programación, algo bastante divertido :), aunque en este caso el diálogo es unidireccional de los autores hacia ti, suficiente.

Su principal problema es su extensión, se queda corto, muy corto. No entra en profundidad en ningún aspecto, simplemente estamos dialogando sobre temas. Y en aquellos donde dominas puede resultar incluso molesto (el capítulo sobre herramientas estuve a punto de saltarlo y eso que odio no leer los libros linealmente) puesto que no puedes participar en dicho diálogo. Además la mayoría de temas que trata suelen ser cosas que ya conocerás, pero nunca está de más saber el punto de vista de otro, ¿no crees?.

Lo mejor del libro es que a pesar de que la mayoría de las cosas ya las sabrás, en determinados puntos el autor te sorprende con algo que no esperabas que dijera (seguramente estas “sorpresas” son bastante subjetivas y dependientes del lector), solo por esto, ya lo recomiendo.

Es, en definitiva, un libro sobre filosofía que toca, disimuladamente, temas de ingeniería del software.

Abstractions live longer than details

Tip #53

Head First Design Patterns

La serie de libros Head First de O’Reilly tiene un planteamiento bastante diferente a lo que se suele ver en libros técnicos. Su función y objetivo es hacernos aprender de forma simple y amena. Tratan de exponer cualquier tema de una forma gráfica (pues como dicen en la propia introducción, lo principal es sorprender al lector, al estudiante, para que capte los conceptos y no los olvide), con muchos ejemplos (bastante curiosos, e.g. un simulador de patos), mostrando los detalles que hagan falta (esto incluye explicar tecnologías requeridas, poner el código que haga falta, diagramas, etc…) e incluso tareas a hacer con boli en mano (unir con flechas conceptos, preguntas “truco” o para hacerte pensar, crucigramas, completar código, etc…).

En definitiva, son libros de aprendizaje (ni por asomo de referencia) con una apariencia de primeras que puede parecer un poco infantil, pero con solidos contenidos bien expuestos. Si necesitas aprender algo de forma rápida por necesidad, no creo que sean la mejor opción, pero si quieres aprender algo de una forma amena aunque posiblemente en más tiempo (puesto que tanto dibujo y tanta leche hace aumentar sustancialmente el grosor del libro), esta serie de libros son bastante recomendables, al menos mi primer contacto ha sido bastante exitoso.

Head first Design PatternsEn este Head First Design Patterns, se explican en profundidad casi 15 patrones (los más usuales) usando siempre muchos ejemplos, siempre con cierto toque de humor, dando vuelta a todos los pequeños detalles que pueden surgir e intentando hacer reflexionar al lector sobre los nuevos conceptos que se van enseñando.

Personalmente me hubiese ayudado bastante más el libro si lo hubiese leído hace un par de años, pero aún así y a pesar de conocer creer conocer todos ellos, he descubierto bastante cosas nuevas e interesantes.

Cada capítulo trata sobre un patrón en concreto (o un pequeño conjunto de ellos que están muy relacionados) intentando reaprovechar ejemplos anteriores, finalmente existen un par de capítulos sobre integración de los patrones y la presentación de MVC (el cual es un patrón compuesto por diferentes patrones cooperando entre si), con canción incluida y todo.

chiste sobre métodos abstractosPosiblemente sea de los mejores libros para introducirse en el mundo de los patrones de diseño de una forma simple y eficaz. No lo recomendaría para alguien que me sepa decir las diferentes variantes de un Singleton, identificar qué patrones cooperan y cómo en un MVC, o que me sepa decir más 10 patrones diferentes y clasificarlos (es decir, alguien con experiencia). Pero en caso contrario es una opción muy a tener en cuenta por encima de libros como el clásico de E.Gamma & cia, el cual es muy útil, pero como referencia, y después de tener claro los conceptos básicos de los patrones. A decir verdad, una combinación donde este libro sea la lectura de aprendizaje y el Design Patterns: Elements of Reusable Object-Oriented Software sea el libro de referencia puede ser un gran acierto.

Nuevos libros para la pila

Hace unas semanas, gracias a JavaHispano.org descubrí que Gonzalo de Zaragoza regalaba una serie de libros técnicos que se había leído ya. En aquellos días y con algo de suerte pude escoger el par de libros que más me interesaba, concretamente The complete reference Java Server Faces, y la guía sobre subversion.

Hoy he quedado con él, y después de conseguir llegar a tiempo e interpolar exitosamente su posición respecto al conjunto de gente que le apetece pasear en un día nublado, lluvioso y de -1ºC, que no es poca; ya los tengo en mi pila de libros por leer. Últimamente esta pila no para de crecer y nunca disminuye, quizá sea debido a intentar leer en paralelo varios libros, lo que produce un throughput muy bajo (debido, obviamente, a que solo tengo una unidad de procesamiento), tendré que optimizar este proceso en un futuro próximo.

Libros sobre JSF y SVN

Muchas gracias!