Les livres qui ont changé ma vision du développement

J'ai appris le développement de manière autodidacte avec un livre : Créez votre site web - Daniel Ichbiah. Pourtant, quand j'ai commencé à travailler je ne comprenais pas l'intérêt des livres parlant de développement : "Il y a tout sur le net et tout y est plus à jour !".

Je pense que j'étais frustré de n'avoir découvert l'existence des forums que des années après cette première lecture ! A ce moment-là, j'avais un forfait 50h en 56k : la toile n'était même pas l'ombre du média omniprésent qu'elle est devenue.

Bien des années plus tard donc, un collègue m'a prêté Clean Code - Robert C. Martin (dans sa version en français). J'ai lu ce livre, je n'ai clairement pas tout compris mais je l'ai trouvé intéressant, vraiment !

En fait, je crois que c'est à ce moment-là que j'ai compris que les livres sur le développement pouvaient être passionnants et intemporels. Il me faudra encore quelques années pour m'acheter mes premiers livres. Voici un échantillon de ma bibliothèque actuelle :

Il n'y a pas tout (certains sont en prêt), et je n'ai pas encore tout lu mais je vais vous parler de certains d'entre eux : ceux qui m'ont marqué !

Il n'y a pas de classement particulier, j'ai juste mis ça dans l'ordre qui me passait par la tête...

Design Patterns: Elements of Reusable Object-Oriented Software

Il me semble que c'est le livre que j'ai lu après Clean Code (des années après). Ce livre est une relique du passé : Octobre 1994, dans le monde du développement c'est le paléolithique. Et pourtant, le célèbre Gang Of Four (Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides) signe ici un ouvrage intemporel.

En décrivant, et en classant, les designs patterns du développement orienté objet, ils réussissent un tour de force qui marquera profondément (et durablement) l'industrie du logiciel.

Ce n'est pas une lecture facile, c'est un recueil, une référence que l'on peut sortir en cas de doute. Ce livre m'a permis de comprendre ces fameux patterns qui m'ont été enseignés mais je n'étais clairement pas prêt au moment où ça a été fait !

The Software Craftsman: Professionalism, Pragmatism, Pride

J'ai lu ce livre tout de suite après The Pragmatic Programmer: From Journeyman to Master (1ere édition) qui m'avait un peu déçu car j'avais trouvé les conseils basiques et je cherchais un livre plus "avancé", c'est le cas de celui-ci !

Le parcours de son auteur, Sandro Mancuso, est très inspirant et il le raconte très bien dans ce livre. A elle seule, la préface justifie l'achat et la lecture !

En à peine plus de 200 pages des sujets aussi éloignés que savoir dire non ou comment recruter un Software Crafter sont abordés. Si vous vous intéressez à la qualité du code : foncez, c'est passionnant !

The Clean Coder: A Code of Conduct for Professional Programmers

Il me semble que c'est le second livre de Robert "Uncle Bob" Martin que j'ai lu et donc, le premier en anglais. J'ai alors pu découvrir un style d'écriture et un sens de la formule que j'aime beaucoup.

Comme dans tous ces livres, tout n'est pas à garder et je sais que certaines personnes ont des réactions épidermiques à certains passages. Pour ma part, je les ignore simplement et je me concentre sur les anecdotes et les conseils en les prenant comme tels et pas comme des ordres.

J'ai beaucoup aimé ce livre très facile à lire et qui décrit bien des éléments d'attitude nécessaires pour faire du code de meilleure qualité. Si je ne dois recommander qu'un bouquin sur le Software Craftsmanship je recommande souvent celui-ci.

Building Microservices

Il y a quelques années, on ne mettait pas des microservices partout, pour tout. A cette époque, dans mon entreprise, on s'est vraiment posé la question de l'architecture à adopter pour nos projets.

Sans tout comprendre, nous avons fait le choix des microservices. A ce moment-là, je me suis beaucoup formé sur cette architecture mais j'avais du mal à tout remettre dans l'ordre (il n'y avait pas autant de ressources sur le sujet qu'aujourd'hui). Quand je commençais à avoir les idées claires, j'ai lu ce livre et j'ai été relativement dépité !

Si seulement j'avais lu les conseils de Sam Newman avant, j'aurais gagné un temps fou ! Ce livre explique clairement comment mettre en place ces architectures hautement distribuées. Il est dense, très dense mais complet et clair ! Je n'ai lu que la première version mais, pour moi, c'est un must read si vous voulez mettre des microservices en production.

The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

Ce livre est particulier, déjà parce qu'il est écrit comme un roman, on y trouve des personnages et on suit leur quotidien. Il est aussi particulier parce que ses auteurs Gene Kim, Kevin Behr et George Spafford ont voulu un livre accessible : il est donc moins cher que la moyenne des livres techniques.

Il est bien écrit, facile à lire et on y apprend beaucoup de choses sur le DevOps ! Un bémol cependant : il y a beaucoup de personnages qui représentent chacun un "poste" donné. Personnellement, pour ne pas me perdre lors de la lecture, j'ai fais un "mapping" de ces personnages vers des collègues pour savoir qui représentait quelle "caricature".

Release It! Design and Deploy Production-Ready Software

Vous avez peut-être déjà entendu le fameux : "ça marche sur mon poste". Phrase élevée au rang de blague dans certaines équipes. Cette blague, un peu triste, est un vrai problème dans le monde du développement logiciel.

Dans ce livre, Michael Nygard nous donne les clés pour penser nos applications de manière à ce qu'elles fonctionnent vraiment en production et non plus seulement sur nos postes avec un seul utilisateur.

Au travers d'exemples de vraies productions qui ont bien crashé, il nous donne les antipatterns à éviter et les patterns à mettre en place. J'ai trouvé dans ce livre quantité de conseils qui servent les solutions que je développe depuis.

Je n'ai lu que la première édition mais je suis persuadé que la seconde est très bien, si vous voulez rendre vos applications anti-fragiles : foncez !

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation

Ce livre est sorti en 2011, c'est... lointain, et pourtant Jez Humble et David Farley décrivent clairement des approches permettant de faire réellement ce que beaucoup d'entreprises n'osent même pas envisager !

Bien sûr, les outils présentés sont largement dépassés mais les approches sont encore tout à fait valables.

Pour avoir mis en place du déploiement continu plusieurs fois depuis cette lecture je vous assure que c'est une manière de faire qui change vraiment la capacité à délivrer de la valeur. Le déploiement continu (oui, jusqu'en production, sans aucune action manuelle) augmente aussi drastiquement la qualité des solutions. L'essayer c'est l'adopter, lisez ce livre, mettez-le en place et faites-vous votre propre avis.

