Category Archives: Libros

Patrones de Análisis

Una de las personas que más ha aportado al mundo del desarrollo de software es, sin duda, Martin Fowler.

Analysis Patterns
Martin Fowler; Addison-Wesley Professional 1996

Este autor, en su afán por facilitar dentro de lo posible el desarrollo de software para todo tipo, se ha introducido en las entrañas de lo que es el software de empresa típico y ha definido elementos, objetos, patrones y ayudas específicas que facilitan el análisis, diseño y programación en general de aplicaciones de este tipo. El libro es Analysis Patterns.

La obra nos introduce en el mundo de los patrones, los conceptos y modelos de los negocios e intenta dar una visión general del porqué estos patrones pueden ayudarnos a simplificar la creación de aplicaciones. A través de los capítulos, se van viendo, tema por tema, todos los aspectos que en toda empresa se suelen abordar: contabilidad, plannings, inventario, etc.

Como suele decir Richard Stallman: “para leer buen código hay que leer buen código“; y esta obra la considero un buen sistema de análisis para el que se quiera aventurar a realizar análisis de sistemas de información.

SIP desmitificado

Desde que comencé a trabajar en esto de la informática, hace ya seis años, me he dedicado a entornos que tienen que ver con la VoIP (Voz sobre IP) tocando los protocolos típicos de VoIP como son: SIP, H.323, MGCP (o megaco) y IAX; pero también con interconexiones de tipo RDSI (o ISDN en inglés) a través de BRI, o de E1 a través de PRI.

El caso es que muchos manuales y documentos me ayudaron a comprender los sistemas, su funcionamiento, estructura y elementos que se pueden encontrar en cada uno de los esquemas, o infraestructuras, que se pueden crear con ellos. Sin esta información hubiese sido difícil aprender tan rápidamente todo lo que concierne al mundo de la VoIP y sobre todo al mundo de SIP, uno de los protocolos que más y mejor permiten la convergencia entre los sistemas de telefonía y los sistemas informáticos.

SIP Demystified
Gonzalo Camarillo; McGraw-Hill Professional 2001

El libro que recomiendo es un documento que he leído varias veces y que me ha ayudado como guía en mi trabajo, sobre todo para entender ciertos problemas que se sucedían en los entornos de pruebas y en incidencias ya en producción.

Comienza con una explicación sobre la historia del propio protocolo, cómo surgió. Es interesante saber la historia de la tecnología que usamos, porque así comprendemos sus ventajas e inconvenientes, sus fortalezas y sus carencias.

Es pequeño (no tiene más allá de 264 páginas) pero con mucho contenido muy condensado y repleto de material gráfico que ayuda mucho más a comprender lo que explica el libro en sí.

Recomiendo su lectura a todos aquellos que necesiten trabajar en entornos VoIP con interconexiones SIP.

Kanban y Scrum

En este blog he escrito bastante sobre estos temas, y ahora, después de haber terminado de leer un gran libro, escrito sobre uno de los autores que más ha aportado a estas metodologías con su trabajo incansable, hablo de Henri Kniberg, me complace poder aconsejar la lectura de este libro, que se puede descargar libremente.

Kanban And Scrum

El libro, escrito por Kniberg y Mattias Skarin (otro personaje dentro del mundo de las metodologías ágiles), explora ambas metodologías desde el punto de vista de la comparación. Vamos, que las compara entre sí para sacar los mejor de ambas en cada elemento específico, o cada situación en la que ambas pueden emplearse.

La lectura es muy amena y está plagada de imágenes que ilustran todas las situaciones que se van sucediendo a lo largo del libro, por lo que engancha de principio a fin.

La segunda parte del libro, además, es un ejemplo, con un proyecto real, de cómo se puede emplear kanban en el mundo real. Los problemas que pueden surgir y como este grupo los solventó.

No olvido también el mencionar que está disponible la versión en castellano (y en francés) tal y como la propia página oficial del libro informa. Así como agradecer a la comunidad ágil en español que se coordinase tan bien, bajo la dirección de Ángel Medinilla, para darnos la posibilidad de poder leer tan gran obra en nuestro idioma.

Recomiendo la lectura a todos aquellos que tengan o pertenezcan a un grupo de trabajo.

Programación para Administradores de Sistemas

Cuando estuve estudiando el título de Administración de Sistemas Informáticos es cuando me acerqué a los lenguajes de scripting (por el año 2002), y fue cuando comencé a aprender lenguajes como PHP, Python, Ruby y Perl.

El lenguaje Perl me llamó la atención, sobre el resto, porque había sido un lenguaje creado por Larry Wall, un administrador de sistemas… ¡en un mes!, supongo que lo que creó fue la parte más básica del sistema, pero al mismo tiempo la más importante, ya que, como él mismo comenta, Perl fue la simplificación del uso de herramientas como awk, sed, shell script y C.

