Article original : What Is a Senior Developer and How Can I Become One?
Devenir un Développeur Senior est un objectif que beaucoup d'entre nous s'efforcent d'atteindre tout au long de notre parcours de code et de notre carrière. Mais que signifie réellement être un développeur « Senior » ?
Ce qu'un développeur senior n'est pas
Avant de commencer, clarifions un point. Contrairement à ce que vous verrez sur plus de 95 % des offres d'emploi en ligne, un Développeur Senior n'est pas strictement corrélé au seul nombre d'années figurant sur votre CV.
Il est vrai, le plus souvent, que de nombreuses années de travail apportent généralement beaucoup d'expérience. Et dans certaines entreprises, vous pouvez vous en sortir avec seulement cela. Mais ce n'est pas la seule qualité qui prouve légitimement que quelqu'un est à un niveau Senior.
C'est un problème courant dans le monde du logiciel qui peut mener à des attentes élevées pour des résultats faibles. Cela peut également entraîner des conflits au sein de l'équipe lorsque votre nouveau Développeur Senior 10x avec 15 ans d'expérience refuse de travailler avec les autres.
Alors, que pouvons-nous faire pour nous préparer à ce rôle ?
Qu'est-ce qui fait un développeur senior ?
En repensant à ma carrière et aux développeurs de mon équipe que j'ai le plus admirés et respectés, tout se résume en réalité à quatre qualités :
- Expérience
- Leadership
- Mentorat
- Capacité technique
Il ne suffit pas de considérer l'un de ces éléments comme la seule représentation de la performance d'une personne au sein d'une équipe. Chaque développeur est unique et peut être plus fort dans une qualité que dans une autre. Mais il est important de voir comment ces qualités s'assemblent pour déterminer comment quelqu'un aidera votre équipe à progresser.
Analysons chacune d'elles un peu plus en détail.
Expérience
L'expérience est généralement perçue comme le nombre d'années passées au travail, et bien que ce ne soit pas totalement inexact, cela ne raconte pas toute l'histoire.
Tout comme chaque développeur est unique, son expérience l'est aussi. Alors qu'un développeur peut avoir passé cinq ans à un poste intensif où il a résolu des défis techniques complexes chaque jour, un autre peut s'être tourné les pouces dans une petite boutique locale où sa seule responsabilité était de mettre à jour le site web chaque semaine.
Et ce n'est pas forcément une mauvaise chose ! Nous avons chacun notre propre parcours et devons équilibrer nos vies en conséquence. Mais il n'est pas réaliste de dire que ces 5 années étaient identiques.
Alors, que signifie réellement l'expérience ?
Reconnaître les schémas issus des travaux précédents
Chaque développeur a une histoire (qu'il s'en souvienne ou non) concernant une erreur aléatoire sur laquelle il est tombé au cours de son expérience de développement. Cela peut concerner JavaScript, webpack, ou même votre système d'exploitation, et cela n'a tout simplement aucun sens !
Mais que ce soit grâce à un collègue ou en cherchant sur Google, vous finissez par trouver la solution. Et trois mois plus tard, lorsque vous travaillez sur un autre projet et que vous rencontrez la même chose, vous n'avez même pas besoin de chercher sur Google, ou vous savez déjà quoi chercher. Vous connaissez déjà le problème et pouvez le dépasser rapidement pour passer à autre chose.
C'est ce genre d'expérience qui fait la différence. Être capable de reconnaître des schémas, que ce soit à cause d'une erreur ou parce que c'était un grand succès, est ce qui aide chacun d'entre nous à progresser. Ce sont ces expériences qui aident une équipe à grandir lorsque les autres sont bloqués et que vous pouvez les sortir d'un mauvais pas.
Reconnaître ce que vous ne savez pas
Il est également important de comprendre ce que vous ne savez pas. Je pense qu'une partie de ce qui contribue à ma propre lutte personnelle contre le syndrome de l'imposteur est que plus j'apprends, plus je réalise que je ne sais pas grand-chose.
Mais cela ne devrait pas être perçu comme une chose mauvaise ou effrayante. Cela devrait être une source d'inspiration. Cela signifie que votre métier, sur lequel vous travaillez, a encore énormément de choses passionnantes à explorer !
Il est important de réaliser l'impact que cela a sur votre travail et sur le reste de l'équipe. Par exemple, cela n'aide personne si vous agissez comme si vous saviez tout et que vous vous engagez sur une quantité énorme de travail. Lorsque vous vous engagez dans ce travail alors qu'en réalité vous ne le comprenez pas, cela pourrait faire dérailler votre sprint, ce qui peut frustrer toute l'équipe (et le client).
Que ce soit lors de la planification ou pendant le développement, n'ayez pas peur de demander de l'aide. Sortez la tête de l'eau et levez la main ! Ce n'est pas parce que vous êtes le seul Développeur Senior que vous ne pouvez pas apprendre quelque chose d'un membre Junior de l'équipe.
Essayez de bien regarder d'où vous venez, ce que vous comprenez et où vous auriez intérêt à approfondir vos connaissances.
Leadership
En tant que membre senior d'une équipe, j'attendrais d'un développeur qu'il ait une tendance naturelle à diriger. Bien que cela ne signifie pas que vous deviez être un Tech Lead officiel sur un projet ou prendre toutes les décisions finales, cela signifie que vous devriez avoir un niveau de base vous permettant d'aider à faire avancer le projet.
Comprendre la vision d'ensemble
Si vous avez travaillé sur des projets avec des membres d'une équipe, vous devriez savoir que chaque projet ou fonctionnalité s'accompagne généralement d'un ensemble de stories à traiter pour aboutir. Chaque story doit être un élément ciblé qui aide à accomplir un objectif plus large.
Là où cela devient difficile, c'est si personne dans l'équipe ne comprend comment chacune de ces stories aide à atteindre cet objectif global. En tant que Développeur Senior, vous devriez être capable de voir comment chaque pièce s'insère dans le puzzle et pourquoi la story est rédigée avec des critères d'acceptation spécifiques. Et si vous ne le savez pas, vous saurez comment obtenir les réponses et vous assurer qu'elles sont communiquées à l'équipe.
Si vous n'êtes pas sûr de la direction à prendre, essayez de prendre du recul. Essayez de voir où cela s'insère. Aidez à mener l'équipe du projet vers cet objectif ultime.
Aider à orienter les membres de l'équipe moins expérimentés
Cela vient naturellement avec la capacité d'aider à guider ceux de notre équipe qui sont plus juniors ou moins expérimentés. Il est courant pour les développeurs de perdre de vue la vision d'ensemble. Mais comme nous venons d'en discuter, un Développeur Senior devrait être capable d'avoir continuellement une bonne idée du projet global et de la place des différentes stories dans l'epic plus large.
Aidez à guider les autres membres de votre équipe pour les mettre sur la bonne voie. Bien qu'il soit bénéfique pour tout le monde de comprendre comment tout s'imbrique dans la vision d'ensemble, il est parfois plus judicieux d'aider un individu à se concentrer sur la manière dont sa tâche spécifique s'y insère.
Essayez de reconnaître cette difficulté lorsque vous travaillez avec les autres, que ce soit en les encourageant à poser plus de questions ou en les guidant s'ils ne sont pas tout à fait sur la bonne voie lors de la révision de leur code.
Mentorat
Il est souvent plus pratique de travailler tête baissée et de ne pas avoir à se soucier de ce que font les autres, mais est-ce vraiment bénéfique pour quelqu'un ?
Aider à faire progresser les autres membres de l'équipe
Vous êtes peut-être ce qu'on appelle un développeur 10x, mais tout faire vous-même sans aider les autres ne peut que ralentir l'équipe globale. Souvent, vous vous retrouverez à ramasser les morceaux que vous auriez pu facilement éviter si vous aviez passé une seconde de plus à travailler en binôme avec quelqu'un d'autre de votre équipe.
C'est aussi mauvais pour le moral. Personne ne veut se sentir seul sur un projet, et encore moins en tant que junior. Le logiciel est un monde vaste et effrayant ; un peu de conseils peut grandement aider les autres à devenir plus productifs et, par conséquent, favoriser un environnement plus heureux et moins stressant.
Il est facile d'oublier que nous avons tous été un membre junior de l'équipe à un moment donné. Alors que vous pouvez considérer certaines choses comme acquises, les concepts peuvent être très difficiles à saisir pour d'autres.
Gardez à l'esprit que nous sommes tous dans le même bateau. Célébrez les victoires, qu'elles soient grandes ou petites. Si quelqu'un est en difficulté, proposez votre aide.
Partage de connaissances
Le partage des connaissances est une chose avec laquelle beaucoup d'équipes ont du mal. Bien que nous espérions tous qu'il existe un moyen d'y parvenir, la plupart du temps, le problème reste entier. Alors, que pouvons-nous faire ?
Prenez sur vous de partager ce que vous savez. Vous venez de retravailler la logique métier principale ? Proposez 30 minutes pour présenter le code à tout le monde. Mettez-vous en binôme et partagez votre écran avec votre réviseur de code s'il a du mal à le comprendre.
C'est quelque chose que nous pouvons encourager tout le monde à faire. Vous apprendrez naturellement davantage en présentant votre travail, car cela renforce ce sur quoi vous venez de travailler. C'est utile, que vous soyez Senior ou que ce soit la première fois que vous ouvrez un éditeur de code.
Capacité technique
J'ai intentionnellement voulu laisser cela pour la fin. C'est parce que, bien que ce soit important, votre parcours pour devenir un Développeur Senior comporte plus d'aspects que le simple fait d'être vraiment, vraiment bon dans un domaine.
Capacité à se mettre en mouvement rapidement
En tant que Développeur Senior, j'attendrais d'un autre Développeur Senior qu'il devienne productif sur un sujet plus rapidement qu'un Développeur Junior. S'il est un expert en JavaScript, j'attendrais de lui qu'il comprenne les principes fondamentaux et les modèles du langage.
Mais pour en revenir à l'idée de reconnaître ce que vous ne savez pas, il n'est pas raisonnable d'attendre de tous les Développeurs Senior qu'ils sachent tout. Je ne considérerais pas un expert en Ruby comme moins Senior parce qu'il ne connaît pas JavaScript, mais j'attendrais de lui qu'il comprenne comment appliquer ce qu'il sait lorsqu'il construit et apprend un autre langage.
Promouvoir les modèles logiciels
Le plus souvent, le modèle de code que vous venez d'inventer n'est pas nouveau. Et c'est très bien ainsi ! L'objectif de la création de logiciels de qualité n'est pas nécessairement d'être unique dans chaque solution.
C'est pourquoi nous pouvons apprendre des travaux passés en voyant ce qui a réussi et ce qui n'a peut-être pas si bien fonctionné, afin de trouver des modèles qui fonctionnent pour vous et votre équipe.
Des modèles comme MVC (Modèle-Vue-Contrôleur) ne sont pas devenus populaires sans raison. Les développeurs ont appris du passé et de leurs pairs qui ont résolu de grands défis logiciels. Grâce à ces connaissances, ils peuvent appliquer les solutions à leur propre travail. Il ne s'agit pas de réinventer la roue, il s'agit de résoudre des défis et de fabriquer un bon produit.
Nous avons tous nos propres parcours uniques devant nous
Peu importe ce que l'on vous dit, nous avons tous nos propres parcours de code uniques. Ceci est destiné à vous encourager et à vous inspirer à devenir un meilleur développeur global et à comprendre comment votre travail impacte le reste de l'équipe.
Bien que vous puissiez certainement réussir sans prendre ces éléments en considération, vous pourriez passer à côté de traits fondamentaux qui pourraient faire que les gens n'aient pas envie de travailler avec vous d'un point de vue humain.
Quel que soit votre parcours, gardez ces éléments à l'esprit à mesure que vous progressez pour devenir un meilleur développeur !
Selon vous, qu'est-ce qui fait un bon développeur senior ?
Pensez-vous que j'ai vu juste ou que je suis complètement à côté de la plaque ? Partagez votre avis avec moi sur Twitter !