Comment restez attractif en tant que développeur(euse) ?

En dehors du titre, le générique masculin est utilisé sans aucune discrimination et uniquement dans le but d'alléger le texte.

Comment rester attractif en tant que développeur(euse) ?

Quel framework et/ou quel langage faut-il connaître en tant que développeur ? C’est l’une des questions je reçois le plus. Le problème c’est que c’est pas la bonne question.



Obsolescence programmée

C’est pas la bonne question parce que la réponse va pas t’aider pour le vrai problème que t’essayes de régler. Le vrai problème est beaucoup plus général. Comment rester attractif sur le marché de l’emploi en tant que développeur ? C’est de ça qu’on cause.

Au début, surtout parce que j’avais la flemme, je répondais avec une liste de technologies. Je sortais de mon cul une de ces top list tendance automne/été 2020 de langage et framework. Aujourd’hui, pour une fois, j’ai décidé d’allumer mon cerveau. Je me suis vraiment posé la question.

Je t’en ai parlé à peu près 35 000 fois sur ce blog, tu le sais, les technologies vont et viennent. En particulier les frameworks. Je pourrais juste te dire : “apprends ce qui est populaire”, ça marcherait.

Ça marcherait pour un temps limité. Et après ce temps, il faudra s’y remettre. Et je sais que t’aimes ça, mais c’est un combat sans fin d’apprendre tout ce qui est populaire.



attractif


Avec assez de temps, tous les outils, langages et frameworks vont perdent en popularité au point où les entreprises n’en voudront plus. Ou du moins, ils seront largement détrônés au point où tes choix de carrière seront limités. Ton savoir a donc une date de péremption. Il faut d’abord investir ton temps sur quelque chose qui n’a pas d’obsolescence programmée.



Maîtrise les fondamentaux

Il y a un seul domaine où les choses ne bougent pas en informatique. Les fondamentaux. C’est important de connaître un langage et/ou un framework. C’est indispensable de maîtriser les fondamentaux. Sans ça, tu joues avec ton caca. Il faut apprendre la programmation de façon générale.

Pour maîtriser le framework ReactJS il faut d’abord que tu maîtrises le langage de programmation Javascript. Pour maîtriser le langage de programmation Javascript il faut d’abord que tu maîtrises les fondamentaux de la programmation. Et si tu maîtrises les fondamentaux, ça sera facile pour toi d’apprendre ce que tu veux. Tu pourras t’adapter à n’importe quelle situation !



bambino


Beaucoup de développeurs font l’inverse et commencent par le framework. C’est pour ça que c’est le bordel dans leur tête et dans leur code. Regardons les étapes pour éviter ça.



Algorithme et structure de données

Difficile de faire plus basique que ça. Ce savoir est transverse à tout dans la programmation. Voilà quelque chose qui ne bouge pas. Ce qui est intéressant avec cette partie c’est qu’elle peut être très simple comme extrêmement compliquée.

Si tu cherches juste à apprendre la programmation pour faire des choses “simple”, c’est assez rapide. Comment transformer de la logique en algorithme simple. Les conditions, les boucles, les opérateurs, la récursion et tout ce qui va avec. Et puis il y a les types de données et comment les structurer. Là, on parle de comment stocker et utiliser des données. Les tableaux, les strings, les listes, etc etc.

Si tu cherches à faire des choses “complexe”, ça devient très vite plus long. Là on parle d’algorithmes de tri dans des graphs et de programmation dynamique avec des matrices. Pour entrer chez les grands noms comme Google, Facebook ou Amazon il faut être expert là-dedans. Donc je t’en parle, mais dans la vraie vie t’auras sûrement pas besoin d’aller aussi loin.

Je suis très loin de maîtriser la partie complexe de cette partie personnellement. Mon conseil c’est d’adapter la complexité de ce que t’apprends sur cette partie en accord avec ce que tu fais. Mais cette partie reste absolument incontournable !

Ma principale source d’apprentissage sur ce point : https://www.geeksforgeeks.org/



Paradigmes et patron de conception

Une fois que tu maîtrises assez la logique et la structuration des données pour ton besoin, c’est important de maîtriser le paradigme que tu utilises. C’est également intéressant de connaître plusieurs paradigmes, mais doucement faut y aller par étapes.

Pour faire de l’objet, il faut que tu comprennes bien la programmation-objet. Ca semble évident, mais ça ne l’est pas pour tout le monde. Je dis ça parce que tu peux faire plein de choses sans tout comprendre. Le souci c’est que tu t’exposes à des problèmes incompréhensibles quand ça plante à cause d’une lacune à ce niveau-là.



attractif


