Livres que les développeurs juniors devraient lire

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 soyez assez expérimenté en tant que programmeur, vous vous rendrez compte que le temps que vous avez travaillé à un emploi n'est pas le meilleur moyen de déterminer vos compétences et vos connaissances en tant que programmeur. (Je sais, dis ça aux recruteurs?).

Ce que vous faites pendant votre temps libre et la façon dont vous choisissez de prendre l'apprentissage en main est ce qui déterminera en fin de compte votre succès dans ce secteur. C'est pourquoi il est si important pour nous en tant que développeurs d'adopter une mentalité de croissance.

Il existe d'excellents moyens d'apprendre et de s'améliorer en tant que développeur. Certains de ces moyens sont 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 façons préférées d'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 de perspicacité dans un artefact permanent.

Voici mes recommandations personnelles que je pense que tous les développeurs (en particulier 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 vous donner des règles pratiques sur ce que signifie être un bon développeur au niveau interpersonnel et professionnel.

Divulgation: Certains des liens ci-dessous sont des liens d'affiliation. Mais, je n'ai ajouté que les livres que je considère personnellement utiles pour un développeur junior.

1. Code propre

par Robert C. Martin (Oncle Bob)

Après avoir surmonté les défis de base du développement et avoir compris comment écrire du code pour résoudre des problèmes, ce serait une bonne idée de jeter un œil à ce livre. Il s'avère que faire fonctionner le code la première fois est en fait la partie la plus facile. Le plus dur est de faire en sorte que votre code soit bien lu afin que d'autres puissent le comprendre et le changer à l'avenir.

Vous vous souvenez de la dernière fois que vous avez dû lire un code comme celui-ci?

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 que ça fait vraiment. Un code comme celui-ci pourrait fonctionner, mais au moment où nous devons le changer, nous devons espérer que l'auteur du code est toujours dans l'entreprise et prier pour qu'ils soient en quelque sorte capables de déchiffrer ce qu'ils ont écrit il y a potentiellement des années.

Lorsqu'on ne prend pas soin d'écrire du code lisible et maintenable, on se retrouve avec des poches de code comme celle-ci que tout le monde a peur de toucher, et si jamais ça casse, on a des problèmes.

Le «Clean Code» d'oncle 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 insignifiante pour la plupart, mais vous seriez surpris de voir à quel point transformer quelques principes de conception de logiciels propres 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 la construction d'une application en principe. Nous devons prêter attention aux détails, sinon tout cela peut devenir très coûteux à réparer à l'avenir si ce n'est pas bien fait du premier coup.

2. Le Clean Coder

par Robert C. Martin (Oncle Bob)

Ce livre n'est pas nécessairement un livre technique car c'est un livre pour vous apprendre à devenir 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 métier et seront déterminés à adhérer à leurs valeurs professionnelles.

Le Clean Coder regorge de conseils pratiques sur l'estimation, la refactorisation, les tests, la gestion des conflits, les horaires, la prévention de l'épuisement professionnel et bien plus encore. Des conseils fiables de quelqu'un qui a passé des décennies à faire ce genre de choses.

L'une des meilleures choses qu'il enseigne, c'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

par Martin Fowler

Martin Fowler est l'un de mes auteurs préférés. La première raison est qu'il est hilarant. Son approche de l'écriture de livres de logiciels est incontestablement «Fowler». L'autre raison est qu'il est incroyablement doué pour expliquer des sujets complexes, et ce, très simplement, d'une manière qui ne vous fatigue pas en tant que lecteur.

Refactoring est un livre que le créateur de Ruby on Rails a dit un jour que vous devriez «lire avant d'écrire une autre ligne de code». Fowler vous guide à travers la refactorisation d'une application simple, vous présentant un certain nombre de techniques qu'il a accumulées et cataloguées au cours de ses années de conseil.

Fowler vous montre comment basculer entre le codage et le refactoring, à quelle fréquence vous devez valider votre code et quand vous devez écrire vos tests. Hautement recommandé. La dernière version de ce livre a été mise à jour pour présenter les exemples en JavaScript, ce qui a été un plus pour moi car c'est ma langue préférée.

4. Modèles de conception: éléments d'un logiciel orienté objet réutilisable

par Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides

Ceci est le livre fondateur sur les modèles de conception. Quels sont les modèles de conception, demandez-vous? Les modèles de conception sont des solutions bien connues aux problèmes courants dans le développement de logiciels. Si vous êtes familier avec les modèles, vous constaterez que vous serez en mesure de réduire considérablement le temps qu'il vous faut pour proposer des solutions à ces problèmes.

Avoir une bonne connaissance des modèles de conception vous permet également de communiquer efficacement vos solutions avec d'autres développeurs.

«Ouais, je viens d’utiliser une façade sur l’adaptateur de base de données chargé à partir de la stratégie.»

«Ahh! Je t'ai eu."

Ouais, c'est un livre plus ancien. Mais c'est toujours l'un des meilleurs pour référence. Si vous souhaitez quelque chose sur ce sujet qui soit un peu plus récent et convivial, je vous recommande également le bon «Head First Design Patterns: A Brain-Friendly Guide» d'Eric Freeman.

5. Conception axée sur le domaine: aborder la complexité au cœur du logiciel

par Eric Evans

Pour que les grandes bases de code continuent à évoluer, nous devons diviser le code de manière logique en différentes parties. L'idée est de partitionner votre code de manière à ce que des équipes distinctes puissent travailler sur ces parties de votre système sans affecter personne d'autre.

The underlying concept that enables moving your code base in this direction is Domain-Driven Design (DDD). It’s an approach to software development where we model the problems that exist in the “problem domain” (the real world) to a number of solution domains.

DDD is incredibly important when a code base gets sufficiently large. Large enterprise companies employ DDD in order to assign teams to parts of the company’s code base.

Eric Evan’s coined the term “Ubiquitous Language”, which is the term for building a common, all-encompassing language between the developers, the domain experts and any other users or actors in the domain. By using this Ubiquitous Language, it ensures that the most important domain concepts are well understood and get modeled in the software.

The book is a little more technical and challenging than the others, but if you get familiar with these concepts, you’ll be very well off in understanding how today’s largest companies keep their code bases manageable and scalable.

**Update: April 17th, 2019**

I’ve thought about this recommendation a little bit. Introduction to the DDD world is, in my opinion, extremely beneficial for Junior Developers. I believe this to be true because DDD places importance on familiarity with software architecture, designprinciples and design patterns. It’s a great way to practically introduce yourself to a higher level of programming.

That said, DDD is a large and challenging topic. For some readers, this book (the seminal “blue book”)by Eric Evansmight be better treated as a reference. It was Eric Evans who wrote the first book on DDD.

However, I just recently finished reading DDD Distilled by Vaughn Vernon. It’s a really short and sweet intro to DDD, written in order to address the fact that most books on DDD are huge in size.

Definitely try DDD Distilled instead. I think this book would be a lot better for most developers in order to get ramped up on the DDD essentials first. For more practical details on how to implement the concepts, refer back to “the blue book” and “the red book”.

6. Soft Skills: The Software Developer’s Life Manual

by John Sonmez

We should strive to stay well-balanced as a software developer. Unfortunately, being well-balanced is not a trait that most people affiliate with software developers. The truth is, it’s incredibly important to invest in your learning, health and overall well-being as a developer.

“Soft skills” is about the important stuff that matters outside of actually coding, like productivity, career goals and personal finance. Sonmez also goes into investing, how he retired at 33, fitness hacking tips and maintaining relationships - things rarely addressed in the programming community.

It’s written in such a way that you can jump into the book at whichever chapter you think is most relevant to you today.

7. Clean Architecture

by Robert C. Martin (Uncle Bob)

What? Uncle Bob writes good books, ok?

In school, there’s a lot of focus on algorithms and less focus on software design principles. I think it’s kind of unfortunate because in reality, you don’t encounter that many algorithm challenges too often. Instead, it’s more common that you’ll be faced with the challenge of structuring your code in a way that’s modular, flexible, readable and will allow you to add new features quickly when requirements change.

Clean Architecture is about the essential software design principles and patterns that you’ll be able to use in order to face these challenges.

Some of the best takeaways from this book are the cost of dependencies, stable vs. non-stable code and the SOLID principles: a way to write code so that it’s more understandable, flexible and maintainable.

Other aspects of this book that were incredibly useful were concepts of “screaming architecture” and “packaging by component” which are opinions on how to organize your modules so that it practically screams to the reader exactly what the project is all about.

This book goes well hand-in-hand with Domain-Driven Design, which is enabled through the use of a “Layered Architecture” or as Uncle Bob calls it, “The Clean Architecture” (also known as Ports and Adapters). A great book for anyone who wants to up their architecture chops and learn how to effectively design a system at a high level, and do the dance of dependencies at the detail level.

8. The Effective Engineer

by Edmond Lau

Time is our single most valuable asset in life, and we should aim to be more efficient with it. It’s easy to get bogged down and spend a lot of time fixing bugs and wasting effort. Doing repeated work. Bleh. The Effective Engineer is all about getting more done in less time and removing repeated work.

We can mitigate wasted time and effort on repetitive tasks through a framework called “leverage”.

Leverage helps you identify the activities that you can do that produce the most disproportionate results- per unit of time invested. It’s a framework that can apply to anything, whether that be how you learn, how you code, how you debug… anything!

9. The Pragmatic Programmer

by Andrew Hunt & David Thomas

Praised for being easy to follow and understand, The Pragmatic Programmer is a book that should be on the desktop of developers of all levels. Andrew and David are programmers that not only spent many years doing what they do, but paying attention to what they were doing as they were doing it, and then trying to determine if they could do that better.

What came out of their years of introspection was this book, which introduces a number of essential programmer philosophies to follow throughout your career, like “programmers should have a “do it once, or automate” philosophy”.

It includes simple yet detailed advice that you should carry with you in the back of your mind before you write another line of code or start a new project.

Final Words

Books really are some of the best tools to improve your knowledge and skills as a new programmer or Junior Developer. Books tend to have a really high return on investment; did you know you can make a lot of money programming? ?

These are just a few of the best books out there right now in 2019! None of them are really new, but that’s because programming has maintained the same general philosophies and best practices for years. As a professor I once had to say, “you can make a lot of money in this industry, you just have to read the damn manual”.

Have you read any of these books? What did you think? Any books not on this list that you think newer developers would really benefit from reading? Let us know in the comments!

Additional Resources

Here’s a list of some really excellent articles that cover some of the topics from these books. If you don’t quite have the time to invest in fully blown books right now, familiarizing yourself with these concepts might assist you in your journey to become a better developer!

Surviving Your First Junior Developer Job [Guide] ??

//univjobs.ca/blog/developer-guides/ultimate-guide-for-first-junior-developer-job-success/

Refactoring.guru

//refactoring.guru/

SOLID Design Principles

//stackify.com/solid-design-principles/

DRY (Don’t Repeat Yourself)

//en.wikipedia.org/wiki/Don%27t_repeat_yourself

NodeJS and Good Practices

//blog.codeminer42.com/nodejs-and-good-practices-354e7d76362

Implementing the SOLID and the onion architecture in Node.js

//dev.to/remojansen/implementing-the-onion-architecture-in-nodejs-with-typescript-and-inversifyjs-10ad

Better Software Design with Clean Architecture

//fullstackmark.com/post/11/better-software-design-with-clean-architecture

The Clean Architecture

//blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

My upcoming free resource, an introduction to software architecture and design principles with Node.js and TypeScript

//khalilstemmler.com/resources/solid-nodejs-architecture

Keep growing, and have fun while you’re at it!

If you’re a Canadian student or recent-grad looking for entry-level developer opportunities or co-ops/internships, you should check out our platform, Univjobs. We only post jobs specifically for students and recent-grads.