Quel est le livre le plus influent que chaque programmeur devrait lire? [fermé]

1439

Si vous pouviez remonter le temps et vous dire de lire un livre spécifique au début de votre carrière de développeur, quel serait-il?

Je m'attends à ce que cette liste soit variée et couvre un large éventail de choses.

Pour effectuer une recherche: utilisez le champ de recherche dans le coin supérieur droit. Pour rechercher les réponses à la question actuelle, utilisez inquestion:this. Par exemple:

inquestion:this "Code Complete"
Robert Harvey
la source
8
Parcourir ce fil me fait réaliser à quel point la plupart des livres liés à la programmation sont laids. Très bon fil cependant!
Carl Bergquist
23
Il est intéressant de noter que, alors que le titre se lit "Quel est le livre le plus influent que chaque programmeur devrait lire?", Il y a quelques livres suggérés qui traitent de sujets spécifiques à la langue. Par définition, et par question telle qu'elle a été posée, les livres suggérés ici devraient traiter de sujets indépendants du langage, ce qui prouve que la plupart des programmeurs n'ont pas encore appris à lire.
Rook
19
Si je pouvais remonter le temps et me dire de lire quelque chose, il vaut mieux que ce soit un journal ou un livre de sport que j'emporte avec moi. Tout le reste est une perte de bon voyage dans le temps. :-)
jmucchiello
32
Vous savez, si je n'étais pas inquiet de ne pas voter beaucoup, j'irais trollement et suggérerais Twilight. "C'est AUSSI des gens qui sont pâles et évitent le soleil!"
Jacob Bellamy
3
Quelqu'un peut-il nettoyer les réponses en supprimant les entrées répétées des livres? La plupart d'entre eux ont déjà voté.
rao

Réponses:

