Article original : Books that Junior Developers should read
Par Khalil Stemmler
Ces livres « sont essentiellement des codes de triche » pour améliorer vos compétences et vos connaissances en tant que développeur.
Que vous soyez un nouveau développeur ou que vous ayez une certaine expérience en programmation, vous finirez par réaliser que le temps passé à un emploi n'est pas le meilleur moyen de déterminer vos compétences et vos connaissances en tant que programmeur (je sais, dites cela aux recruteurs ?).
Ce que vous faites pendant votre temps libre et la manière dont vous choisissez de prendre votre apprentissage en main sont ce qui déterminera finalement votre succès dans cette industrie. C'est pourquoi il est si important pour nous, en tant que développeurs, d'adopter un état d'esprit de croissance.
Il existe d'excellentes façons d'apprendre et de s'améliorer en tant que développeur. Certaines de ces méthodes incluent la programmation en binôme, les cours en ligne, les rencontres, l'expérience de travail, la construction de projets et la recherche d'un mentor.
L'une de mes méthodes préférées pour apprendre est d'ouvrir un livre bien écrit et d'essayer d'absorber quelque chose de ceux qui ont distillé des années de connaissances et d'aperçus dans un artefact permanent.
Voici mes recommandations personnelles que je pense que tous les développeurs (surtout les juniors) devraient lire à un moment donné. Ces livres sont tous très appréciés par les professionnels de notre industrie et ont le potentiel de laisser un impact profond sur la qualité de votre travail et votre vitesse de développement et d'apprentissage.
Certains d'entre eux s'éloignent des détails techniques et se concentrent davantage sur des règles pratiques concernant ce que signifie être un bon développeur sur le plan interpersonnel et professionnel.
Divulgation: Certains des liens ci-dessous sont des liens d'affiliation. Cependant, je n'ai ajouté que les livres que je considère personnellement utiles pour un développeur junior.
1. Clean Code
par Robert C. Martin (Uncle Bob)
Une fois que vous avez surmonté les défis de base du développement et que vous êtes à l'aise pour écrire du code afin de résoudre des problèmes, il serait bon de jeter un coup d'œil à ce livre. Il s'avère que faire fonctionner le code la première fois est en fait la partie facile. La partie difficile est de rendre votre code lisible afin que les autres puissent le comprendre et le modifier à l'avenir.
Vous souvenez-vous de la dernière fois où vous avez dû lire du code comme ceci ?
function calculateIt (a, b) {
if (a.delta < b.element.x) {
var x = b.element.x;
return x - b.delta.x
} else {
var y = b.next.y;
var h = b.element.y * 2;
return y - h
}
}
Qui sait ce qu'il fait vraiment. Ce code peut fonctionner, mais dès que nous devons le modifier, nous devons espérer que l'auteur du code est toujours dans l'entreprise et prier pour qu'il soit somehow capable de déchiffrer ce qu'il a écrit potentiellement il y a des années.
Lorsque l'on ne prend pas soin d'écrire du code lisible et maintenable, nous nous retrouvons avec des morceaux de code comme celui-ci que tout le monde a peur de toucher, et si jamais il se casse, nous sommes dans le pétrin.
Le livre « Clean Code » d'Uncle Bob vous apprend à identifier à quoi ressemble un code propre par rapport à un mauvais code, et il vous apprend à le transformer en bon code. Une tâche comme celle-ci semble triviale pour la plupart, mais vous seriez surpris de voir comment transformer quelques principes de conception logicielle en habitudes peut vous aider à écrire un code beaucoup plus professionnel et évolutif.
Nous sommes des artisans du logiciel, vous savez. Construire une maison n'est pas très différent de construire une application en principe. Nous devons porter attention aux détails, sinon cela peut devenir très coûteux à réparer dans le futur si ce n'est pas fait correctement dès la première fois.
2. The Clean Coder
par Robert C. Martin (Uncle Bob)
Ce livre n'est pas nécessairement un livre technique, mais plutôt un livre pour vous apprendre à être un professionnel dans cette industrie. Les professionnels sont ceux qui, face aux défis, à l'incertitude et à la pression, continueront à traiter la création de logiciels comme un artisanat et seront déterminés à adhérer à leurs valeurs professionnelles.
The Clean Coder est rempli de conseils pratiques sur l'estimation, le refactoring, les tests, la gestion des conflits, les plannings, l'évitement de l'épuisement professionnel, et bien plus encore. Des conseils de confiance de quelqu'un qui a passé des décennies à faire cela.
L'une des meilleures choses qu'il enseigne est comment avoir de l'intégrité en tant que développeur, quand dire « Non » et comment le dire.
Un livre sur le professionnalisme.
3. Refactoring
Martin Fowler est l'un de mes auteurs préférés. La première raison est qu'il est hilarant. Son approche pour écrire des livres sur les logiciels est incontestablement « Fowler ». L'autre raison est qu'il est incroyablement doué pour expliquer des sujets complexes, et le faire très simplement, de manière à ne pas vous fatiguer en tant que lecteur.
Refactoring est un livre que le créateur de Ruby on Rails a un jour dit que vous devriez « lire avant d'écrire une autre ligne de code ». Fowler vous guide à travers le refactoring d'une application simple, vous présentant un certain nombre de techniques qu'il a accumulées et cataloguées au fil de ses années de conseil.
Fowler vous montre comment alterner entre le codage et le refactoring, à quelle fréquence vous devriez commiter votre code et quand vous devriez écrire vos tests. Très recommandé. La dernière version de ce livre a été mise à jour pour présenter les exemples en JavaScript, ce qui était un plus pour moi puisque c'est mon langage préféré.
4. Design Patterns: Elements of Reusable Object-Oriented Software
par Erich Gamma, Richard Helm, Ralph Johnson, & John Vlissides
Ceci est le livre séminal sur les Design Patterns. Qu'est-ce que les design patterns, demandez-vous ? Les Design Patterns sont des solutions bien connues à des problèmes courants dans le développement de logiciels. Si vous êtes familier avec les patterns, vous constaterez que vous pourrez grandement réduire le temps nécessaire pour proposer des solutions à ces problèmes.
Avoir une bonne connaissance des design patterns vous permet également de communiquer vos solutions efficacement avec d'autres développeurs.
« Oui, je viens d'utiliser un Facade par-dessus n'importe quel Adaptateur de base de données chargé par la Stratégie. »
« Ahh ! Compris. »
Oui, c'est un livre plus ancien. Mais c'est toujours l'un des meilleurs pour référence. Si vous cherchez quelque chose sur ce sujet qui soit un peu plus récent et convivial, je recommande également le bon « Head First Design Patterns: A Brain-Friendly Guide » par Eric Freeman.
5. Domain-Driven Design: Tackling Complexity in the Heart of Software
Pour que les grandes bases de code continuent de s'évoluer, nous devons diviser logiquement le code en différentes parties. L'idée est de partitionner votre code de manière à ce qu'il soit possible pour des équipes séparées de travailler sur ces parties de votre système sans affecter personne d'autre.
Le concept sous-jacent qui permet de déplacer votre base de code dans cette direction est le Domain-Driven Design (DDD). C'est une approche du développement de logiciels où nous modélisons les problèmes qui existent dans le « domaine du problème » (le monde réel) en un certain nombre de domaines de solution.
Le DDD est incroyablement important lorsque la base de code devient suffisamment grande. Les grandes entreprises utilisent le DDD afin d'assigner des équipes à des parties de la base de code de l'entreprise.
Eric Evans a inventé le terme « Langage Ubiquitaire », qui est le terme pour construire un langage commun et global entre les développeurs, les experts du domaine et tout autre utilisateur ou acteur du domaine. En utilisant ce Langage Ubiquitaire, il garantit que les concepts de domaine les plus importants sont bien compris et modélisés dans le logiciel.
Le livre est un peu plus technique et difficile que les autres, mais si vous vous familiarisez avec ces concepts, vous serez très bien placé pour comprendre comment les plus grandes entreprises d'aujourd'hui gardent leurs bases de code gérables et évolutives.
Mise à jour : 17 avril 2019
J'ai un peu réfléchi à cette recommandation. L'introduction au monde du DDD est, à mon avis, extrêmement bénéfique pour les développeurs juniors. Je crois que c'est vrai parce que le DDD met l'accent sur la familiarité avec l'architecture logicielle, les principes de conception et les design patterns. C'est une excellente façon de vous introduire pratiquement à un niveau supérieur de programmation.
Cela dit, le DDD est un sujet vaste et difficile. Pour certains lecteurs, ce livre (le séminal « livre bleu ») d'Eric Evans pourrait être mieux traité comme une référence. C'est Eric Evans qui a écrit le premier livre sur le DDD.
Cependant, je viens de finir de lire DDD Distilled par Vaughn Vernon. C'est une introduction vraiment courte et douce au DDD, écrite afin de répondre au fait que la plupart des livres sur le DDD sont énormes.
Essayez définitivement DDD Distilled à la place. Je pense que ce livre serait beaucoup mieux pour la plupart des développeurs afin de se mettre à niveau sur les essentiels du DDD en premier. Pour plus de détails pratiques sur la mise en œuvre des concepts, référez-vous au « livre bleu » et au « livre rouge ».
6. Soft Skills: The Software Developer’s Life Manual
Nous devrions nous efforcer de rester équilibrés en tant que développeur de logiciels. Malheureusement, être équilibré n'est pas une caractéristique que la plupart des gens associent aux développeurs de logiciels. La vérité est qu'il est incroyablement important d'investir dans votre apprentissage, votre santé et votre bien-être général en tant que développeur.
« Soft skills » traite des choses importantes qui comptent en dehors du codage proprement dit, comme la productivité, les objectifs de carrière et les finances personnelles. Sonmez aborde également l'investissement, comment il a pris sa retraite à 33 ans, des conseils pour pirater la forme physique et maintenir des relations - des choses rarement abordées dans la communauté de la programmation.
Il est écrit de telle manière que vous pouvez plonger dans le livre à n'importe quel chapitre que vous pensez être le plus pertinent pour vous aujourd'hui.
7. Clean Architecture
par Robert C. Martin (Uncle Bob)
Quoi ? Uncle Bob écrit de bons livres, d'accord ?
À l'école, il y a beaucoup d'accent sur les algorithmes et moins sur les principes de conception de logiciels. Je pense que c'est un peu malheureux car en réalité, vous ne rencontrez pas si souvent de défis algorithmiques. Au lieu de cela, il est plus courant que vous soyez confronté au défi de structurer votre code de manière modulaire, flexible, lisible et qui vous permettra d'ajouter rapidement de nouvelles fonctionnalités lorsque les exigences changent.
Clean Architecture traite des principes et des modèles essentiels de conception de logiciels que vous pourrez utiliser afin de faire face à ces défis.
Certaines des meilleures conclusions de ce livre sont le coût des dépendances, le code stable vs. non stable et les principes SOLID : une façon d'écrire du code afin qu'il soit plus compréhensible, flexible et maintenable.
D'autres aspects de ce livre qui étaient incroyablement utiles étaient les concepts d'« architecture criante » et d'« emballage par composant » qui sont des opinions sur la façon d'organiser vos modules afin qu'ils crient pratiquement au lecteur exactement ce que le projet est tout à fait.
Ce livre va bien de pair avec le Domain-Driven Design, qui est activé par l'utilisation d'une « Architecture en Couches » ou comme l'appelle Uncle Bob, « The Clean Architecture » (également connue sous le nom de Ports and Adapters). Un excellent livre pour quiconque souhaite améliorer ses compétences en architecture et apprendre à concevoir efficacement un système à un niveau élevé, et à danser avec les dépendances au niveau des détails.
8. The Effective Engineer
Le temps est notre bien le plus précieux dans la vie, et nous devrions viser à être plus efficaces avec lui. Il est facile de se laisser submerger et de passer beaucoup de temps à corriger des bugs et à gaspiller des efforts. Faire un travail répété. Bleh. The Effective Engineer est tout sur le fait de faire plus en moins de temps et de supprimer le travail répété.
Nous pouvons atténuer le temps et les efforts gaspillés sur des tâches répétitives grâce à un cadre appelé « levier ».
Le levier vous aide à identifier les activités que vous pouvez faire et qui produisent les résultats les plus disproportionnés - par unité de temps investi. C'est un cadre qui peut s'appliquer à n'importe quoi, que ce soit la façon dont vous apprenez, la façon dont vous codez, la façon dont vous déboguez... n'importe quoi !
9. The Pragmatic Programmer
par Andrew Hunt & David Thomas
Loué pour être facile à suivre et à comprendre, The Pragmatic Programmer est un livre qui devrait être sur le bureau des développeurs de tous niveaux. Andrew et David sont des programmeurs qui non seulement ont passé de nombreuses années à faire ce qu'ils font, mais ont également prêté attention à ce qu'ils faisaient tout en le faisant, puis ont essayé de déterminer s'ils pouvaient faire cela mieux.
Ce qui est sorti de leurs années d'introspection est ce livre, qui introduit un certain nombre de philosophies essentielles de programmeur à suivre tout au long de votre carrière, comme « les programmeurs devraient avoir une philosophie de 'faire une fois, ou automatiser' ».
Il inclut des conseils simples mais détaillés que vous devriez garder à l'esprit avant d'écrire une autre ligne de code ou de commencer un nouveau projet.
Mots finaux
Les livres sont vraiment certains des meilleurs outils pour améliorer vos connaissances et vos compétences en tant que nouveau programmeur ou développeur junior. Les livres ont tendance à avoir un retour sur investissement vraiment élevé ; saviez-vous que vous pouvez gagner beaucoup d'argent en programmant ? ?
Ce ne sont là que quelques-uns des meilleurs livres disponibles en ce moment en 2019 ! Aucun d'entre eux n'est vraiment nouveau, mais c'est parce que la programmation a maintenu les mêmes philosophies générales et meilleures pratiques pendant des années. Comme un professeur que j'ai eu une fois a dit, « vous pouvez gagner beaucoup d'argent dans cette industrie, vous devez simplement lire le manuel ».
Avez-vous lu l'un de ces livres ? Qu'en avez-vous pensé ? Y a-t-il des livres qui ne sont pas sur cette liste et que vous pensez que les nouveaux développeurs pourraient vraiment bénéficier de lire ? Faites-le nous savoir dans les commentaires !
Ressources supplémentaires
Voici une liste de quelques articles vraiment excellents qui couvrent certains des sujets de ces livres. Si vous n'avez pas tout à fait le temps d'investir dans des livres complets pour le moment, vous familiariser avec ces concepts pourrait vous aider dans votre parcours pour devenir un meilleur développeur !
Survivre à votre premier emploi de développeur junior [Guide] ?? https://univjobs.ca/blog/developer-guides/ultimate-guide-for-first-junior-developer-job-success/
Refactoring.guru https://refactoring.guru/
Principes de conception SOLID https://stackify.com/solid-design-principles/
DRY (Don’t Repeat Yourself) https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
NodeJS et bonnes pratiques https://blog.codeminer42.com/nodejs-and-good-practices-354e7d76362
Mise en œuvre des principes SOLID et de l'architecture en oignon dans Node.js https://dev.to/remojansen/implementing-the-onion-architecture-in-nodejs-with-typescript-and-inversifyjs-10ad
Meilleure conception de logiciels avec Clean Architecture https://fullstackmark.com/post/11/better-software-design-with-clean-architecture
The Clean Architecture http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
Ma prochaine ressource gratuite, une introduction à l'architecture logicielle et aux principes de conception avec Node.js et TypeScript
https://khalilstemmler.com/resources/solid-nodejs-architecture
Continuez à grandir, et amusez-vous en le faisant !
Si vous êtes un étudiant canadien ou un récent diplômé à la recherche d'opportunités de développeur de niveau débutant ou de stages/alternances, vous devriez consulter notre plateforme, Univjobs. Nous ne publions que des offres d'emploi spécifiquement pour les étudiants et les récent diplômés.