¿Cuál es el libro más influyente que todo progtwigdor debería leer?

Si pudieras retroceder en el tiempo y decirte que lees un libro específico al comienzo de tu carrera como desarrollador, ¿qué libro sería?

Espero que esta lista sea variada y cubra una amplia gama de cosas.

Para buscar: use el cuadro de búsqueda en la esquina superior derecha. Para buscar las respuestas de la pregunta actual, use inquestion:this . Por ejemplo:

 inquestion:this "Code Complete" 

  • Code Complete (2da edición) por Steve McConnell
  • El progtwigdor pragmático
  • Estructura e Interpretación de Progtwigs de Computadora
  • El lenguaje de progtwigción C por Kernighan y Ritchie
  • Introducción a los algoritmos por Cormen, Leiserson, Rivest & Stein
  • Patrones de diseño por la pandilla de los cuatro
  • Refactorización: mejorar el diseño del código existente
  • El mes del hombre mítico
  • El arte de la progtwigción de computadoras por Donald Knuth
  • Comstackdores: Principios, técnicas y herramientas de Alfred V. Aho, Ravi Sethi y Jeffrey D. Ullman
  • Gödel, Escher, Bach de Douglas Hofstadter
  • Código limpio: manual de software ágil elaborado por Robert C. Martin
  • Eficaz C ++
  • Más efectivo C ++
  • CÓDIGO por Charles Petzold
  • Programming Pearls por Jon Bentley
  • Trabajando eficazmente con Legacy Code por Michael C. Feathers
  • Peopleware por Demarco y Lister
  • Codificadores en el trabajo por Peter Seibel
  • ¡Seguro que estás bromeando, señor Feynman!
  • Effective Java 2nd edition
  • Patrones de architecture de aplicaciones empresariales por Martin Fowler
  • El pequeño Schemer
  • El esquema sazonado
  • ¿Por qué (conmovedora) Guía de Ruby?
  • Los internos están ejecutando el asilo: por qué los productos de alta tecnología nos vuelven locos y cómo restaurar la cordura
  • El arte de la progtwigción de Unix
  • Desarrollo basado en pruebas: por ejemplo por Kent Beck
  • Prácticas de un desarrollador ágil
  • No me hagas pensar
  • Desarrollo ágil de software, principios, patrones y prácticas por Robert C. Martin
  • Diseños impulsados por el dominio por Eric Evans
  • El diseño de las cosas cotidianas por Donald Norman
  • Diseño moderno en C ++ de Andrei Alexandrescu
  • Mejor software de escritura I por Joel Spolsky
  • La práctica de la progtwigción de Kernighan y Pike
  • Pensamiento y Aprendizaje Pragmático: Refactoriza tu Wetware por Andy Hunt
  • Estimación del software: Desmitificando el arte negro por Steve McConnel
  • El progtwigdor apasionado (My Job Went To India) por Chad Fowler
  • Hackers: Héroes de la revolución informática
  • Algoritmos + Estructuras de Datos = Progtwigs
  • Escribir código sólido
  • JavaScript – Las buenas partes
  • Conseguir Real por 37 Señales
  • Fundamentos de la progtwigción de Karl Seguin
  • Gráficos por computadora: principios y práctica en C (2ª Edición)
  • Pensando en Java por Bruce Eckel
  • Los elementos de los sistemas de computación
  • Refactoring to Patterns por Joshua Kerievsky
  • Sistemas operativos modernos por Andrew S. Tanenbaum
  • El Turing anotado
  • Cosas que nos hacen inteligentes por Donald Norman
  • La forma intemporal de construir por Christopher Alexander
  • La fecha límite: una novela sobre la gestión de proyectos por Tom DeMarco
  • El lenguaje de progtwigción C ++ (3ª edición) por Stroustrup
  • Patrones de la architecture de aplicaciones empresariales
  • Sistemas informáticos: una perspectiva del progtwigdor
  • Principios, patrones y prácticas ágiles en C # por Robert C. Martin
  • Creciente software orientado a objetos, guiado por pruebas
  • Directrices de diseño del marco por Brad Abrams
  • Object Thinking por el Dr. David West
  • Progtwigción avanzada en el entorno UNIX por W. Richard Stevens
  • Hackers y pintores: grandes ideas de la era de la informática
  • El alma de una nueva máquina por Tracy Kidder
  • CLR a través de C # por Jeffrey Richter
  • La forma intemporal de construir por Christopher Alexander
  • Patrones de diseño en C # por Steve Metsker
  • Alicia en el país de las maravillas por Lewis Carol
  • Zen y el arte del mantenimiento de la motocicleta por Robert M. Pirsig
  • Acerca de la cara: los elementos esenciales del diseño de interacción
  • Here Comes Everybody: El poder de organizarse sin organizaciones por Clay Shirky
  • El Tao de la Progtwigción
  • Belleza computacional de la naturaleza
  • Escribiendo Solid Code por Steve Maguire
  • La guía de Philip y Alex para publicar en la web
  • Análisis y diseño orientado a objetos con aplicaciones de Grady Booch
  • Java efectivo por Joshua Bloch
  • Computabilidad por NJ Cutland
  • Mentes maestras de la progtwigción
  • El Tao Te Ching
  • El progtwigdor productivo
  • El arte del engaño de Kevin Mitnick
  • The Career Programmer: Guerilla Tactics for a Imperfe World by Christopher Duncan
  • Paradigmas de progtwigción de inteligencia artificial: estudios de caso en Common Lisp
  • Masters of Doom
  • Pruebas unitarias pragmáticas en C # con NUnit por Andy Hunt y Dave Thomas con Matt Hargett
  • Cómo resolverlo por George Polya
  • El Alquimista de Paulo Coelho
  • Smalltalk-80: el lenguaje y su implementación
  • Writing Secure Code (2nd Edition) de Michael Howard
  • Introducción a la Progtwigción Funcional por Philip Wadler y Richard Bird
  • No hay errores! por David Thielen
  • Retrabajo por Jason Freid y DHH
  • JUnit en acción