1746
  • Code Complete (2e édition) par Steve McConnell
  • Le programmeur pragmatique
  • Structure et interprétation des programmes informatiques
  • Le langage de programmation C par Kernighan et Ritchie
  • Introduction aux algorithmes par Cormen, Leiserson, Rivest & Stein
  • Motifs de conception par le Gang of Four
  • Refactoring: améliorer la conception du code existant
  • Le mois de l'homme mythique
  • L'art de la programmation informatique par Donald Knuth
  • Compilateurs: principes, techniques et outils par Alfred V. Aho, Ravi Sethi et Jeffrey D. Ullman
  • Gödel, Escher, Bach de Douglas Hofstadter
  • Code propre: un manuel de l'artisanat logiciel Agile par Robert C. Martin
  • C ++ efficace
  • C ++ plus efficace
  • CODE par Charles Petzold
  • Programmation des perles par Jon Bentley
  • Travailler efficacement avec Legacy Code par Michael C. Feathers
  • Peopleware par Demarco et Lister
  • Coders at Work par Peter Seibel
  • Vous plaisantez sûrement, M. Feynman!
  • Java efficace 2e édition
  • Modèles d'architecture d'application d'entreprise par Martin Fowler
  • Le petit Schemer
  • Le Schemer chevronné
  • Pourquoi (Poignant) Guide de Ruby
  • Les détenus dirigent l'asile: pourquoi les produits de haute technologie nous rendent fous et comment restaurer la santé mentale
  • L'art de la programmation Unix
  • Développement piloté par les tests: par l'exemple de Kent Beck
  • Pratiques d'un développeur agile
  • Ne me faites pas penser
  • Développement de logiciels agiles, principes, modèles et pratiques par Robert C. Martin
  • Conceptions pilotées par domaine par Eric Evans
  • La conception des choses de tous les jours par Donald Norman
  • Design C ++ moderne par Andrei Alexandrescu
  • Meilleur logiciel d'écriture I par Joel Spolsky
  • La pratique de la programmation par Kernighan et Pike
  • Réflexion et apprentissage pragmatiques: refactorisez votre Wetware par Andy Hunt
  • Estimation logicielle: démystifier l'art noir par Steve McConnel
  • Le programmeur passionné (Mon travail est allé en Inde) par Chad Fowler
  • Hackers: Heroes of the Computer Revolution
  • Algorithmes + structures de données = programmes
  • Écrire du code solide
  • JavaScript - Les bonnes parties
  • Devenir réel avec 37 signaux
  • Fondements de la programmation par Karl Seguin
  • Infographie: principes et pratique en C (2e édition)
  • Penser à Java par Bruce Eckel
  • Les éléments des systèmes informatiques
  • Refactoring aux modèles par Joshua Kerievsky
  • Systèmes d'exploitation modernes par Andrew S. Tanenbaum
  • Le Turing annoté
  • Les choses qui nous rendent intelligents par Donald Norman
  • La construction intemporelle de Christopher Alexander
  • The Deadline: un roman sur la gestion de projet par Tom DeMarco
  • Le langage de programmation C ++ (3e édition) par Stroustrup
  • Modèles d'architecture d'application d'entreprise
  • Systèmes informatiques - le point de vue d'un programmeur
  • Principes, modèles et pratiques agiles en C # par Robert C. Martin
  • Développement d'un logiciel orienté objet, guidé par des tests
  • Directives de conception de cadre par Brad Abrams
  • Réflexion sur les objets par le Dr David West
  • Programmation avancée dans l'environnement UNIX par W. Richard Stevens
  • Pirates informatiques et peintres: grandes idées de l'ère informatique
  • L'âme d'une nouvelle machine par Tracy Kidder
  • CLR via C # par Jeffrey Richter
  • La construction intemporelle de Christopher Alexander
  • Design Patterns in C # par Steve Metsker
  • Alice au pays des merveilles par Lewis Carol
  • Le zen et l'art de l'entretien des motos par Robert M. Pirsig
  • À propos de Face - Les bases de la conception d'interaction
  • Here Comes Everybody: The Power of Organizing Without Organizations by Clay Shirky
  • Le Tao de la programmation
  • Beauté computationnelle de la nature
  • Écrire du code solide par Steve Maguire
  • Guide de publication Web de Philip et Alex
  • Analyse et conception orientées objet avec applications par Grady Booch
  • Java efficace par Joshua Bloch
  • Calculabilité par NJ Cutland
  • Les cerveaux de la programmation
  • Le Tao Te Ching
  • Le programmeur productif
  • L'art de la tromperie par Kevin Mitnick
  • Le programmeur de carrière: tactiques de guérilla pour un monde imparfait par Christopher Duncan
  • Paradigmes de la programmation de l'intelligence artificielle: études de cas en Common Lisp
  • Masters of Doom
  • Tests unitaires pragmatiques en C # avec NUnit par Andy Hunt et Dave Thomas avec Matt Hargett
  • Comment le résoudre par George Polya
  • L'Alchimiste de Paulo Coelho
  • Smalltalk-80: le langage et sa mise en œuvre
  • Écriture de code sécurisé (2e édition) par Michael Howard
  • Introduction à la programmation fonctionnelle par Philip Wadler et Richard Bird
  • Pas de bugs! par David Thielen
  • Retouche par Jason Freid et DHH
  • JUnit en action
hasard
la source
16
Code Complete est un bon livre si vous êtes peut-être au collège. Si vous avez au moins 1 an d'expérience en programmation, c'est un ennui total.
Bogdan Gavril MSFT
19
Code Complete contient beaucoup d'informations utiles, mais il est enfoui dans l'hyperbole, la gaufre et la répétition, ce qui en fait une lecture difficile.
Jeff Yates
76
J'ai lu Code Complete 3 ans dans ma carrière. Je n'avais pas suivi de cours d'ingénierie logicielle ni de cours de construction de langages de programmation mais j'avais suivi quelques cours d'introduction CS. C'est de loin le meilleur livre unique que j'ai jamais lu pour devenir un meilleur programmeur. Cela ne fera pas de vous un spécialiste mais cela vous fera bien plus qu'un bricoleur.
Shea
119
Le problème avec ce livre est que pour un débutant, cela n'a pas vraiment de sens car les concepts sont un peu avancés. Au moment où vous êtes prêt à pouvoir le lire, vous devriez déjà connaître et pratiquer 99% des concepts du livre.
esac
57
C'est l'affaire des suggestions de bon sens, comme celles que l'on trouve dans ce livre. De temps en temps, vous devez leur rappeler de se replier.
JohnFx
9