En la mayoría de trabajos que he tenido, después de eso, cuando un administrador de sistemas desarrollaba algún proyecto, alguna aplicación o decía que programaba, lo hacía en Perl. No en vano, ha sido considerado por muchas distribuciones, empresas y comunidades, como el lenguaje de facto para las actividades típicas de administración de sistemas, entre las que se encuentran tareas tan vitales como: la instalación del sistema, asistentes de configuración, pasarelas intermedias (como amavis)…

Uno de los grandes miedos de la gente que programa en este lenguaje, es la mítica frase de que Perl es un lenguaje write-only, es decir, de los que se usan solo para escribir código que no hace falta mantener (o de usar y tirar), aunque proyectos grandes y la comunidad en sí manteniendo y ampliando el lenguaje, han demostrado que Perl es un gran lenguaje de programación en el que se pueden desarrollar grandes cosas y darles mantenimiento sin problema ni riesgo.

Programming Perl (3rd Edition)
Larry Wall, Tom Christiansen, Jon Orwant; O'Reilly Media, Inc. 2000

El libro que aconsejo para adentrarse en el mundo de Perl es el que escribió su creador, Larry Wall, aunque a partir de su tercera edición, que está acompañada de mucho más contenido aportado por autores como Tom Christiansen, uno de los primeros que se sumó al mundo y comunidad de Perl; y Jon Orwant, el editor de The Perl Journal, cuya publicación cesó hace ya algunos años.

El libro es algo extenso y asusta al primer vistazo, no en vano son 1070 páginas. Pero una vez se ha abierto y visto el índice, se entiende su extensión y deja de asustar. Realmente, el libro se parte en cinco apartados bien diferenciados:

  • Introducción… bueno, esta la podemos leer a modo informativo, o podemos obviarla. Son unas 50 páginas.
  • Los detalles desagradables… un título un poco extraño, pero se entiende, porque son los detalles del lenguaje en sí, lo que permite, lo que se puede hacer con él, la sintaxis, los elementos… todo. Es la parte más importante del libro, en mi parecer. Unas 350 páginas, más o menos.
  • Perl como Tecnología, nos adentra en lo que hace el intérprete internamente, cómo se puede optimizar su uso, el depurador, los hilos, interfaz con C… sería la parte avanzada del lenguaje. Unas 150 páginas.
  • La Cultura de Perl, es el uso de CPAN, el administrador de paquetes, prácticas comunes, seguridad, haciendo Perl portable entre plataformas, documentación, etc. Un poco de Perl en la comunidad y cómo compartir código en la forma en la que lo hacen muchos. Unas 100 páginas.
  • Material de Referencia… como no podía faltar, toda la referencia de los paquetes básicos de las librerías que trae consigo Perl. Esta quizás es la parte más extensa del libro, pero la que más se puede emplear en el día a día, realmente.

Una lectura muy recomendable para todos aquellos que quieren adentrarse en la programación de Perl de una forma más íntima, conociendo la comunidad, cómo compartir código, cómo aprovechar el código que ya está disponible para Perl y las mejores prácticas de programación en este lenguaje.

Programando en Ruby

Llevo tiempo escribiendo sobre este lenguaje de programación, como una joya redescubierta, ahora me gustaría centrarme en un libro que leí hace tiempo, pero que me resultó muy útil para comprender y adentrarme mejor en este lenguaje.

Programming Ruby
Dave Thomas, Chad Fowler, Andy Hunt; Pragmatic Bookshelf 2008

Este libro, escrito por uno de los firmantes del manifiesto ágil (Dave Thomas) y otro de ellos como co-autor (Andy Hunt), es un libro que tiene en su interior, no solo el aprendizaje del lenguaje en sí, sino de una metodología de programación, una suma de buenas prácticas de programación que se orientan a sacar el mejor partido del lenguaje potenciando sus fortalezas y aprovechándolas con patrones de desarrollo ágiles que mejoran y potencian su uso.

Recomiendo el libro a todos aquellos que quieran adentrarse en la programación en ruby de la mano de personas que desarrollan día a día con él desde hace mucho tiempo, y no se han quedado estancadas (prueba de ello es que este libro es segunda edición y en 2008 salió la tercera edición, el cual no he podido leer aún, pero promete mayor y mejor contenido).

Joe Armstrong y Erlang

Llevo bastante tiempo hablando de Erlang, y nunca había comentado la mejor fuente que había encontrado para descubrir el lenguaje y adentrarse en la programación concurrente de la mano de uno de sus creadores: Joe Armstrong. La fuente, referida como tal, es el libro que escribió Joe Armstrong por la editorial Pragmatic Programmers:

Programming Erlang
Joe Armstrong; Pragmatic Bookshelf 2007

El libro tiene una sección inicial que nos adentra en el problema que se encontró el autor, el porqué es necesario un lenguaje como Erlang y, sobre todo, un acercamiento al mismo desde la perspectiva de alguien que sabe poco o nada de programación. Es una lectura rápida y amena, facilitada por la claridad del código acompañada.