K & R

@Juan: Conozco a Juan, lo sé, pero hay algunas cosas que solo se pueden aprender al llegar a la tarea en cuestión. Hablar en ideales abstractos todo el día simplemente te convierte en un académico. Es en la aplicación del resumen que realmente asimilamos la razón de su existencia. :PAG

@Keith: Gran mención de “Los reclusos están manejando el asilo” por Alan Cooper – un revelador para seguro, cualquier desarrollador que haya trabajado conmigo desde que leí ese libro me ha escuchado mencionar las ideas que defiende. +1

Matemáticas discretas para científicos informáticos http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

Matemáticas discretas para informáticos por JK Truss.

Si bien esto no te enseña a progtwigr, te enseña matemática fundamental que todo progtwigdor debería saber. Puede que recuerde esto desde la universidad, pero realmente, al hacer lógica de predicados mejorará sus habilidades de progtwigción, necesita aprender la Teoría de conjuntos si desea progtwigr utilizando colecciones.

Realmente hay mucha información interesante aquí que puede hacer que pienses sobre los problemas de diferentes maneras. Es útil tenerlo, solo para aprender de vez en cuando a aprender algo nuevo.

La sistemática: cómo funcionan los sistemas y especialmente cómo fracasan . Obtenerlo usado barato. Pero es posible que no tenga sentido del humor hasta que haya trabajado en algunos proyectos fallidos.

La belleza del libro es el año de copyright.

Probablemente la “ley” para llevar más profunda presentada en el libro:

El teorema del modo de falla fundamental (FFT): los sistemas complejos generalmente operan en modo de falla.

La idea es que hay partes defectuosas en cualquier pieza dada de software que están enmascaradas por fallas en otras partes o por validaciones en otras partes. Vea un ejemplo del mundo real en la máquina de radiación Therac-25 , cuyos fallos de software fueron enmascarados por fallas de hardware. Cuando se eliminaron las fallas de seguridad del hardware, la condición de carrera del software que no se había detectado durante todos esos años dio como resultado que la máquina matara a 3 personas.

Uno de mis favoritos personales es Hacker’s Delight , porque fue tan divertido de leer como educativo.

¡Espero que la segunda edición sea lanzada pronto!

Conceptos, técnicas y modelos de progtwigción de computadoras.

texto alternativo http://ecx.images-amazon.com/images/I/51YZ50ZR13L._SL500_AA240_.jpg

Progtwigción Extrema Explicada: Embrace Change by Kent Beck. Si bien no soy partidario de una versión hardcore de XP o de la carretera en el desarrollo de software, me gustaría haber sido presentado a los principios de este libro mucho antes en mi carrera. Pruebas unitarias, refactorización, simplicidad, integración continua, costo / tiempo / calidad / scope: esto cambió la forma en que analicé el desarrollo. Antes de Agile, todo era sobre el depurador y el miedo a las solicitudes de cambio. Después de Ágil, esos demonios no parecían tan grandes.

Tipos y Lenguajes de Progtwigción por Benjamin C Pierce para una comprensión profunda de los fundamentos de los lenguajes de progtwigción.