K&R

@Juan: Je connais Juan, je sais - mais il y a des choses qui ne peuvent être apprises qu'en se mettant au travail. Parler dans des idéaux abstraits toute la journée fait simplement de vous un universitaire. C'est dans l'application de l'abstrait que nous cherchons vraiment la raison de leur existence. : P

@Keith: Grande mention de "Les détenus dirigent l'asile" par Alan Cooper - une révélation pour certains, tout développeur qui a travaillé avec moi depuis que j'ai lu ce livre m'a entendu mentionner les idées qu'il embrasse. +1

Jason Bunting
la source
9

Mathématiques discrètes pour les informaticiens http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow ,TopRight,-24,-23_SH20_OU02_.jpg

Mathématiques discrètes pour les informaticiens par JK Truss.

Bien que cela ne vous apprenne pas la programmation, cela vous enseigne les mathématiques fondamentales que chaque programmeur devrait connaître. Vous vous souvenez peut-être de ce truc de l'université, mais vraiment, la logique des prédicats vous améliorera les compétences en programmation, vous devez apprendre la théorie des ensembles si vous voulez programmer en utilisant des collections.

Il y a vraiment beaucoup d'informations intéressantes ici qui peuvent vous faire penser aux problèmes de différentes manières. C'est pratique d'avoir, juste pour ramasser de temps en temps pour apprendre quelque chose de nouveau.

Tarski
la source
9

Systemantics: comment les systèmes fonctionnent et surtout comment ils échouent . Faites-en bon usage. Mais vous pourriez ne pas avoir l'humour avant d'avoir travaillé sur quelques projets qui ont échoué.

La beauté du livre est l'année du droit d'auteur.

Probablement la "loi" à emporter la plus profonde présentée dans le livre:

Le théorème fondamental du mode de défaillance (FFT): les systèmes complexes fonctionnent généralement en mode de défaillance.

L'idée étant qu'il y a des parties défaillantes dans un logiciel donné qui sont masquées par des défaillances dans d'autres parties ou par des validations dans d'autres parties. Découvrez un exemple concret sur la machine à rayonnement Therac-25 , dont les défauts logiciels ont été masqués par des pannes matérielles. Lorsque les pannes matérielles ont été supprimées, la condition de concurrence logicielle qui n'était pas détectée pendant toutes ces années a entraîné la mort de 3 personnes.

Nicholas Piasecki
la source
1
Consultez également The Systems Bible du même auteur (John Gall). C'est la troisième édition de Systemantics, il vient de changer de titre. Voici le livre que tu voles à l'école. C'est le livre que les adultes ont lu sous une couverture avec une lampe de poche.
Chris Wenham
9

Hacker's Delight est l'un de mes favoris personnels , car c'était aussi amusant à lire qu'éducatif.

J'espère que la deuxième édition sortira bientôt!

tr9sh
la source
+1 pour "Hacker's Delight" de Henry S. Warren Jr - il ne s'agit pas de pirater dans le sens populaire mais de pirater comme dans le twiddling de bits de bas niveau et d'autres "hacks" dans le sens vrai et original du mot. Pas pour tout le monde, mais si vous êtes impliqué dans l'optimisation de code, les compilateurs, etc., ou si vous êtes juste un nerd général qui s'intéresse aux trucs de bas niveau, alors c'est un excellent livre.
Paul R
9

Concepts, techniques et modèles de programmation informatique.

texte de remplacement http://ecx.images-amazon.com/images/I/51YZ50ZR13L._SL500_AA240_.jpg

amit
la source
Brillant, la couverture du livre montre "La Sagrada Família", une grande basilique catholique romaine en construction à Barcelone, Catalogne, Espagne. À terminer en 2026 (il ne reste que 17 ans). Comme la plupart des programmes, même avec les meilleurs livres, ils n'ont jamais fini ...
PeterMmm
9