Les patrons de conceptions sont également tes amis. Ça aussi ça bouge pas. Des solutions propres et qui ont prouvé leur efficacité sur la plupart des problèmes de conception que tu vas rencontrer. Ça sert à rien de tout savoir par cœur. Il suffit de les comprendre et de savoir quand les appliquer.

Dans la même logique, quand tu fais du fonctionnel c’est mieux de maîtriser la programmation fonctionnelle. Ce paradigme est de plus en plus populaire et présente plein d’avantages par rapport à l’objet.

Enfin je te conseille fortement d’aller consulter ma compilation de compétences clefs pour tous les développeurs. Tu vas être inarrêtable après tout ça.



La clef c’est la facilité d’apprentissage

En maîtrisant ces fondamentaux, apprendre un langage et/ou un framework est beaucoup plus facile et rapide. C’est comme ça que tu restes attractif ! Sans ça, apprendre quelque chose de nouveau sera toujours effrayant, long et pénible pour toi. C’est pour ça qu’autant de développeurs ont peur de sortir de leur zone de confort.

Alors attention, tu dois maîtriser les fondamentaux pour ensuite apprendre les outils populaires. Ça suffit pas de maîtriser les fondamentaux. La boite va te demander une technologie en particulier.

Et là tu vas me dire : “y’a beaucoup trop d’outils populaires c’est impossible de tout apprendre”. Et tu as raison. C’est pour ça qu’il faut comprendre les concepts au lieu de tout apprendre.



Comprendre les concepts

Quand t’auras maîtrisé les fondamentaux puis appris le langage et/ou framework populaire de ton choix, tu vas te retrouver avec une liste de malade mental de choses à apprendre. Je te le dis tout de suite, ça sert à rien de vouloir tout maîtriser.

Et n’empêche qu’il faut que tu comprennes comment toutes ces nouvelles technologies, méthodologies et langages fonctionnent pour rester pertinents dans tes analyses. Alors, comment faire ?



comment


La réponse est simple, il faut que tu comprennes les concepts de fonctionnement. Par exemple comprendre le concept GraphQL te permettra de remplacer une api REST par GraphQL si un besoin client va dans ce sens.

Apprendre les dernières tendances DevOps te sert peut-être à rien dans ton boulot. Mais comprendre le concept de l’infra-as-code te permettra de rapidement t’y mettre si un jour tu intègres une organisation DevOps.

Le futur du web ne se fera pas sans WebAssembly. C’est intéressant de comprendre le concept WebAssembly si tu bosses dans le web non ?

Et si je fais autant d’auto pub c’est parce que mon format comprendre en 5 minutes et super pratique pour toi comme pour moi. Je t’ai mâché le boulot pour apprendre des concepts qui te serviront tout de suite ou plus tard.

Moi ça m’a pris des heures de boulots pour réunir, analyser, comprendre et expliquer tous ces concepts. J’ai appris énormément à titre personnel et toi tu as tout sur un plateau, consommable en 5 minutes. Maintenant, il te manque juste un peu de pratique.



Gamifier la pratique

Avec tous les points précédents en tête, t’as compris que la clef c’est d’être capable d’apprendre fréquemment et efficacement. Le meilleur moyen d’apprendre de nouvelles compétences c’est la pratique. Y’a même pas débat. C’est pour ça que tu vois autant de dev faire des sides projects.

Mais justement, parlons de ces sides projects. La tendance forte que je vois c’est des développeurs qui partent sur des sides projects de fou. Un scope de malade, une complexité folle, un truc infaisable. Du coup le side project est commencé et aussitôt abandonné.

Ce que je te conseille c’est de fortement gamifier ta pratique. Fait un projet avec un petit scope, pas forcément quelque chose d’utile, un projet fun sur un sujet qui te passionne. Fais quelque chose juste pour jouer. Tu seras tellement occupé à faire un truc drôle que tu te rendras même plus compte que tu seras entrain d’apprendre !



attractif


Y’a pas longtemps je m’emmerdais à cause de ce confinement et de ce virus à la con. Du coup je me suis dit tiens, j’aimerais utiliser une intelligence artificielle pour coder une connerie. Ça m’a pris seulement quelques heures de compréhension et de pratique et j’ai énormément appris ! Et c’est vraiment ce genre de pratique sur le sujet de ton choix que tu peux faire tout de suite et qui va t’apporter énormément.



Épilogue

Apprendre la dernière technologie à la mode peut très bien suffire pour te faire engager dans une boîte. Mais ça fera pas de toi un développeur attractif sur le long terme. Maîtriser les fondamentaux est de loin la meilleure stratégie. Ça te servira toute ta carrière alors autant le faire tout de suite.

Qui me parle ?

