Comment apprendre un nouveau langage rapidement

Comment apprendre un nouveau langage rapidement

Apprendre un nouveau langage est une étape obligatoire en tant que développeur. Mais pourquoi est-ce si important ? Et surtout, quel est le meilleur moyen de le faire rapidement ?



Multipass

L’article d’aujourdhui ne s’adresse pas à toi si tu apprends ton tout premier langage. Mais chui sympa, tu peux rester ! C’est toujours intéressant de savoir ce qui t’attend dans le futur. Le seul prérequis pour appliquer ce dont je vais te parler, c’est que tu connaisses déjà un langage. Et une fois que tu le connais, il est important que tu ailles voir ailleurs.

J’ai du contenu centré là-dessus qui arrive bientôt donc je rentre pas trop dans les détails, mais l’hyper spécialisation en tant que développeur est un piège vicieux. C’est super attirant. Plus t’es spécialisé dans un langage (ou pire, seulement un framework) plus tu vas devenir bon dedans. Tu vas alors pouvoir t’auto proclamer « EXPERT », gonfler ton égo et si t’es malin, ton salaire avec.

Le problème ? Plus tu t’enfermes fermement et longtemps chez toi, plus c’est dur d’en sortir. Le monde du développement est gigantesque et change en permanence. Le jour où tu ressors enfin dehors, tu sais même plus marcher ! Autour de toi, tout le monde parle chinois et fait de la magie. Toi t’es coincé avec ton expertise et tu limites par la même occasion les postes auxquels tu peux postuler. Tu veux pas que ça t’arrive.



apprendre un nouveau langage


Le langage que tu choisis, c’est toi qui vois. Mais j’ai un seul conseil. Choisis un langage avec un paradigme et/ou un domaine d’application différent. Tu viens de C++ ? Pourquoi pas faire du Javascript pour le web ? Également essaye de toujours choisir un langage avec un minimum de popularité. Encore une fois tu fais ce que tu veux, mais je vois pas l’Intérêt d’apprendre le Perl aujourd’hui.

Durant les quatres dernières années, à ma demande, j’ai changé trois fois d’équipe dans le grand groupe où je suis. J’ai fait de e-commerce (PHP), puis des outils online (NodeJS/DevOps) et aujourd’hui je travaille sur un jeu vidéo directement dans le moteur 3D (C++/Python). À chaque fois, j’ai utilisé la technique suivante pour apprendre les langages nécessaires !



Étape 1 : organisation

Le seul problème qui empêche les développeurs de se lancer dans un apprentissage c’est leur organisation, pas leur capacité à le faire. Il faut qu’on en parle avant même de commencer. Sans organisation, tu vas abandonner très vite.



Organise ton temps

Si ton objectif est d’aller vite, alors il va falloir faire un petit effort. Il est important d’être très régulier dans ton apprentissage. Ça veut dire bloquer plus ou moins 2h par jour, si possible tous les jours, sinon au moins 3/4 jours par semaine.

Tu vas me dire t’as pas le temps et je pense que c’est faux. Il faut juste que tu fasses des priorités dans ce que tu fais. Le moyen le plus efficace d’apprendre quelque chose rapidement c’est de revenir dessus de façon très fréquente. Le côté coup de marteau tous les jours est redoutable pour faire rentrer l’information. Surtout quand tu as beaucoup de choses inconnues à découvrir !



découverte


Si ton objectif n’est pas d’aller vite, alors tu peux faire les choses plus relax. Mais ça n’empêche pas qu’il te faut de la régularité. Je veux que tu intègres que le plus important c’est de revenir régulièrement sur le sujet. Sinon tu vas faire comme 80% des gens qui se lancent dans ce genre d’apprentissage.

Tu vas rien toucher pendant un moment et tu vas oublier. Du coup, quand tu vas revenir dessus, ça va te soûler instantanément. Si ça te soûle, tu vas abandonner.



Organise tes sources

Le pire truc à faire au niveau des sources c’est de les chercher au fur et à mesure. Ça et passer de source en source de façon chaotique tous les jours. C’est ce que fait à peu prés tout le monde et c’est aussi une grosse source d’abandon.

C’est le moment où je suis censé te conseiller un truc, genre pluralsight, avec un code promo avec deux mois gratuits. Mais je vais pas le faire pour deux raisons. La première c’est que pluralsight me donnera pas de code promo. La seconde c’est que la source en elle-même c’est toi qui dois la choisir par rapport à tes préférences.

Certains préfèrent un format texte, d’autre un format vidéo, certains ont besoin de la pédagogie d’un formateur et d’autres non. C’est à toi de décider de ça. C’est important de choisir une source principale et de s’y tenir. Prends le temps de faire le bon choix ici. Il faut vraiment que tu sois à l’aise avec.



apprendre un nouveau langage


C’est important que tu passes par une formation principale qui parle de tout le langage. Ça va être ton fil rouge et tu veux qu’il soit solide. Tu pourras t’éparpiller plus tard avec des sources différentes. Pour le premier contact, il faut que tu te concentres sur une seule source.

Maintenant que tu as fermement bloqué du temps pour ton apprentissage et que ta source d’apprentissage est également scellée, tu peux commencer sereinement.



Étape 2 : apprentissage

Maintenant, il y a un gros problème qui est commun à toutes formations. Qu’elle soit écrite ou vidéo peut importe. Pendant tout le temps de la formation, tu es passif. Quand tu es passif, tu apprends, mais tu retiens presque rien. Tu as besoin d’un minimum de savoir théorique (passive) pour être efficace ensuite dans les phases pratiques (active). Alors comment faire pour rendre ces phases passives plus actives et donc plus impactantes ?



