La mejor respuesta
Obviamente, todos tienen sus propias preferencias. Yo mismo incluido. Como la superposición es limitada, uno debe preguntarse qué tan «debe leer» los libros. 🙂 Sin embargo, siempre es divertido producir una lista.
- El mes del hombre mítico
- Codificación segura en C y C ++, segunda edición (solo se aplica a los desarrolladores de C y C ++, aunque hay una versión para Java; con Ada, generalmente solo necesitas a John Manual de Barnes: Amazon.co.uk: John Barnes: 9781107424814: Libros )
- Lógicas del programa para compiladores certificados: Andrew W. Appel, Robert Dockins, Aquinas Hobor, Lennart Beringer, Josiah Dodds, Gordon Stewart, Sandrine Blazy, Xavier Leroy: 9781107048010: Amazon.com: Books
- El arte de la programación informática, vol. 1: Fundamental Algorithms, 3rd Edition: 9780201896831: Computer Science Books @ Amazon.com
- Art of Computer Programming, Volumen 2: Algoritmos seminuméricos (3.ª edición): Donald E. Knuth: 0785342896848: Amazon.com: libros
- El arte de la programación informática: volumen 3: clasificación and Searching (2nd Edition): Donald E. Knuth: 9780201896855: Amazon.com: Libros
- Redes de Petri coloreadas: modelado y validación de Concurrente | Kurt Jensen | Springer
- TCP / IP ilustrado, volumen 1: los protocolos
- Programación de red Unix, volumen 1: API de redes de sockets (3.ª edición): W. Richard Stevens, Bill Fenner, Andrew M. Rudoff: 9780131411555: Amazon.com: Books
- Programación con subprocesos POSIX: David R. Butenhof: 0785342633924: Amazon.com: Libros
Obviamente, no todos estos libros se aplican a todas las personas. Estoy lo suficientemente loco como para abordar el campo en su conjunto, así que tengo todos estos y muchos más. Sin embargo, esta selección es suficiente para obtener un conocimiento firme de programación sólida, algoritmos, redes, modelado de sistemas y varios modelos de desarrollo de software. Áreas que son lo suficientemente significativas como para que los ingenieros de software deban prestarles atención.
Respuesta
Aquí supondré que estamos hablando de un ingeniero de software que logró la competencia técnica en la escuela, bootcamp o cualquier otra oportunidad de aprendizaje.
Los algoritmos son realmente importantes y el libro “ Introducción a los algoritmos ” es una lectura obligada. Creo que tener una sólida comprensión del diseño de software y el diseño orientado a objetos también es fundamental, y mi Biblia sigue siendo el libro “ Patrones de diseño: elementos de software reutilizable orientado a objetos . » Sus ejemplos en Smalltalk no lo hacen el más fácil de leer hoy en día, sin embargo, no conozco ningún otro libro con tanta profundidad y amplitud sobre el tema.
He conocido a muchos ingenieros que comienzan en el lugar de trabajo. , y noté algunas lagunas a lo largo de los años, por lo que me gustaría sugerir libros para cada una de estas áreas.
Los nuevos ingenieros tienden a no entender la concurrencia sin importar el idioma. El concepto de ejecutar varios subprocesos en paralelo mientras se proporciona el nivel correcto de sincronización entre ellos no es fácil de comprender. Personalmente, aprendí mucho leyendo “ Concurrencia de Java en la práctica ” proveniente de una experiencia en Java. También hay una buena sección sobre simultaneidad en « Effective Java ,» la lectura obligada sobre cómo codificar adecuadamente en Java.
Cyber -La seguridad es finalmente un tema candente en la actualidad. Por desgracia, los ingenieros jóvenes tienden a no estar al tanto de los conceptos de seguridad aplicables a su código. Un buen lugar para comenzar es leer la lista de los 10 principales de OWASP y profundizar en cada vulnerabilidad de la aplicación. Soy un gran admirador de “ 24 pecados capitales de la seguridad del software: fallas de programación y cómo solucionarlas ”.
Los nuevos ingenieros tienden a centrarse en la codificación. Creen que la codificación es lo que importa y quieren producir un buen código rápido, a veces confiando en un código difícil de leer porque pueden escribirlo de manera más concisa. Solo hay dos problemas con ese pensamiento: ¡cada ingeniero de software crea errores y los ingenieros de software trabajan mejor en equipo! La calidad es importante y la mantenibilidad también es importante. Personalmente, me gustan los libros «Trabajar de manera efectiva con código heredado» que hablan sobre las pruebas y la necesidad de realizar pruebas para mejorar el código. “ Código limpio: un manual de artesanía de software ágil ” aborda el tema de la capacidad de mantenimiento, a veces con un punto de vista extremo, lo que lo convierte en un gran libro para leer y discutir en equipo.
Los ingenieros nuevos, especialmente los que han terminado la universidad, pueden tener dificultades para adaptarse al lugar de trabajo y a su nuevo trabajo. Esto es cierto para cualquier ingeniero, en realidad, para cualquiera, que también comience un nuevo trabajo. Existe este gran libro “ Los primeros 90 días: estrategias comprobadas para ponerse al día más rápido y de forma más inteligente ” que me enseñó varios conceptos sobre cómo empezar en un nuevo trabajo, y en particular la necesidad de estructura. La estructura es genial. Es reconfortante, especialmente en un entorno nuevo. Obtengo resultados consistentes aplicando la misma receta como cuando hago un pastel con mi hija. Cuando comencé en Wayfair hace once meses en el equipo de aplicaciones nativas, decidí hacer preguntas bastante genéricas pero consistentes a mi llegada para conocer el terreno. Estas preguntas no solo me dieron una idea de lo que estaba pasando, sino que me dijeron mucho sobre las personas con las que me estaba reuniendo. Realicé mi misión de búsqueda de hechos durante aproximadamente un mes utilizando el mismo cuestionario cada 1: 1, y comencé a enumerar mis áreas de enfoque desde el primer día.
He estado en el desarrollo de software durante más de veinte años, leyendo libros de liderazgo durante los últimos diez años, así que no dude en preguntarme sobre libros de liderazgo si prefiere lecturas más recientes.