La única pega, quizás, es que el libro se queda corto a nivel de profundidad, es decir, el tema de OTP lo trata de pasada solo viendo un poco los gen_servers, así como la forma de empaquetado y puesta en producción. El entorno, la concurrencia, la distribución, todo queda en un estadio incial que puede abrumar e incluso dar la sensación de ser muy amplio al principio, pero cuando entramos en harina, se ve que nos falta más información. No obstante, tenemos una buena base y se completa todo con la información que el propio Armstrong ha dejado en la web del lenguaje.

Una lectura muy aconsejable para quien se quiera adentrar en la programación en Erlang y su entorno.

Scrum y XP desde las trincheras

Un año y medio después de haber comenzado con las tecnologías y metdologías ágiles, no tengo más que recomendar el libro que me ayudó a comenzar y que ha sido una guía durante todo este tiempo.

Scrum And XP From The Trenches
Henrik Kniberg; Lulu.com 2007

Este libro (y su traducción al castellano), han supuesto una guía práctica de cómo comenzar en el desarrollo ágil tomando a Scrum como referencia y empleando, en lo que se refiere a técnicas de programación, algunos ejemplos de la metodología de Xtreme Programming.

El libro brinda la visión personal de Henri, una persona que ha estado empleando estas metodologías como consultor con muchos grupos de trabajo a lo largo de muchos años de trabajo y, gracias a ello, y a su excelente labor pedagógica, ha conseguido escribir un buen libro, claro, conciso y bastante corto para todo el material que contiene. Son libros que se leen de forma rápida y te preguntas, cuando llegas a su última hoja: ¿ya se acabó?

Extreme Programming explained

Este es uno de esos libros pioneros que hacen que nos planteemos muchas de las cosas que hacemos y, sobretodo, el cómo lo hacemos.

Extreme Programming Explained
Kent Beck; Addison-Wesley Professional 1999

La metodología de la programación extrema fue acuñada por Kent Beck, como un conjunto de buenas prácticas y una forma de realizar los desarrollos, siempre basándose en dar el mayor valor al cliente, tal y cómo se supone que debe de ser siempre.

No obstante, el propio Beck sabe que esta metodología, al igual que las demás, tiene sus ventajas e inconvenientes, ya que si se intenta seguir de forma inflexible, puede resultar en que los proyectos terminen siendo, en algunos casos infructuosos. En este sentido, Beck, nos llama hacia la agilidad como una forma de sacar nuestro sentido común y emplear nuestro saber hacer, y no los procedimientos tipo que aplicar.

Buen libro, de principio a fin, enseña no solo las bases y teorías, sino que plantea, desde el comentario de cómo funcionarían equipos dentro de la metodología, escenarios de cómo se puede aplicar.

TDD, ¡libro en castellano!

Ayer leí un email de la lista de TDD en la que se anunciaba el publicación del libro TDD de Carlos Ble.

Diseño Ágil Con TDD

Es de agradecer que se haya publicado en castellano un libro sobre esta metodología (o técnica) de programación que es el desarrollo dirigido por pruebas (o test driven development). Casi que puedo asegurar que es el único libro escrito hasta el momento en castellano sobre este tema, que ya abordaba hace muchos años Kent Beck, en su libro Xtreme Programming Explained.

El libro de Carlos está cargado de información sobre lo que significa la programación ágil, ser ágil y las ventajas que ofrece, sobre el modelo tradicional este tipo de técnica de programación, que roza a ser incluso una disciplina, la importancia de aprender y renovarse, así como una crítica y justificación al sistema de enseñanza universitario con respecto a la informática, con el cual coincido.

Además, las aportaciones de los co-autores realizadas al libro son de gran calidad, desde el prólogo, escrito por J.M.Beas hasta el Apéndice sobre integración continua, de Fran Reyes Perdomo, así como las aportaciones y correcciones de Juan Gutiérrez Plaza y Gregorio Mena.

Lo mejor es que el libro no es solo teórico, sino que aporta muchos escenarios y ejemplos, con lo que constituye uno de los mejores libros que he leído sobre el tema en bastante tiempo. Por lo que recomiendo su lectura, de principio a fin.

Ruby para programadores de PHP

Mi amigo Dani me indicó una página, ya que estamos más metidos en Ruby on Rails, que nos permitiría tener un sitio de referencia y comparación con las cosas, tal y como las hacíamos en PHP, cómo hacerlas ahora en Ruby on Rails.

Rails For PHP Developers
Derek DeVries, Mike Naberezny; Pragmatic Bookshelf 2008

La idea es muy buena, la página, en inglés, se llamada railsforphp. Los autores tienen también un libro publicado por la editorial Pragmatic Programmers, una editorial con un contenido bibliográfico que, en mi opinión, está alcanzando o superando en calidad a los contenidos que suele presentar y presenta O’Reilly.

En la página se ven secciones, si se busca alguna función específica de PHP o de Rails, se puede ver la forma de uso equivalente en PHP, y cómo se haría en Ruby on Rails. Da consejos y admite comentarios. Quitando que el diseño está muy trabajado, la presentación y secciones, son muy parecidas a la página de referencia de PHP.