¿Qué hay en mi estantería de ingeniería de software?

Mantenerse actualizado y mejorar constantemente es parte del trabajo de un ingeniero de software.

Hay muchas formas de estudiar cosas nuevas en Internet, como MOOC, tutoriales y artículos. Sin embargo, a veces un libro físico es la mejor opción , especialmente cuando se trata de una "referencia" que proporciona conocimientos que perdurarán durante los próximos años. Podemos ponerlo en nuestra estantería y revisarlo cada vez que lo consideremos necesario.

Esta es una lista de libros de referencia que guardo en mi biblioteca de ingeniería de software. ¡Espero que pueda ser una fuente de inspiración para todos aquellos que buscan algo interesante para leer! ?

Lo que tengo en mi estantería

Patrones de diseño: elementos de software orientado a objetos reutilizable

Este es un clásico.

En este libro, la llamada "Banda de los cuatro" presenta los 23 patrones de diseño que impulsaron el mundo orientado a objetos durante décadas. Desde entonces se han creado nuevos patrones, pero los del libro se consideran la base de todos los demás patrones.

No es una lectura fácil, pero debería echarle un vistazo para saber dónde encontrar lo que necesita en cada ocasión. Guárdelo en su escritorio y revíselo cuando esté construyendo algo y tenga la sensación de que "lo que estoy haciendo me suena familiar". Probablemente descubrirá que está intentando implementar un patrón de diseño ya descrito en este libro.

Código limpio: un manual de artesanía de software ágil

Leí este libro hace muchos años, pero se me ha quedado grabado desde entonces.

Esta es una gran fuente de mejores prácticas para producir código limpio y legible y evitar los olores del código. El libro se centra principalmente en Java / OOP, pero se pueden aplicar muchos consejos a todos los lenguajes o paradigmas de programación.

Escribir código que se pueda mantener y leer no es un lujo, es algo a lo que todo buen ingeniero de software debería aspirar . Este libro le proporcionará los conocimientos necesarios para que eso suceda.

El tío Bob puede ser un poco extremo a veces, y no estoy de acuerdo con él en todas las técnicas presentadas. Mi sugerencia: léalo y llévese solo lo que crea que es correcto. En cualquier caso, es un libro que vale la pena leer .

¡Aprende Haskell para siempre !: una guía para principiantes

Este es un libro sobre el lenguaje de programación Haskell, entonces, ¿por qué comprarlo y mantenerlo como referencia? Mis razones son:

  • Es un libro muy bien escrito y fácil de leer sobre un tema no tan fácil como la programación funcional.
  • Le brinda la base del pensamiento funcional, no solo la sintaxis de Haskell
  • Haskell es un idioma muy elegante y me gusta

Este es el libro que me introdujo a la programación funcional. Ahora mismo programo principalmente en Scala, pero la transición ha sido mucho más fácil después de aprender los conceptos básicos de Haskell.

La programación funcional no es fácil, pero te abrirá la mente. Puede ser muy teórico, y ponerlo en práctica usando Haskell te ayudará mucho .

También hay dibujos muy bonitos en el libro, así que no tienes excusa para no hojearlo. ?

Teoría de categorías para programadores

Este libro cubre la teoría de categorías , que es la base del paradigma de programación funcional.

El tema es bastante complejo para los no matemáticos, pero el autor ha hecho un gran esfuerzo para hacerlo comprensible para los desarrolladores. Admito que tuve algunas dificultades para leerlo, pero me gustaría repasarlo nuevamente.

Este libro no es necesario para convertirse en un gran programador funcional. Léelo si te gustan los desafíos y quieres profundizar en los fundamentos teóricos de la programación funcional.

Diseño de aplicaciones con uso intensivo de datos: las grandes ideas detrás de sistemas confiables, escalables y mantenibles

Este es mi favorito, ¡quizás porque amo los sistemas distribuidos! :-RE

En este libro, Martin Kleppmann describe todos los aspectos de los sistemas distribuidos, desde la serialización hasta los modelos de consistencia y el consenso, pasando por los distintos motores de bases de datos. También explora nuevas tendencias con respecto a las aplicaciones basadas en datos.

En un mundo de aplicaciones basadas en microservicios nativos de la nube, es fundamental conocer los diversos aspectos de un sistema distribuido. El conocimiento proporcionado por este libro no está ligado a una tecnología específica y será valioso para toda su carrera en ingeniería de software .

Release It !: Diseñe e implemente software listo para producción

Estoy leyendo este ahora.

¿Terminamos una vez que nuestro software se envíe a producción? ¡No, eso es solo el comienzo!

Este libro destaca lo que puede salir mal después de que el software se pone en producción y tiene que enfrentarse a usuarios reales. Describe anti-patrones que pueden socavar la estabilidad de nuestro software, así como soluciones a dichos problemas.

Lo que más me gusta de este libro es que cada capítulo comienza con un ejemplo tomado de la vida real. Luego, el autor analiza los problemas que hicieron que el software fallara en producción. Creo que aprender de ejemplos concretos es un enfoque muy eficaz.

Introducción a los algoritmos

¿Qué puedo decir sobre este libro? Simplemente cómprelo y guárdelo en su escritorio .

Si es un ingeniero de software, es muy probable que haya tenido que estudiar estructuras de datos y algoritmos. No siempre es fácil lidiar con la complejidad o elegir la estructura de datos adecuada.

Cuando surjan dudas, abra este libro y encontrará lo que necesita.

Para la mayoría de la gente (incluyéndome a mí) esta es una lectura muy difícil. Por lo general, solo leo lo que necesito saber en ese momento y mantengo el libro a la vista en mi escritorio.

Hyperfocus: cómo gestionar su atención en un mundo de distracción

Este no es un libro técnico, pero está en el conjunto de lecturas que cambiaron mi vida en mejor.

Nuestro trabajo como ingenieros de software consiste en resolver problemas con la mente. Para ser eficaces en esta tarea, necesitamos la capacidad de concentrarnos por completo en el problema que estamos resolviendo .

Aquí puede encontrar muchas sugerencias y técnicas para maximizar el tiempo que puede concentrarse en una tarea. El autor también analiza la importancia de dejar que su mente divague cuando necesita ser más creativo.

Dominar cómo usar su atención es algo que mejorará no solo su desempeño en el trabajo, sino también todos los demás aspectos de su vida.

Lo que agregaré a mi estantería

El programador pragmático

Este es uno de los libros más famosos sobre desarrollo de software.

Las sugerencias y técnicas presentadas en este libro influyeron positivamente en las carreras de muchos desarrolladores e ingenieros. El libro se publicó en 1999, pero ahora está disponible como edición nueva y actualizada del vigésimo aniversario.

No te puedes perder esto. :-)

Refactorización: mejora del diseño del código existente

Es difícil entregar siempre un código de alta calidad. Los plazos, la urgencia, un mal día afectan la calidad de su trabajo.

Por eso la refactorización es tan importante. Si no pudimos proporcionar calidad la primera vez, podemos mejorarla más tarde para una mejor mantenibilidad. Martin Fowler (uno de mis ídolos en el mundo del desarrollo de software) describe las mejores técnicas para una refactorización eficaz.

Siempre habrá espacio en mi estantería para libros que me ayuden a escribir mejor código.

Conclusión

Esta es mi lista de libros imprescindibles sobre ingeniería de software. De ninguna manera es una lista completa de libros "importantes" en este campo, y estoy seguro de que agregaré más y más libros en los próximos años.

Espero haberle dado algunos buenos consejos sobre el próximo libro que debería leer. ?

¿¡Nos vemos!?