Découvrez comment prioriser les différentes notions tech pour monter en compétences efficacement.
Une des choses les plus frustrantes dans l’apprentissage du développement est le temps qu’il faut pour démarrer de zéro jusqu’à la mise en production d’une première application fonctionnelle. Au démarrage, le nombre d’éléments à maîtriser semble insurmontable.
Puis après quelques semaines de pratique d’un langage de programmation, vous (ou votre organisme de formation) sautez sur un framework et en quelques heures vous arrivez à avoir un prototype fonctionnel sur votre machine.
Bravo 👏🏻 ! Vous êtes maintenant développeur ou développeuse « Fullstack » ! 👩💻
Pas si vite !
Malgré les dires des organismes de formation, vous ne pouvez pas devenir développeur employable après quelques semaines ou quelques mois de formation accélérée. Il va falloir continuer à travailler sur votre montée en compétences et assurer une veille techno active pour progresser et arriver au niveau nécessaire pour décrocher votre premier CDI en tant que développeur.
Rendons à César ce qui lui appartient, les formations accélérées ont eu le mérite de t’avoir appris à coder rapidement. Après ta formation, il va falloir te baser sur tes nouvelles compétences et continuer à étudier pour combler tes lacunes et devenir employable.
Et c’est là que la nouvelle difficulté se présente !
Après avoir été guidé pendant des mois sur les notions à pratiquer en formation, vous vous retrouvez seule dans votre barque au milieu d’un océan de notions tech et aucune idée de quelle direction aller.
Entre votre intuition, les conseils contradictoires que vous pouvez lire sur les réseaux sociaux ou les groupes de discussions, difficile de savoir comment faire une montée en compétences efficace quand on démarre sa carrière de développeur.
Dans cet article, je vais vous expliquer mon approche que je conseille à mes étudiants lors des sessions de coaching.
Les cercles de compétences
Pour y voir plus clair dans cet océan de technologies, j’ai divisé les différentes notions en trois cercles concentriques que j’appelle les cercles de compétences.
Les cercles de compétences
Les compétences cœurs sont celles à pratiquer le plus
Certaines disciplines ont besoin de beaucoup de pratiques pour être assimilées. Ce sont celles que je rassemble dans le cercle le plus au centre appelé les compétences cœurs.
Parmi ces compétences on y retrouve:
- La maîtrise de ton langage de programmation
- Savoir coder des tests automatisés
- Savoir utiliser Git et Github
- Savoir utiliser un shell Linux
Priorité à ton langage
Bien que le framework soit la compétence demandée par les entreprises dans les offres d’emploi, il est plus important de prioriser la maîtrise du langage de programmation avant la maîtrise d’un framework.
Les frameworks ont été conçus pour aider les développeurs à aller plus rapidement en leur fournissant des fonctionnalités prêtes à l’emploi. Le but du framework est de faciliter la vie du développeur et il doit être facile à prendre en main.
Si tu bases tes compétences sur le framework, tu auras du mal à débugger quand quelque chose ne se passe pas comme prévu dans la doc ou les tutos et tu ne sauras pas passer d’un framework à un autre sans avoir une grande courbe d’apprentissage.
Maîtriser ton langage de programmation passe par l’exercice de celui-ci dans plusieurs katas de code. Plusieurs sites comme codewars ou leetcode te proposent des exercices qui te feront travailler la maîtrise de ton langage comme ton algorithmie.
Savoir coder des tests automatisés
Savoir coder des tests automatisés n’est pas la première compétence attendue d’un développeur junior. Certains diront que c’est important moins crucial que des fondements tels que l’algorithmie (je ne suis pas forcément d’accord avec celui-ci), les designs patterns, les paradigmes de programmations …
Sauf que coder des tests automatisés est obligatoire dans les projets d’entreprises ayant une envergure moyenne à très grande. Les tests automatisés préviennent les régressions fonctionnelles qui arrivent lorsqu’un ajout de code vient casser un autre élément dans l’application.
Pour toute application, lorsque le code source atteint une certaine taille, il n’est plus possible d’effectuer les tests manuellement à chaque fois qu’un nouveau bout de code est ajouté. C’est pourquoi les tests automatisés deviennent obligatoires.
Pour un développeur junior, le fait de savoir utiliser une librairie de test automatisée et de monter qu’il a déjà codé des tests unitaires, aussi basiques soient-ils, est une preuve qu’il a assuré sa montée en compétences dans la bonne direction et qu’il est aligné avec les priorités de l’entreprise.
Entre deux CV égaux, le développeur qui s’est initié aux tests, aussi bien dans la pratique que dans l’étude théorique de la pyramide des tests, sera celui qui gagnera le plus l’attention du recruteur et de l’équipe tech.
Les compétences « écosystème » demandent théorie et pratique
Les compétences dans le cercle écosystème représentent les notions où il faudra mêler théorie et pratique. Certaines seront plus axées sur la pratique, d’autres sur la théorie mais elles sont moins critiques que les compétences cœurs.
Parmi les compétences « écosystème » on retrouve:
- Le framework sur lequel vous souhaitez vous spécialiser
- Le clean code
- Les design patterns
- Les paradigmes de programmation
- Comprendre la complexité d’un algorithme
- Maîtriser les fonctionnalités avancées et les raccourcis clavier de ton IDE
- Utiliser le débugger de ton IDE sur le code et sur les tests
- Les concepts de conteneurisation et Docker
- Manipuler une base de données SQL ou une base de données MongoDB
Alterner la théorie
Certaines notions, comme les bonnes pratiques d’ingénierie logicielle, les design patterns ou certains paradigmes de programmation, vont être difficiles à mettre en pratique au début de votre montée en compétences.
À ce stade, il est intéressant de les étudier à travers des lectures d’articles, de livres et de vidéos éducatives que vous pourrez retrouver sur YouTube.
Et la pratique
D’autres notions, comme la prise en main d’un framework, vont demander de la pratique. Vous pourrez l’appliquer dans la réalisation d’un projet perso. Dans ces moments d’étude vous pourrez mettre en pratique en utilisant le framework de votre choix, par exemple NestJS ou ExpressJS si vous faites du Node, ou NextJS si vous faites du React.
La culture générale tech
Enfin viennent les notions que je catégorise dans la culture tech. Cette catégorie regroupe l’ensemble des autres notions qui composent le monde de la tech.
En tant que développeur junior, vous n’avez pas forcément besoin d’apprendre à manipuler Kafka ou ElasticSearch. En revanche c’est intéressant de comprendre ce qu’est un middleware de messagerie ou de pouvoir expliquer « grosso modo » comment fonctionne la recherche et quels sont les principaux outils qu’un développeur peut utiliser pour l’implémenter dans son application.
La culture tech dépend de votre curiosité à découvrir comment les différentes briques qui composent le web fonctionnent. Elle sert de fondation à votre veille techno et servira de preuve de votre passion lors de vos entretiens d’embauche.
Adaptez votre roadmap de progression à votre plan de carrière
Afin de définir une roadmap de progression pertinente à votre profil, il faut prendre en considération votre plan de carrière.
Quel que soit votre niveau, je vous encourage à choisir au plus vite une spécialité entre développeur frontend, backend, mobile ou devops. En effet, un développeur Frontend devra s’intéresser plus rapidement à des notions telles que la Jamstack ou les préprocesseurs CSS alors qu’à l’inverse, un développeur backend ou devops devra s’intéresser aux infrastructures cloud plus rapidement.
L’important est de consacrer une grande majorité de son temps aux compétences cœurs, jusqu’à avoir une bonne appréhension de celles-ci. Inutile de chercher la maîtrise absolue mais une bonne prise en main est nécessaire.
Quant aux différentes notions de la culture tech, l’essentiel est de se faire plaisir et d’assouvir sa curiosité. Lisez autant que vous le pouvez, sans pour autant vous laisser submerger par le sujet. Une simple découverte en surface est suffisante.
Si vous souhaitez plus d’accompagnement sur votre montée en compétences, je t’invite à t’inscrire à l’Academy Practical Programming où tu pourras retrouver des guides et des outils pour t’aider à avancer vers ton employabilité.