Mes conseils de développeur partie 1

Mes conseils de développeur partie 1

Alexandre P. dans Dev - Le 21-06-2022

Comment devenir un meilleur développeur ? J'ai consacré beaucoup de temps dans ma vie à mon apprentissage. J'y toujours passe le plus clair de mon temps et voici ce que j'ai appris...

Comment s'améliorer en programmation ?

Ce post reprend un précédent podcast que j'avais fait au sujet de s'améliorer en tant que développeur. Retrouvez le podcast audio sur comment s'améliorer en tant que développeur . Je tiens à préciser que cet article est un complément du podcast et ne reprend pas tout ce qui s'est dit précédemment, c'est pourquoi je vous recommande de l'écouter avant ou après cette lecture.

La programmation est une compétence qui demande du temps et de la répétition. A la manière d'un instrument de musique, ou d'une activité sportive, en pratiquant vous allez travailler vos réflexes musculaires, votre endurance, votre intelligence dans ce domaine, en revanche, il ne s'agit pas vraiment de travailler vos muscles, mais vous musclerez votre cerveau à le faire.

Il est indéniable que vous y développerez des automatismes et comme une boule de neige qui devient de plus en plus grosse en roulant, plus vous coderez, plus vous deviendrez meilleur.

Dans le sport, en musique, ou autre domaine de compétence, il y a cependant des exercices que l'on vous conseille de faire afin de travailler votre compétence. J'ai personnellement passé des années à faire et refaire les mêmes choses jusqu'à atteindre un niveau qui me satisfait et qui me permet de satisfaire toute demande. Pour vous donner un exemple, en 2016, je codais 10 heures par jour (en moyenne 260h par mois, soit plus de 3000h cette année là, Noël compris, jour de l'an compris et jours fériés inclus).

Cette année là, j'ai appris plus de choses qu'en 5 ans dans toute ma carrière...

Après avoir passé des années à coder voici ce que je vous recommande de faire pour exploser vos résultats et votre niveau en développement.

1 - Recoder des petites librairies que l'on utilise au quotidien

Le gestionnaires de paquet npm, composer et autre voire même les repo git sont remplis de projets et de librairies qui répondent à tous les besoins. Très souvent la mise en place de nouveau projet consiste dans les premiers jours à piocher lesquelles de ces librairies nous allons choisir afin de réaliser notre objectif.

Les librairies comme lodash, uuid etc, sont à la portée de n'importe qui !

On dit souvent qu'il ne faut pas réinventer la roue, mais ce n'est pas tout à fait vrai. Si ça vous prend 2 minutes pour faire quelque chose, faîte-le et commencez à réfléchir lorsque la chose en question vous prend au moins une journée.

Mon constat après avoir travaillé dans une dizaine d'équipes différentes : les gens savent de moins en moins comment faire les choses et c'est affolant ! Trop de développeurs sont persuadés que si une librairie existe alors elle répond forcément à notre problématique, sans tenir compte du besoin réel, sans se demander s'il n'y a pas de façon plus optimisée de faire quelque chose.