jesuisundev
Je suis un dev. En ce moment je suis Backend Développeur / DevOps à Montréal. Le dev est l'une de mes passions et j'écris comme je parle. Je continue à te parler quotidiennement sur mon Twitter. Tu peux m'insulter à cet e-mail ou le faire directement dans les commentaires juste en dessous. Y'a même une newsletter !

7 commentaires sur “Comment rester attractif en tant que développeur(euse) ?”

  1. On devrait envoyer cette article à l’éducation national qui veux apprendre le python aux gamins plutôt que leur apprendre les fondamentaux.

    1. J’en ai entendu parlé, cependant il faut faire attention ne pas submergé le gamin.
      On le sait tous, le dev ça pullule de vérité alternatives, de conventions en tout genre. Effectivement une petite initiation d’algorithmie est un passage obligatoire et de toute façon ils passeront forcément par là. Tout ce qu’il faut c’est de les faire rêver et s’amuser car c’est ce qui marche dans le dev. Parce que si direct après l’algorithmie tu attaque la compréhension du DDD ou autre technique de conception, ton gamins va être complètement démotivé et sera pas intéressé par le dev. Bref on s’éloigne du sujet. Mais il me semble que notre cher blogueur a déjà fait un article là-dessus.

  2. “Maîtrise les fondamentaux”
    C’est là que les formations professionnalisantes vont très vite montrer leur limite. La plus part de ces formations qui permettent de transformer n’importe qui en dév web en 12 semaines “parce que ca recrute un max” ne font qu’enseigner le framework à la mode du moment et derrière y’a rien , aucune connaissance du langage sous-jacent ou des fondamentaux.

    1. Je confirme ; je sors d’une formation ” professionnalisante ” en informatique et à ma grande surprise, pas une minute n’a été allouée à l’algorithmique. Du coup, ça a ramé dans les rangs pour capter les principes de base du Python. L’explication du formateur ? Selon lui, en apprenant à coder dans un langage, on capte à peu près ce qu’on est censé apprendre en algorithmique (et ça permet de faire tenir la formation dans ses douze semaines). Je vous divulgache : les résultats sont très moyens.

      1. Je tiens à apporter un témoignage contradictoire.
        J’ai été formé au développement web lors d’une reconversion professionnelle au sein d’un organisme de formation en 2018. Durée de la formation 8 mois dont 3 mois de stage.
        Nos deux premiers mois étaient consacrés à des exercices pratiques à réaliser en PseudoCode, puis en Javascript et enfin en PHP. Cela allait de la boucle simple, à la validation de formulaire, pour finir sur de la lecture/écriture de fichier.
        L’objectif du formateur nous démontrer qu’une fois l’algorithmie maitrisée, le reste n’était qu’affaire de traduction (je simplifie le propos, il est évident que cela peu différer suivant la nature et les contraintes de chaque langage).
        En bref on s’est rôdé sur les bases avant de passer sur le framework ‘maison’ du formateur et la réalisation de projets en équipe. Si on voulait se faire un “vrai” framework c’était en stage ou à la maison.

        Pareil pour le côté intégration, interdiction d’utiliser bootstrap et compagnie. Tout devait être fait en pur CSS !

        Je tiens cependant à nuancer, visiblement notre formateur sortait du lot comparé aux autres promotions qui se plaignaient de l’incompétence du leur. On a du tomber sur la perle rare !

        1. En 2001-2002, j’étais aussi sur une formation courte (5 mois de cours mais 10 de stage). On a commencé par l’algorithmie (avec du C) et le HTML/Javascript (à l’époque js, servait à faire des alert/confirm). On a ensuite fait du SQL et du langage de script (ASP et PHP à l’époque). C’est seulement après deux mois de stage qu’on a commencé à voir l’objet (à l’époque, PHP n’était pas objet) avec JAVA.

          Mais il est vrai que cette formation était un peu plus longue que certaines qu’on a actuellement. De plus, il n’existait pas de framework à la mode, à l’époque. Du coup, on n’avait pas d’autre choix que d’apprendre les bases.

  3. Je me fais au moins une fois par an un rappel d’algorithmique et des designs patterns (un très bon site d’ailleurs : https://refactoring.guru/design-patterns) histoire de bien me rafraîchir la mémoire, car on a pas l’occasion de les utiliser tous les jours, mais bien content de les connaitre quand on en a besoin. J’ai vu un nombre incalculable de développeurs qui n’avais pas les bases et qui était en panique dès qu’il devait changer de langages ou de framework alors qu’au final en ayant des bases solides il n’y a rien de bien compliqué.

T'en penses quoi ?

Your email address will not be published. Required fields are marked *