Programmation extrême expliquée: Embrace Change par Kent Beck. Bien que je ne préconise pas une approche inconditionnelle de XP ou de la route sur le développement de logiciels, j'aurais aimé avoir été présenté aux principes de ce livre beaucoup plus tôt dans ma carrière. Tests unitaires, refactoring, simplicité, intégration continue, coût / temps / qualité / portée - tout cela a changé ma façon d'envisager le développement. Avant Agile, il s'agissait du débogueur et de la peur des demandes de changement. Après Agile, ces démons n'apparaissaient pas aussi gros.

TrueWill
la source
9

Types et langages de programmation par Benjamin C Pierce pour une compréhension approfondie des fondements des langages de programmation.

Dave Clarke
la source
9

Database System Concepts est l'un des meilleurs livres que vous pouvez lire sur la compréhension des bons principes de conception de bases de données.

texte alternatif

Ryan Berger
la source
9

La pratique de la programmation. Par Brian W. Kernighan, Rob Pike.

Le style présenté ici est excellent - le code parle de lui-même et le livre entier suit le principe KISS. Personnellement, ce n'est pas ma langue de prédilection, mais toujours influente pour moi.

RD1
la source
1
-1 Duplicate de stackoverflow.com/questions/1711/…
Ruben Bartelink
9

Un savoir-faire logiciel définitivement

texte de remplacement http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

Ce livre explique beaucoup de choses sur le génie logiciel, le développement de systèmes. Il est également extrêmement utile de comprendre la différence entre différents types de développement de produit: web VS shrinkwrap VS framework IBM. À quoi pensaient les gens lorsqu'ils ont conçu un modèle de cascade? Lisez ceci et tout ce que nous deviendrons clair (j'espère)

dario minonne
la source
Ce livre doit être réécrit à partir de zéro. Le sujet est très intéressant mais le livre est assez fou.
Chris Mountford
Chris, j'ai du mal à comprendre ton commentaire ... Peux-tu expliquer plus? Pourquoi «fou»?
dario minonne
Tout d'abord, il est plein d'erreurs typographiques. La main éditoriale habituellement de premier ordre d'Addison Wesley est étrangement absente dans ce volume.
Chris Mountford
... continue, et pas assez d'espace ici, mais: 2. il n'est jamais clair dans le texte où l'auteur bascule entre le fait et l'opinion, l'anecdote et le principe fondamental, etc. 3. le savoir-faire logiciel est une métaphore et une stratégie pour traiter plusieurs aspects difficiles du développement logiciel. Il présente des avantages spécifiques par rapport aux alternatives et vraisemblablement des inconvénients. Je pense que c'est la bonne approche. Cela n'a aucun sens de dire que le logiciel est intrinsèquement un métier. Très ennuyeux à lire, mais pour être honnête, c'était il y a un certain temps et j'ai oublié beaucoup de détails. Mon dégoût demeure cependant.
Chris Mountford
8

@Peter Coulton - vous ne lisez pas Knuth, vous l'étudiez.

Pour moi et mon travail ... Les structures de données purement fonctionnelles sont idéales pour penser et développer en ayant à l'esprit les langages fonctionnels.

nlucaroni
la source
8

"Le monde est plat" par Thomas Friedman.

L'excellence en programmation exige un investissement d'énergie mentale et un dévouement à un apprentissage continu comparable aux professions de la médecine ou du droit. Il paie une fraction de ce que ces professions paient, encore moins les salaires versés aux mathématiciens avertis qui se dirigent vers le secteur financier. Et les salaires pour construire le code s'érodent parce que c'est une profession qui est relativement facile pour les intelligents et les auto-disciplinés dans la plupart des économies à entrer.

La programmation s'est déjà érodée au point de payer moins que, disons, la plomberie. La plomberie ne peut pas être «délocalisée». Vous n'avez pas besoin de payer 2395 $ pour assister à la Conférence des plombiers professionnels tous les deux ans pour avoir le privilège de recevoir un tout nouvel ensemble de technologies de plomberie qui vous prendra un an pour apprendre.

