¿Qué libro es el mejor para principiantes en software?

¿Qué libro debo leer para ser un mejor desarrollador? ¿Necesito leer libros?

Creo que es una gran pregunta, y es una que le pregunté a muchos de mis mentores cuando me convertía en ingeniero de software. El problema era que muchas personas sugirieron diferentes libros sobre diferentes temas. Todos los libros que sugirieron eran geniales por derecho propio, pero nadie fue capaz de darme una lista que sería los libros ESENCIALES , los DEBE LEER , que cualquier ingeniero con la esperanza de ser grandioso debería leer.

Bueno, he aprendido mucho de mis mentores y me di cuenta de que todavía tenía mucho que aprender con los diferentes libros que me sugirieron. Decidí desarrollar una rutina para leer un libro al mes en mi campo profesional (ingeniería de software). Con los años, he agregado una lista que, creo, DEBE SER LEIDA para cualquiera que quiera ser un desarrollador de primer nivel.

Ahora déjame decirte lo obvio: solo leer todos estos libros en la lista no te hará un gran desarrollador. Eso vendrá con años de experiencia y aplicando los principios de estos libros en prácticas reales y desarrollando sus habilidades para resolver problemas en el mundo real.

Sin embargo, leer estos libros lo ayudará a evitar los principales escollos y errores que muchos desarrolladores hacen temprano en sus carreras. Desearía que alguien me hubiera contado sobre estos libros recién comenzando, pero tuve la suerte de haberlos encontrado y leído a lo largo de los años. Es posible que haya leído algunos de estos libros en la universidad para sus clases de ciencias de la computación o ingeniería. Quizás en ese momento, no creías que fueran importantes, pero puedo decir de primera mano que he usado y aplicado muchos principios de todos y cada uno de estos libros.

Permítanme señalar también que esta no es una lista exhaustiva. Muchos grandes libros salen cada año. Estos son solo los que han tenido el mayor impacto en mí y en mi carrera. Además, estos son principalmente independientes del idioma y pueden aplicarse utilizando cualquiera de los muchos idiomas de software. (Haré otra publicación con los mejores libros dirigidos a ciertas plataformas y pilas de tecnología)

Bueno, ¡vamos a ello entonces! (redoble de tambores por favor)

LA LISTA

(Todos estos son esenciales, pero los puse en orden descendente de cuáles tuvieron el mayor impacto en mí. También proporcioné el enlace (haga clic en la portada del libro) donde puede comprar el libro en Amazon si está interesado. Lea el comentarios y decide por ti mismo!)

12. Trabajando efectivamente con código heredado

Me encanta este libro porque casi todos los desarrolladores de software, en algún momento de su carrera, tienen que apoyar y trabajar con un sistema heredado. En este libro, Michael Feathers ofrece estrategias de principio a fin para trabajar de manera más efectiva con bases de código heredadas grandes y no probadas. Este libro se basa en el material que Michael creó para sus reconocidos seminarios de Object Mentor: técnicas que Michael ha utilizado en la tutoría para ayudar a cientos de desarrolladores, gerentes técnicos y evaluadores a controlar sus sistemas heredados.

11. El mítico hombre-mes

Este libro es un clásico, pero recientemente revisado y corregido. Lo sorprendente es cuán relevante es el libro para el desarrollo de productos de software. Si está involucrado en software, este libro es de lectura obligatoria. La parte más valiosa del libro, creo, es el capítulo prototipo “plan para tirar”. Si bien el objetivo siempre es hacer lo que sea más grande, mejor y más rápido, es casi un axioma que usted construirá algo que debe descartarse y reelaborarse. Esto sucede cada vez, puedo decirte por experiencia de primera mano. Por lo tanto, es vital planear descartar para que pueda migrar a sus usuarios a lo que siga. Si sueña que el primer producto es EL UNO, corre el riesgo de abandonarlos en un producto que inevitablemente evolucionará. La planificación de tirar a la basura también ayuda a cumplir los objetivos del cronograma al establecer hitos razonables que se pueden obtener.

10. Patrones de diseño

Si planea ser arquitecto o diseñador de un sistema, lo más probable es que deba leer este libro. Aclamado como uno de los mejores libros de desarrollo de software jamás escrito, este libro entra en gran detalle sobre los diferentes patrones de diseño que se han desarrollado a lo largo de los años para ayudar a los ingenieros de software a evitar y manejar los problemas comunes que enfrenta la industria. Seguir las estrategias de este libro le permitirá crear software de mayor calidad, flexible y fácil de mantener. Este libro también se conoce con el nombre de “Gang of Four” en los grupos de software debido a sus famosos cuatro autores que crearon este libro.