Il y a plusieurs raisons saines pour lesquels il est intéressant de recoder une librairie :

  • Comprendre réellement comment les choses fonctionnes (et croyez-moi, cela règle d'avance tous les problèmes que vous rencontrerez ensuite, bugs et autre)
  • Entraîner votre logique
  • Créer et utiliser uniquement ce dont vous avez besoin, parfois vous utilisez uniquement 5% d'une lib entière, pourquoi alourdir inutilement vos projets ?
  • Etre propriétaire du code source (pas uniquement pour faire joli, mais vous maîtrisez réellement votre repo ou votre package et cela évite les hacks et garantie la propriété intellectuel du reste de votre produit)

2 - Continuer à coder

Le fait de ne jamais arrêter de coder est un tremplin pour vos compétences.

Faites des projets en permanence

Il y a plusieurs raisons pour lesquels faire vos propres projets :

  • Vous faire plaisir sur un sujet qui vous passionne
  • Solutionner un problème du quotidien qui vous tient à coeur
  • Tester une nouvelle technologie (un langage, un framework) ou une nouvelle méthodologie (une organisation, un outil)

Lorsque vous travaillez sur un sujet qui vous intéresse réellement, vous décuplerez votre énergie. Vous attaquerez chaque session de dev avec une pêche comme jamais auparavant.

De même, vous serez forcément confronté à des bugs, ou des problématiques et le fait de trouver la solution vous fera progresser.

Si augmenter les poids sur une barre vous fait vous muscler davantage, régler des bugs musclera vos compétences de développeur.

Mon observation du marché du travail depuis des années est la suivante. Lorsqu'une technologie sort, rare sont les sociétés qui adoptent cette dernière directement dans leur projet. Cela a été le cas pour Node.js (tout le monde restait sur du PHP), pour React (tout le monde restait sur du jQuery), etc...

Cela vous laisse le temps, à la sortie d'une technologie qui vous intéresse, de vous familiariser avec cette dernière. Et là ou les recrutements sont parfois un peu vicieux, lors des entretiens 3 ans après la sortie d'une techno, les RH vous demanderont de justifier d'un maximum de temps d'expérience sur cette compétence, en sachant que le marché l'a adopté bien après... la belle blague. En attendant, si vous l'avez utilisé même dans un cadre personnel, vous sortirez votre épingle du jeu !

En regardant de plus près, quel est le plus gros risque d'une société lorsqu'elle décide d'adopter une nouvelle technologie ? La réponse c'est la perte de maîtrise. La société a peur de ne plus rien maîtriser en terrain inconnu, c'est pourquoi beaucoup restent sur leurs acquis et préfèrent tabler sur quelque chose de maîtrise.

Mais qu'est-ce que la maîtrise en définitive ? La maîtrise c'est avoir déjà échoué, et savoir comment sortir des problématiques (l'expérience !).

Plus vous passerez à l'action en créant, en vous trompant et en recommençant, vous développerez les skills de toute une vie.

3 - Faire de la relecture de code

Relire du code vous permet de voir différentes approches pour répondre à une problématique. Les chemins pour arriver à un résultat sont presque infinis. C'est une gymnastique intéressante de se mettre dans la peau d'un autre et de regarder son cheminement logique. A moins que la logique utilisée soit trop complexe ou tordu, ne jugez pas les autres sur leur implémentation.

Chacun est différent, chacun pense différemment, c'est pourquoi nous devons portez un regard bienveillant sur ce qui a été fait, et surtout veiller à ce que l'objectif soit atteint.

Ce processus vous permettra d'apprendre des autres, d'observer les choses sous un autre angle et vous permettra de continuer à développer votre compréhension de la programmation car je le redis, tout est affaire de compréhension.

La compréhension règle chaque bug, vous permet d'anticiper sur des problèmes et enlève toutes les barrières mentales que vous pouvez rencontrer en codant.

4 - Faire de la veille technique

Y a t-il quelqu'un sur youtube, sur git ou twitter qui maîtrise un sujet que vous souhaitez maîtriser ?

Cette personne pourrait être votre mentor, suivez cette personne, écoutez attentivement ce qu'elle a à dire. Lisez attentivement ses posts. Très souvent les développeurs partagent le fruit de leur recherches et leur observations. Si vous souhaitez apprendre également, rapprochez vous au maximum de ces gens là.

Combien d'entre-nous ont appris le développement en imitant du code que nous avons vu ? Cela ne retire en rien la compréhension de ce code. A partir du moment où tout ce qui est fait est clair à vos yeux, réutilisez ces informations que votre cerveau détient déjà ! L'avantage avec cette technique, c'est que plus vous le faite, plus vous le faites vites car vous développez des automatismes.

Par exemple, regardez combien de temps vous a pris la déclaration de votre première classe en orienté objet, comparé au temps que cela met au bout de la 1000e fois que vous le faîtes.

Le mimétisme est un excellent moyen d'apprendre et de progresser vite. Et plus la personne que vous mimez est doué, plus vous allez devenir vous-même talentueux.

De nouveau langages, de nouvelles librairies apparaissent chaque jour. Tous avec un seul et même but : répondre à un problème de développeurs !

Prenez le temps de tester ces outils, prenez des notes, créez des repo ou des gist, cela vous aidera probablement un jour ! Ou du moins, vous permettra de savoir à quoi sert cet outil et quelle problématique cela règle.

Lorsque vous devez mettre en place une solution, votre choix sera toujours de meilleurs qualité si vous êtes conscient des différents outils à votre disposition pour y arriver, car vous saurez pourquoi passer par tel chemin et pas l'autre.

5 - La magie des todo list

J'imagine que tout le monde aujourd'hui sait ce qu'est une todo list, maintenant comment le faire efficacement ?

Chacun des objectifs de votre todolist doit être réalisable en un jour.

C'est pourquoi, il faut toujours découper votre objectif en séquences. Et cela fait totalement sens, de la même manière que pour construire la muraille de Chine, on n'aurait jamais fait une tâche :

  • Construire la muraille

...mais plutôt un objectif découpé en centaines de mètres au quotidien.

De même pour faire décoller un avion, on ne ferait jamais :

  • Entrer dans l'avion
  • Faire décoller l'avion

Cela demande réellement un travail qui relève de la conception, que de savoir observer chacune des étapes nécessaires pour réaliser un objectif. Et s’entraîner à faire cela, vous fera progresser sur les points suivants :

  • La conception (avoir la vision du chemin vers l'objectif)
  • Pouvoir estimer plus facilement le temps moyen pour réaliser une solution (calculer la distance vers l'objectif)
  • Etre motivé (car chaque jour, on voit la progression et l'objectif se rapproche)
  • Savoir expliquer (car on sait où l'on se positionne par rapport à l'objectif)

Nous continuerons cette exercice dans un prochain article où l'on parlera des tests unitaires et d'autres techniques pour améliorer notre compétence.

#conseils#programmation#progresser

user picture
Alexandre P.

Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.