Database System Concepts es uno de los mejores libros que puede leer sobre la comprensión de buenos principios de diseño de bases de datos.

texto alternativo

La práctica de la progtwigción. Por Brian W. Kernighan, Rob Pike.

El estilo que se muestra aquí es excelente; el código solo habla por sí mismo, y todo el libro sigue el principio de KISS. Personalmente no es mi idioma de elección, pero todavía es influyente para mí.

Progtwigción desde cero. Es gratis en internet. Este libro me enseñó AT & T asm. Es muy fácil de leer

texto alternativo

Paradigmas de la progtwigción de la inteligencia artificial : estudios de caso en Common Lisp por Peter Norvig

enter image description here

Empecé a leerlo porque quería aprender Common Lisp. Cuando estaba a la mitad, me di cuenta de que este era el mejor libro sobre progtwigción que había leído hasta ahora.

Definitivamente la artesanía del software

texto alternativo http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

Este libro explica muchas cosas sobre ingeniería de software, desarrollo de sistemas. También es extremadamente útil para entender la diferencia entre diferentes tipos de desarrollo de productos: web VS shrinkwrap VS IBM framework. ¿Qué personas tenían en mente cuando concibieron el modelo de cascada? Lea esto y todo se aclarará (con suerte)

@ Peter Coulton: no lees a Knuth, lo estudias.

Para mí y para mi trabajo … Estructuras de datos puramente funcionales es ideal para pensar y desarrollar con los lenguajes funcionales en mente.

“El mundo es plano” por Thomas Friedman.

La excelencia en la progtwigción exige una inversión de energía mental y una dedicación al aprendizaje continuo comparable a las profesiones de la medicina o la ley. Paga una fracción de lo que pagan esas profesiones, y mucho menos los salarios pagados a los conocedores matemáticos que se dirigen al sector financiero. Y los salarios por construir código se están erosionando porque es una profesión que es relativamente fácil para los inteligentes y autodisciplinados en la mayoría de las economías.

La progtwigción ya se ha erosionado hasta el punto de pagar menos que, por ejemplo, la plomería. La fontanería no puede ser “deslocalizada”. No necesita pagar $ 2395 para asistir a la Conferencia Profesional de Plomeros cada dos años por el privilegio de recibir un conjunto completamente nuevo de tecnologías de plomería que le tomará un año aprender.

Si vives en Norteamérica o Europa, eres joven y eres inteligente, la progtwigción no es una elección racional de carrera. Negocios que implican progtwigción, absolutamente. Estudie negocios, sepa lo suficiente sobre progtwigción para refinar su detector BS: shiny. ¿Pero dedicar la mayor parte de tu energía mental al dominio de las bibliotecas, las estructuras de datos y los algoritmos? Eso solo tiene sentido si la progtwigción es algo más para ti que una opción económica.

Si te gusta la progtwigción y por eso intentas convertirte en tu carrera profesional, te corresponde desarrollar una comprensión fría de las fuerzas que son, y continuarán, una profesión cada vez más difícil para ganarse la vida. . “El mundo es plano” no te enseñará a nombrar tus variables, pero te sumergirá durante 6 u 8 horas en las realidades económicas que ya han llegado. Si puede leerlo y no asustarse, salga y compre “Código completo”.

texto alternativo

Este año pasado tomé varias clases. Yo leo

El dilema del innovador (tecnología disruptiva)
The Mythical Man Month (software de gestión)
Cruzando el abismo (inicio)
Sistemas de gestión de bases de datos, The COW Book
Progtwigción de C #, el libro de OSTRICH
Beginning iPhone Developmen, El libro de POMELO

Cada libro fue increíble, pero el Dilema del Innovador de Clayton Christensen (1997 !!!) es realmente un libro fantástico, y me hizo pensar realmente en el mundo del software moderno. El desafío abordado es la tecnología disruptiva, y cómo las empresas de discos duros y las empresas no técnicas siempre se ven afectadas por la nueva tecnología que cambia el juego. Le da a uno una nueva perspectiva al pensar en Google, probablemente la mayor compañía ‘web’. ¿Por qué tienen sus manos en TODO? Es porque no quieren que su posición se vea interrumpida por algo nuevo. La vista previa en google es suficiente para entender la idea. Léelo!

hackers, por Steven Levy.

La personalidad y el estilo de vida deben ser lo primero. Todo lo demás puede ser aprendido.

La práctica de la progtwigción

texto alternativo

y

Cómo resolverlo por computadora

texto alternativo http://img.infibeam.com/img/7101e0ee/496b1/05/629/PMB-9788131705629.jpg?hei=200&wid=160&op_sharpen=1