passive


Écoute étendue

Ce que je fais à chaque fois c’est que je pratique une écoute active pendant la formation. Très concrètement, j’ouvre un google doc et j’écris à l’intérieur tout ce qui me semble important à retenir ou les particularités du langage en question. Prends des notes rapides, incisives à la limite des bullets points. Je le fais tout au long de chaque session d’écoute. Par exemple, voici un exemple d’une petite note prise pendant que j’apprenais le Python.

#Value equality is not identity quality

x = [1, 2, 3]
y = [1, 2, 3]

if (x == y):
  print('Variable are equal by value')

if (x is not y):
  print('Variable are not equal by identity')

C’est le genre de trucs qui peut te faire des bugs de fous et qui est propre au Python par la syntaxe « is » et « == ». Un mécanisme que tu peux oublier rapidement. Le fait d’avoir pris cette note a imprimer dans mon cerveau cette information.

Je sais que beaucoup de monde a la flemme de faire un effort en plus pendant une session d’écoute. Je comprends que ça rajoute des choses à faire et que c’est pas agréable. Mais crois-moi, c’est d’une efficacité redoutable. Ça va être DÉCISIF pendant et après ton apprentissage.



Pratique limitée

Un des pires trucs à faire pendant ta formation c’est de te lancer tout de suite dans un énorme projet. On va voir comment il faut le faire après ce projet, mais pendant l’étape d’apprentissage, c’est pas le moment. On va d’abord se concentrer sur des tout petits exercices très rapides à faire chaque session.

À chaque fois que tu vois une partie et/ou un sujet, c’est important de le pratiquer en codant. Le cerveau n’imprime rien si tu ne le fais pas pour de vrai. Et tu n’as pas besoin d’investir 10h de ton temps dans un projet énorme tous les jours pour avoir cette pratique. Il faut y aller progressivement !



apprendre un nouveau langage


Tu peux très simplement trouver des tous petits exercices, genre Katas, pour faire ça. Ou encore mieux réimplementer ce que tu vas voir durant ta formation en changeant des choses. Peu de monde prend le temps de faire cette petite pratique durant la formation. C’est pourtant ce qui va le plus marcher.

Et avec tout ça, tu as le flow d’apprentissage que tu dois répéter chaque session.



Le flow

Pour chaque session, l’ordre est le suivant :

  • 1 : Lire ton document de prise de note active

Le fait de lire encore et encore ton document de prise de note active va avoir un effet marteau. À chaque relecture, les concepts et particularités du langage vont entrer de plus en plus jusqu’à devenir une évidence. Tu ne perdras plus jamais de temps à revenir sur des choses déjà vues. Rien que ça, ça fait la moitié de ton apprentissage et tu multiplies par deux la vitesse.

  • 2 : Faire une écoute active en ajoutant des notes dans ton document

Chaque session, on ouvre le google doc et on ajoute des notes durant la formation pour la session suivante. Le fait d’écrire en plus d’écouter pendant la session va te faire rentrer les choses plus rapidement.

  • 3 : Pratiquer des implémentations de concept de la session à chaud

Pour apprendre et comprendre un langage, il faut pratiquer. C’est obligatoire et il faut le faire le plus rapidement possible. Mais pas n’importe comment. On commence par des exercices simples et rapides.

Une fois que ta formation principale est finie, il faut passer à la consolidation des connaissances. Et pour ça, on va faire un projet. Le choix du projet va être important.



Étape 3 : consolidation

Pratique étendue

Comme dans la plupart des cas, quand on veut grandir en tant que développeur, la solution est de passer par un projet perso. Ça apprend beaucoup de choses, tu fais ce qui te plaît et en plus c’est fun!

Mais dans le cas de l’apprentissage d’un nouveau langage, il y a une astuce qui va optimiser de façon incroyable cette étape. Le meilleur projet perso pour apprendre un nouveau langage c’est un projet que tu as déjà fait.



wtf


Et la raison est simple et très logique.

Quand tu développes une application avec un langage que tu connais déjà, tu ne te demandes pas comment utiliser le langage. Tu penses juste à quoi faire à l’intérieur de ton application.

Quand tu développes une application avec un langage que tu ne connais pas, tu fais deux choses à la fois. Tu te demandes comment utiliser le langage et en même temps tu te demandes quoi faire dans ton application.

Ça marche, plein de gens le font, mais c’est pas optimal. Je t’ai promis que ton apprentissage du nouveau langage serait rapide. Je te promets que tu si tu pars sur un nouveau projet pour apprendre un nouveau langage, ça sera plus long.

Ce qu’il faut faire c’est se concentrer sur un projet déjà fait dans le passé. De cette façon, tu vas te concentrer que sur le comment et pas le quoi. Et cette simple astuce va tout changer. Tu viens de gagner un temps fou dans ton apprentissage.



apprendre un nouveau langage


Par exemple moi je fais toujours la même API CRUD qui pourrait faire office de backend pour Instagram. Une API qui permet de poster des images avec un titre et une description sur AWS S3.

C’est complet, ça me fait voir beaucoup de problématiques, et surtout je me pose pas la question de ce que je dois faire. Je sais ce que je dois faire, maintenant il faut que je comprenne comment utiliser le langage.



Épilogue

L’ingrédient secret de tout apprentissage optimisé et toujours le même : la régularité. Je pourrais te donner toutes les meilleures astuces du monde, si tu les appliques pas régulièrement, ça te servira à rien.

clearfix