Hola, soy Ignacio, CTO de Frogmi®. He trabajado en la industria del software durante más de 10 años, pero no estudié ingeniería en ciencias de la computación. De hecho, soy ingeniero eléctrico. Afortunadamente, he tenido excelentes amigos que son ingenieros de software, quienes me recomendaron grandes libros de informática, algunos de los cuales tuvieron un fuerte impacto en mi desarrollo profesional. Dado lo anterior, decidí escribir este artículo compartiendo los libros que más me aportaron, junto con el porqué y lo que más disfruté de ellos.

Understanding Computation, de Tom Stuart

Como pueden imaginar, no tomé cursos como teoría de la computación o lenguajes de programación mientras estudiaba. Así que este libro fue fundamental para aprender esos temas. Understanding Computation es un libro que te muestra cómo funcionan los autómatas, la máquina de Turing, los compiladores y la programación funcional. Pero su característica más destacable es que todos los ejemplos están hechos en ruby, por lo que es sencillo entender cómo funcionan estas cosas. Sin duda, recomiendo este libro si desean aprender sobre estos temas por primera vez, como yo, o si quieren revisarlos siguiendo este nuevo enfoque en ruby.

Clean Architecture por Robert C., Martin

Este libro explica cómo diseñar software escalable y fácil de mantener. Presenta los tres principales paradigmas de los lenguajes de programación: procedural, orientado a objetos y funcional. Luego, describe cómo aplicar algunos principios de diseño útiles, como los principios SOLID.
Lo que más me ha gustado de este libro es el concepto de que la lógica de negocio nunca debe depender de los detalles (las bases de datos, los frameworks, la UI son detalles), y la forma habitual de resolverlo es utilizando la inversión de dependencias.

Agile Software Development, Principles, Patterns, and Practices por Robert C., Martin

Siguiendo a Clean Architecture, éste es otro libro de Robert C. Martin (también conocido como Tío Bob). En este libro, el tío Bob explica los principios SOLID y cómo utilizar muchos patrones de diseño prácticos, proporcionando excelentes ejemplos (y mucho código). Gracias a este libro, entendí realmente por qué la POO es esencial para construir software escalable. A pesar de ser de 2002, este libro sigue siendo relevante hoy en día.

Bonus: el libro tiene una transcripción de la sesión de paisajístico programming del tío Bob que es muy útil para entender el valor de la programación en parejas.

Refactoring por Martin Fowler

La refactorización es el proceso de mejorar el código sin cambiar sus especificaciones funcionales, lo que significa que las pruebas existentes no se modifican. La forma de conseguirlo es siguiendo la secuencia: hacer pequeños cambios y ejecutar pruebas; hacer pequeños cambios y ejecutar pruebas; y así sucesivamente. Este libro es un catálogo de los «pequeños cambios» más comunes para hacer refactorización. Además, encontrarás un ejemplo de refactorización paso a paso en la introducción.

Peopleware – por Tom DeMarco & Timothy Lister

Este libro no es tan técnico como los otros de mi lista, pero lo recomiendo absolutamente. Escuché a alguien decir que nosotros, los programadores, somos más traductores que otra cosa. Nuestro trabajo consiste en entender lo que la gente necesita y escribirlo en un lenguaje que un computador pueda entender, y eso es, sin duda, una habilidad social. En este libro, DeMarco y Lister nos muestran, con datos, cómo la mayoría de los problemas en el desarrollo de software no son técnicos sino sociológicos.

Espero que estas recomendaciones te sean tan útiles como lo fueron para mí.
Si quieres hablar de ellas, estaré encantado de escucharte. Solo tienes que escribirme =)

En caso de que quieras trabajar con nosotros y unirte a Frogmi®, ¡siempre estamos buscando nuevos talentos! Consulta nuestras ofertas de trabajo para desarrolladores aquí.