Si vous vivez en Amérique du Nord ou en Europe, êtes jeune et intelligent, la programmation n'est pas un choix de carrière rationnel. Les entreprises qui impliquent de la programmation, absolument. Étudiez les affaires, en savoir suffisamment sur la programmation pour affiner votre détecteur BS: génial. Mais consacrer la part du lion de votre énergie mentale à la maîtrise des bibliothèques, des structures de données et des algorithmes? Cela n'a de sens que si la programmation est quelque chose de plus pour vous qu'un choix économique.

Si vous aimez la programmation et que pour cette raison vous avez l' intention d'en faire votre carrière, alors il vous appartient de développer une compréhension froide des forces qui sont, et continueront, d'en faire une profession de plus en plus difficile à vivre. . "Le monde est plat" ne vous apprendra pas comment nommer vos variables, mais il vous plongera pendant 6 ou 8 heures dans des réalités économiques déjà arrivées. Si vous pouvez le lire et ne pas avoir peur, alors sortez et achetez "Code complet".

Larry OBrien
la source
C'est une sacrée bonne réponse!
Avi
8

texte alternatif

L'année dernière, j'ai pris un certain nombre de cours. je lis

Le dilemme de l'innovateur (technologie perturbatrice)
Le mois de l'homme mythique (logiciel de gestion)
Crossing the Chasm (démarrage)
Systèmes de gestion de base de données, COW Book
Programming C #, The OSTRICH Book
Beginning iPhone Developmen, The GRAPEFRUIT Book

Chaque livre était incroyable, mais le dilemme de l'innovateur de Clayton Christensen (1997 !!!) est vraiment un livre fantastique, et il m'a vraiment fait penser au monde du logiciel moderne. Le défi relevé est la technologie perturbatrice et la façon dont les entreprises de disques durs et les entreprises non techniques sont toujours perturbées par de nouvelles technologies révolutionnaires. Cela donne une nouvelle perspective lorsque l'on pense à Google, probablement la plus grande entreprise «Web». Pourquoi ont-ils leurs mains en TOUT? C'est parce qu'ils ne veulent pas que leur position soit perturbée par quelque chose de nouveau. L'aperçu sur Google est suffisant pour se faire une idée. Lis le!

TahoeWolverine
la source
Je pense que ce livre est assez répétitif. Je recommande la lecture du premier 1/4.
Ben Haley
8

hackers, par Steven Levy.

La personnalité et le mode de vie doivent venir en premier. Tout le reste peut être appris.

tsilb
la source
8

Le langage Python a été très influent pour moi, j'aurais aimé avoir lu ce livre il y a des années. La beauté et la simplicité du langage Python ont vraiment affecté la façon dont j'écrivais du code dans d'autres langages.

texte alternatif texte alternatif

Matthew J Morrison
la source
2
Je pense que démarrer de nouveaux programmeurs avec Python réduirait la quantité de code laid dans le monde. Je travaille avec quelqu'un qui indente des lignes au hasard - cette personne ne le ferait pas si elle avait travaillé avec Python pendant quelques mois.
xnine
6
Je pense que démarrer de nouveaux programmeurs avec Python réduirait la quantité d'autres langages.
Marco Mariani
2
Ces couvertures sont-elles une coïncidence?
Kelly S. French
7

Je pense que "The Art of Unix Programming" est un excellent livre, par un excellent hacker / esprit brillant comme Eric S. Raymond, qui essaie de nous faire comprendre quelques principes de conception de logiciels (simplicité principalement). Ce livre est un must pour toute programmation qui s'apprête à démarrer un projet sous la plate-forme Unix.

se cache
la source
6
c'est un doublon.
Christopher Mahan
7