El lenguaje Python fue muy influyente para mí, desearía haber leído estos libros hace años. La belleza y simplicidad del lenguaje Python realmente afectó la forma en que escribí el código en otros idiomas.

texto alternativotexto alternativo

The New Turing Omnibus http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

Muy buen libro. Tiene un sabor de alto nivel de las áreas más importantes de la informática. Sí, CS! = Progtwigción, pero esto sigue siendo útil para todos los progtwigdores.

Análisis y diseño orientado a objetos con aplicaciones de Brady Booch

The Mythical Man-Month de Fred Brooks http://en.wikipedia.org/wiki/The_Mythical_Man-Month

Creo que “The Art of Unix Programming” es un excelente libro, escrito por un excelente hacker / mente shiny como Eric S. Raymond, quien trata de hacernos entender algunos principios del diseño de software (simplicidad principalmente). Este libro es imprescindible para cada progtwig que está por comenzar un proyecto en la plataforma Unix.

Aunque estoy de acuerdo en que muchos de los libros anteriores son imprescindibles (progtwigdor pragmático, mes-hombre mítico, arte de progtwigción de computadoras y SICP vienen a la mente de inmediato), me gustaría ir en una dirección ligeramente diferente y recomendar una disciplina. de Progtwigción por Edsger Dijkstra. A pesar de que tiene 32 años, el énfasis en “diseño para la verificabilidad” es muy relevante (incluso si “verificabilidad” significa “prueba” en lugar de “pruebas unitarias”).

Refactorización de Martin Fowler : la mejora del diseño del código existente ya ha sido incluida. Pero detallaré por qué me ha impactado.

La esencia de todo el libro trata sobre la estructuración del código para que sea más fácil de leer y entender por los humanos . Me enseña firmemente que el código que escribo está destinado a que mis colegas y sucesores lo consumn y posiblemente aprendan algo bueno de él. Me inspira a progtwigr conscientemente de una manera que deja a la gente elogiando mi nombre, y no maldiciéndome a la condenación por toda la eternidad .

texto alternativo http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg

C ++ Cómo progtwigrlo Es bueno para principiantes. Este es un excelente libro completo con 1500 páginas.

Aquí hay un excelente libro que no es muy aplaudido, pero está lleno de una visión profunda: Desarrollo de software ágil: The Cooperative Game , por Alistair Cockburn.

¿Qué tiene de especial? Bueno, claramente todos han escuchado el término “Ágil”, y parece que la mayoría son creyentes en estos días. Sin importar si cree o no, hay algunos principios profundos detrás de por qué existe el movimiento Ágil. Este libro descubre y articula estos principios de una manera precisa y científica. Algunos de los principios son (por cierto, estas son mis palabras, no las de Alistair):

  1. Lo más difícil del desarrollo de software en equipo es conseguir que todos los cerebros tengan el mismo entendimiento. Estamos construyendo sistemas enormes, elaborados y complejos que son invisibles en el mundo tangible. Cuanto mejor seas para conseguir que los cerebros de las personas compartan una comprensión más profunda, más eficaz será tu equipo en el desarrollo de software. Esta es la razón subyacente por la que la progtwigción de pares tiene sentido. La mayoría de las personas lo descarta (y yo también lo hice inicialmente), pero teniendo en cuenta este principio, recomiendo encarecidamente que le dé otra oportunidad. Terminas con DOS personas que entienden profundamente el subsistema que acabas de crear … no hay muchas otras maneras de obtener una transferencia de información tan profunda tan rápido. Es como una fusión mental Vulcano.
  2. No siempre necesitas palabras para comunicar una comprensión profunda rápidamente. Y un corolario: demasiadas palabras, y usted excede la capacidad del oyente / lector, lo que significa que la transferencia de comprensión que está intentando no ocurre. Considere que los niños aprenden a hablar un idioma al “sumergirse” y “absorber”. No solo el lenguaje tampoco … él da el ejemplo de algunos niños jugando con trenes en el piso. A lo largo viene otro niño que nunca ha visto un tren antes … pero al observar a los otros niños, retoma la esencia del juego y juega de inmediato. Esto sucede todo el tiempo entre humanos. Esto, junto con el corolario de demasiadas palabras, le ayuda a ver cuán equivocado fue en los viejos días de “cascada” para tratar de escribir especificaciones de requisitos detallados de 700 páginas.

Hay mucho más allí también. ¡Me callaré ahora, pero recomiendo encarecidamente este libro!

Maestros de la perdición. En lo que respecta a la motivación y el amor por su profesión, ¡no será mejor de lo que se ha descrito en este libro, historia verdaderamente inspiradora!