Effective Java

Je sous-entendais en introduction que je n'aimais pas trop les livres parlant d'une technologie en particulier. Celui-ci fait exception !

Ce recueil d'excellents conseils sur Java, ordonnés et présentés de main de maître par Joshua Bloch m'a permis de comprendre beaucoup de choses sur le langage. Il m'a aussi donné de très bonnes idées de designs que j'utilise au quotidien.

Si vous cherchez un livre pour apprendre des points spécifiques et très utiles de Java foncez. Je n'ai lu que la seconde édition mais j'ai de très bon retours sur la troisième !

Clean Agile: Back to Basics

Un livre de Uncle Bob plus court que ce à quoi il nous a habitués, ce qu'il explique dès les premières pages par le fait que le développement agile de logiciels est quelque chose de simple. Il n'y a donc pas besoin d'un gros bouquin pour en parler !

J'ai lu ce livre peu de temps après sa parution et, à ce moment-là, je me posais sérieusement des questions sur "l'agile". En tout cas cette méthodologie prônée par certains "agilistes".

J'ai vraiment apprécié lire l'histoire de la création du manifest mais j'ai surtout aimé lire que les doutes que j'avais sur ce qu'est devenu ce mouvement sont largement partagés par les personnes qui en sont à l'origine !

Ce "rappel" de comment tout ça a été imaginé, des problèmes que cela doit résoudre, des raisons d'être des différents éléments fait beaucoup de bien. C'est un petit livre de moins de 200 pages, avec le très bon style d'écriture de son auteur, il se lit sur un weekend pluvieux sans problème !

Si vous pensez que "l'agile" que vous pratiquez est cassé, que les promesses ne sont pas tenues je ne peux que vous recommander cette lecture.

Domain-Driven Design: Tackling Complexity in the Heart of Software

Ah, voilà un monument de la littérature horrifique, un livre qui a terrorisé pléthore de développeurs. Il a même un surnom qui fait peur : The Big Blue Book.

Et pourtant, Eric Evans a réussi à formaliser, nommer et organiser le bon sens de développement des premières générations de codeurs. Ce livre a lancé un mouvement, bien d'autres ont suivi, le DDD est maintenant quelque chose !

Cette approche a pris de l'ampleur avec l'avènement des microservices qui doivent être organisés autours des Bounded Contexts : une organisation définie par Evans.

Il fait peur et ce n'est pas totalement injustifié (surtout quand on attaque la partie 3) mais c'est une lecture très loin d'être insurmontable. Un développeur expérimenté pourra en tirer beaucoup. Je ne le conseillerais cependant pas aux développeurs débutants qui ne sont pas encore à l'aise avec les technologies.

Sa lecture seule ne permet pas de "faire du DDD" (ce qui ne veut pas dire grand chose quoi qu'il arrive) mais elle vous donnera les éléments pour essayer et pour aller échanger dans les groupes DDD que l'on trouve maintenant un peu partout dans le monde.

Domain-Driven Design Distilled

J'étais un peu "fâché" avec Vaughn Vernon, enfin, plutôt déçu de son Big Red Book. Je n'avais absolument pas prévu de lire celui-ci mais on m'en a dit du bien alors je l'ai acheté, et je l'ai lu en quelques jours !

J'y ai trouvé beaucoup de choses ; notamment une description claire de l'architecture que j'utilise maintenant au quotidien (un exemple sur PadBowl).

Je pense aussi qu'il s'agit d'un très bon livre à mettre dans les mains de personnes qui ne s'intéressent pas plus que ça au DDD mais qui ont quand même une curiosité. Plus qu'une très belle introduction, il donnera des armes pour se lancer sérieusement tout en venant compléter les ouvrages plus anciens (et plus conséquents).

Et alors ?

La question est légitime. Je vous ai donné une vision personnelle, basée sur mes lectures, mes choix, ma compréhension, mes ressentis à un instant donné.

Peut-être n'ai-je pas parlé du livre qui a changé votre carrière, je ne l'ai peut-être pas lu ou je l'ai peut-être lu au mauvais moment (trop tôt ou trop tard).

Et alors... rien ! Cet article n'est que mon avis. Vous pouvez choisir ou non de le prendre en compte mais l'important c'est que vous lisiez et que vous vous fassiez votre propre liste de livres marquants !