En esta ocasión os vengo a hablar de un tema del que llevo queriendo unos días plantear un post. Ha pasado mucho desde que entré en este mundillo de la ingeniería informática y siempre vuelvo la vista atrás y recuerdo mis primeros días en el grado superior, luego los años en la universidad; los primeros pasos en la programación, esos primeros desafíos que fueran dando paso a nuevos y mayores desafíos… hasta llegar a día de hoy. De este vertiginoso camino ha habido ciertos libros que, ya sea por el momento en que llegaron, o bien por su contenido me abrieron la mente (y las puertas) a esta profesión y han hecho de mi gran parte de lo que soy a día de hoy.
Me gustaría en este post mencionar los libros que más me han influenciado y que mas he leído a lo largo de mi prolongada curva de aprendizaje. Pensé. en un principio en hacer un top 5, pero odiaría tener que ponerles un ranking, y mas con los grandes autores que hay detrás de ellos. Así que en lugar de eso voy a seguir un criterio cronológico en función del orden en el cual llegaron a mis manos. ¡Vamos al líos!.
1. El Lenguaje de Programación C
Denis Ritchie nos dejó hará ya 10 años, por aquel 2011 cuando yo aún cursaba mis estudios universitarios. Este libro llegó con mi primer lenguaje de programación C, un lenguaje de bastante bajo nivel con el que aprendí a programar mis primeros programas en el modulo de ASI (Administración de Sistemas Informáticos), y años después en las primeras asignaturas de programación de la carrera. Cuantas horas tratando de comprender los punteros, tratando de que compilaran mis programas.
El libro en cuestión tiene una estructura que lo hace ideal para cualquiera que desee iniciarse en el lenguaje y la programación: comienza con una base con los tipos, declaraciones y va metiéndole complejidad hasta acabar en sus últimos capítulos hablando de distintas bibliotecas de C. Una cosa que recuerdo que me gustó mucho del libro, aparte de la forma en la que explicaba cada una de las partes del lenguaje y de la programación estructurada, es que incluía muchísimos ejercicios que te servían como desafío para afianzar tus conocimientos. Sinceramente, no se me ocurre mejor libro para haber empezado a meterme en el mundo del desarrollo.
Hoy por hoy habrá libros mas completos y mejores para aprender a programar y para aprender c, pero este lo guardo en una estantería pues para mi fue un libro que me marcó el pistoletazo de salida a mi carrera como desarrollador.
2. Fundamentos de C++
De la mano de Gerardo Aburruzaga García, Inmaculada Medina Bulo y Francisco Palomo Lozano; profesores de la mano me fue impartida la asignatura POO (Programación Orientada a Objetos) de mi Universidad de Cádiz, este libro nos mete de cabeza en el paradigma de la orientación a objetos de la mano de C++ que tras el libro anteriormente citado supuso un importante avance en mis conocimientos. Este libro combina conceptos de herencia, polimorfismo… con toda la sintaxis de este lenguaje de programación, en el que además tuve que desenvolverme para mi aprendizaje en las Estructuras de Datos lineales y no lineales.
Este libro ocupa un lugar junto al anteriormente citado, repleto de anotaciones y subrayado. También tiene diversos ejercicios y nos proporciona conocimientos muy interesantes a la hora de introducirnos un paso mas en el mundillo del desarrollo.
3. Fundamentos de Algoritmia
Este libro de Gilles Brassard y Paul Bratley no está centrado en ningún lenguaje de programación, nos trae algoritmia en estado puro. Inicialmente se nos trasmite una breve base matemática, los órdenes asintóticas, la eficiencia… etc. A través de sus más de 400 páginas tenemos desde algoritmos de ordenación, estructuras de datos, problemas diversos (Aún recuerdo de la facultad el problema de los enanos, la cueva de dragón y la mochila jajaja), el del cambio de moneda y un sinfín de algoritmos muy utilizados en diversos campos de la computación. Un recorrido por la Algoritmia Básica que también cambió muchísimo mi percepción de los algoritmos al a hora de desarrollar cualquier funcionalidad.
La lectura de este libro requiere acostumbrarse a cierta notación matemática que utiliza el autor, a órdenes asintóticas y su forma de definir algoritmos mediante una especie de pseudocódigo. Una vez te hace a ellas te plantea una introducción muy completa al mundo de la algoritmia y a las estructuras de datos.
4. Patrones de Diseño
Toda una amplia recopilación de patrones de diseño para aplicar una vez ya se tiene dominada la orientación a objetos. Este libro, es como un libro de recetas, en él que vamos a conocer un gran número de patrones de diseño. Nos exponen el patrón de diseño, el problema que resuelve, cómo lo hace y algunos ejemplos reales de su uso. Todo ello de una forma muy cómo de leer.
Como curiosidad indicar que gran parte del contenido de este libro se encuentra disponible en la web Refactoring guru.
A día de hoy aún recurro a él en muchas ocasiones o como curiosidad.
5. Clean code
Este es sin duda el libro que más me ha cambiado mi concepción a la hora desarrollar. En él se nos expone cómo a partir de una época de crisis en el desarrollo de software surgen una serie de problema a la hora de generar código y como mediante principios, anti-patrones y diversas técnicas se persigue conseguir que como desarrolladores seamos capaces de desarrollar un código limpio, legible, mantenible, testeable.. que de gusto leerlo.
A nivel personal este libro cambió totalmente mi forma de programar en todos los lenguajes, y tiene una serie de premisas que se me quedaron grabadas a fuego. Desarrollar código limpio, es algo que todo desarrollador debería llevas intrínseco en su forma de trabajas.
El libro nos plantea a partir de la larga experiencia como desarrollador del autor lo aprendido a la hora de mejorar la calidad del código, de refactorizar, de hacer código simple, pequeño, sin repeticiones… etc. De todos los libros de este listado este es el que más me ha aportado.
6. Pensando en Java
Este libro llegó en mi última etapa universitaria, fue mi toma de contacto en el lenguaje de programación presente en todos los proyectos en los que he estado hasta la fecha. Reforzó lo aprendido en C++ de orientación a objetos, y me enseño grandes cosas de este lenguaje de programación. Aunque ha llovido muchísimo desde que leí este libro, hay muchisimas versiones nuevos, muchisimos cambios tanto en en el lenguaje en sí como en la jvm.
Estoy seguro que a día de hoy habrá libro mucho mas actuales, y mas completos, pero este llegó justo en el momento idóneo y me ayudó en mi proyecto de fin de carrera y en mis primeros años como desarrollador.
7. Arquitectura Limpia
Y finalizando este listado, otro libro del tio Bob. En esta ocasión Arquitectura Limpia, libro en el cual se nos muestra un recorrido por los distintos paradigmas de programación y arquitecturas hasta finalmente mostrar la Arquitectura Limpia y como implantarla. Este libro fue todo un hallazgo, y me hizo sentir un gran interés por el mundo de la arquitectura de software.
¿No hay mas libros?
Ha habido y habrá muchos mas libros, a nivel de Javascript, Node, Angular, Typescript… de bases de datos (Mongo, MySql, Oracle), de sistemas operativos, testing. Y más libros que habrá en el futuro. Sería interminable citarlos todos, pero en general y haciendo una vista atrás yo creo que estos 7 pueden ser los que a nivel personal y profesional más me marcaron en todo este arduo camino. Espero que si conocíais alguno y os pica la curiosidad os sirva de ayuda, y si habéis llegado hasta aquí os haya resultado al menos curioso la lectura de este post.