9. Programación de perlas (2ª edición)

Este libro es ligeramente diferente de los otros libros en la lista. Yo diría que este libro ayuda a una persona a “pensar como un programador”. Programming Pearls es un compendio de 15 columnas previamente publicado en Comunicaciones de la ACM. Las columnas cubren una amplia gama de temas relacionados con la programación: desde la recopilación de requisitos hasta el ajuste del rendimiento. La atención se centra principalmente en las técnicas y algoritmos de codificación.

Cada columna ha sido reorganizada como un capítulo. Los capítulos generalmente comienzan con la presentación de un problema práctico. Luego se presentan varias soluciones y se utilizan como lecciones para aprender. El estilo de escritura es claro y divertido.

Programming Pearls no es un libro habitual que enseñe nuevos conceptos de programación. Aunque contiene ideas buenas y a veces bastante novedosas, el objetivo del libro no es enseñar algo nuevo, sino ayudarlo a convertirse en un mejor solucionador de problemas.

8. CÓDIGO: El lenguaje oculto del hardware y software de la computadora

Este libro aclara gran parte de la “Magia” que se usa para crear y desarrollar sistemas complejos. Hay tantas abstracciones en estos días que los detalles de bajo nivel a veces son desconocidos para el desarrollador. Aunque es posible que no se encuentre utilizando este libro las 24 horas del día, los 7 días de la semana en la práctica … Creo que es una buena idea tener una idea de lo que está construyendo y cómo funciona toda la orquestación. Puede ser útil cuando necesita abrir esa “caja negra” y profundizar en el software o hardware para corregir un error molesto. “CÓDIGO: El lenguaje oculto del hardware y software de la computadora” de Charles Petzold trata con una serie de conceptos de programación que comienzan desde sistemas numéricos: decimal, octal, binario a lenguajes de alto nivel. El libro explica los protocolos de comunicación basados ​​en paquetes y TCP. Muchos capítulos tratan sobre conceptos de hardware, y cinco capítulos están dedicados al software y enseñan sobre el sistema operativo, la aritmética de coma flotante y las GUI.

7 El arte de la programación de computadoras

Este es otro clásico. Esto fue escrito por el famoso científico informático Profesor Donald Knuth y es muy elogiado por muchos de los mejores programadores de la industria. Incluso se cita a Bill Gates diciendo

Si crees que eres un muy buen programador … lee el Arte de la programación informática [de Knuth] … Definitivamente deberías enviarme un currículum si puedes leer todo”.

El libro comienza con conceptos y técnicas básicas de programación, luego se centra más particularmente en las estructuras de información: la representación de la información dentro de una computadora, las relaciones estructurales entre los elementos de datos y cómo tratarlos de manera eficiente. Las aplicaciones elementales se dan a la simulación, métodos numéricos, computación simbólica, software y diseño de sistemas.

6. Refactorización

La “refactorización” de Martin Fowler se trata de mejorar el diseño del código existente. Es el proceso de cambiar un sistema de software de tal manera que no altera el comportamiento externo del código, pero mejora su estructura interna. Con la refactorización, incluso puede tomar un mal diseño y reelaborarlo en uno bueno. Este libro ofrece una discusión exhaustiva de los principios de refactorización, incluido dónde encontrar oportunidades para la refactorización y cómo configurar las pruebas requeridas. También hay un catálogo de más de 40 refactorizaciones comprobadas con detalles sobre cuándo y por qué usar la refactorización, instrucciones paso a paso para implementarla y un ejemplo que ilustra cómo funciona. El libro está escrito usando Java como su idioma principal, pero Las ideas se aplican a cualquier lenguaje OO.

5. Código limpio

“Código limpio”, escrito por Robert C. Martin, Se divide en tres partes. El primero describe los principios, patrones y prácticas de escribir código limpio. La segunda parte consiste en varios estudios de caso de complejidad creciente. Cada estudio de caso es un ejercicio de limpieza de código, de transformar una base de código que tiene algunos problemas en una que sea sólida y eficiente. La tercera parte es la recompensa: un solo capítulo que contiene una lista de heurísticas y “olores” reunidos al crear los estudios de caso. El resultado es una base de conocimiento que describe la forma en que pensamos cuando escribimos, leemos y limpiamos el código.

4. Introducción a los algoritmos.