Bien que je convienne que bon nombre des livres ci-dessus sont des lectures incontournables (programmeur pragmatique, mois-homme mythique, art de la programmation informatique et SICP viennent immédiatement à l'esprit), je voudrais aller dans une direction légèrement différente et recommander une discipline de programmation par Edsger Dijkstra. Même s'il a 32 ans, l'accent mis sur la «conception pour la vérifiabilité» est très pertinent (même si «vérifiabilité» signifie «preuve» au lieu de «tests unitaires»).

joel.neely
la source
7

Le refactoring de Martin Fowler : améliorer la conception du code existant a déjà été répertorié. Mais je vais expliquer en détail pourquoi cela m'a impacté.

L'essence de tout le livre concerne la structuration du code afin qu'il soit plus simple à lire et à comprendre par les humains . Cela m'apprend fortement que le code que j'écris est destiné à mes collègues et successeurs à consommer et éventuellement à apprendre quelque chose de bon . Cela m'inspire à programmer consciemment d'une manière qui laisse les gens louer mon nom et ne pas me maudire à la damnation pour l'éternité .

icelava
la source
7

Voici un excellent livre qui n'est pas aussi largement applaudi, mais qui regorge de connaissances approfondies: Agile Software Development: The Cooperative Game , par Alistair Cockburn.

Qu'est-ce qui est si spécial? Eh bien, il est clair que tout le monde a entendu le terme "Agile", et il semble que la plupart sont des croyants de nos jours. Que vous le croyiez ou non, cependant, il existe des principes profonds derrière la raison pour laquelle le mouvement Agile existe. Ce livre découvre et articule ces principes d'une manière précise et scientifique. Certains des principes sont (au fait, ce sont mes mots, pas ceux d'Alistair):

  1. La chose la plus difficile à propos du développement de logiciels d'équipe est de faire en sorte que tous les cerveaux aient la même compréhension. Nous construisons des systèmes énormes, élaborés et complexes qui sont invisibles dans le monde tangible. Mieux vous réussirez à faire en sorte que plus de cerveaux de personnes partagent une meilleure compréhension, plus votre équipe sera efficace dans le développement de logiciels. C'est la raison sous-jacente que la programmation par paires a du sens. La plupart des gens le rejettent (et je l'ai fait trop au début), mais avec ce principe à l'esprit, je vous recommande fortement de lui donner un autre coup. Vous vous retrouvez avec DEUX personnes qui comprennent profondément le sous-système que vous venez de créer ... il n'y a pas beaucoup d'autres façons d'obtenir un transfert d'informations aussi approfondi aussi rapidement. C'est comme une fusion d'esprit vulcain.
  2. Vous n'avez pas toujours besoin de mots pour communiquer rapidement une compréhension profonde. Et un corollaire: trop de mots, et vous dépassez la capacité de l'auditeur / lecteur, ce qui signifie que le transfert de compréhension que vous tentez ne se produit pas. Considérez que les enfants apprennent à parler la langue en étant «immergés» et «absorbants». Pas seulement la langue non plus ... il donne l'exemple de certains enfants qui jouent avec des trains au sol. Arrive un autre enfant qui n'a jamais SEEN un train avant ... mais en regardant les autres enfants, il reprend l'essentiel du jeu et joue à droite le long. Cela arrive tout le temps entre les humains. Ceci, ainsi que le corollaire de trop de mots, vous aide à voir à quel point il était erroné à l'époque des "cascades" d'essayer d'écrire des spécifications détaillées de 700 pages.

Il y a tellement plus là-dedans aussi. Je vais me taire maintenant, mais je recommande fortement ce livre!

Fleurs de Charlie
la source
2
Une contribution unique, et vous avez pris le temps d'expliquer clairement pourquoi cela valait la peine d'être lu. +1 pour l'originalité et l'effort! J'ai hâte de lire ceci bientôt ...
Avery Payne
Bien. Je ne pense pas que vous serez déçu.
Charlie Flowers
7

Maîtres du destin. En ce qui concerne la motivation et l'amour pour votre profession: cela ne sera pas meilleur que ce qui est décrit dans ce livre, une histoire véritablement inspirante!

Jasper Bekkers
la source
+1 pour l'examen précis d'une ligne
rubayeet