Este tiene que ser el mejor libro para comprender y usar algoritmos (que harás mucho en el desarrollo de software). Algunos libros sobre algoritmos son rigurosos pero incompletos; otros cubren masas de material pero carecen de rigor. Introducción a los algoritmos combina de forma exclusiva el rigor y la exhaustividad. El libro cubre una amplia gama de algoritmos en profundidad, pero hace que su diseño y análisis sean accesibles para todos los niveles de lectores. Cada capítulo es relativamente autónomo y puede usarse como una unidad de estudio. Los algoritmos se describen en inglés y en un pseudocódigo diseñado para que cualquiera que haya realizado una pequeña programación pueda leerlo. Las explicaciones se han mantenido elementales sin sacrificar la profundidad de la cobertura o el rigor matemático. La primera edición se convirtió en un texto ampliamente utilizado en universidades de todo el mundo, así como en la referencia estándar para profesionales. La segunda edición presentó nuevos capítulos sobre el papel de los algoritmos, el análisis probabilístico y los algoritmos aleatorios y la programación lineal.

3. Estructura e interpretación de los programas informáticos.

Con un enfoque analítico y riguroso para resolver problemas y técnicas de programación, este libro está orientado a la ingeniería. La estructura e interpretación de los programas informáticos enfatiza el papel central que desempeñan los diferentes enfoques para lidiar con el tiempo en los modelos computacionales. Su enfoque único lo hace apropiado para una introducción a los cursos de informática, así como a los lenguajes de programación y el diseño de programas. El libro explica además los cuatro paradigmas más conocidos de lenguajes de programación: programación imperativa, orientada a objetos, basada en lógica y aplicativa.

2. Programador pragmático

Este fue uno de los primeros libros de programación que leí. Un amigo me lo recomendó en mi primer trabajo profesional. Me alegra que lo haya hecho. Aunque el libro fue escrito en 1999 (creo), los conceptos son la base de cómo desarrollamos un sistema complejo de manera práctica. Los programadores son artesanos capacitados para usar un cierto conjunto de herramientas (editores, administradores de objetos, rastreadores de versiones) para generar un cierto tipo de producto (programas) que operará en algún entorno (sistemas operativos en ensambles de hardware). Como cualquier otro oficio, la programación de computadoras ha generado un cuerpo de sabiduría, la mayoría de los cuales no se enseña en las universidades o en las clases de certificación. La mayoría de los programadores llegan a los llamados trucos del oficio con el tiempo, a través de la experimentación independiente. En The Pragmatic Programmer , Andrew Hunt y David Thomas codifican muchas de las verdades que han descubierto durante sus respectivas carreras como diseñadores de software y escritores de código.

Algunas de las pepitas de pragmatismo de los autores son concretas, y el camino hacia su implementación es claro. Aconsejan a los lectores que aprendan un editor de texto, por ejemplo, y lo usen para todo. También recomiendan el uso de software de seguimiento de versiones incluso para los proyectos más pequeños y promueven los méritos de aprender la sintaxis de expresiones regulares y un lenguaje de manipulación de texto. Otro consejo (quizás más valioso) en el libro es más alegre. En la sección de depuración, se observa que “si ve huellas de pezuñas piense en caballos, no en cebras”. Es decir, sospeche todo, pero comience a buscar problemas en los lugares más destacados. Hay recomendaciones para hacer estimaciones de tiempo y gastos, y para integrar las pruebas en el proceso de desarrollo. Querrá una copia de The Pragmatic Programmer por dos razones: muestra su propia sabiduría acumulada más claramente de lo que alguna vez se molestó en decirlo, y le presenta métodos de trabajo que quizás aún no haya considerado.

1. Código completo 2

Y esto es todo! El libro número uno (en mi humilde opinión) para leer si vas a ser un gran ingeniero de software. Ampliamente considerada una de las mejores guías prácticas de programación, el CÓDIGO COMPLETO original de Steve McConnell ha ayudado a los desarrolladores a escribir un mejor software durante más de una década. Ahora este libro clásico se ha actualizado y revisado completamente con prácticas de vanguardia y cientos de nuevos ejemplos de código, que ilustran el arte y la ciencia de la construcción de software. Capturando el cuerpo de conocimiento disponible de la investigación, la academia y la práctica comercial cotidiana, McConnell sintetiza las técnicas más efectivas y los principios imprescindibles en una guía clara y pragmática. No importa cuál sea su nivel de experiencia, entorno de desarrollo o tamaño del proyecto, este libro informará y estimulará su pensamiento, y lo ayudará a construir el código de la más alta calidad.

para más información puedes seguir mi sitio web Conceptos básicos del código