
Ma tisane a fini par refroidir sans que je m'en aperçoive, les mains suspendues au-dessus du clavier, les yeux rivés sur une accolade qui refuse obstinément de se fermer où je veux. Ouvrir un premier fichier JavaScript quand Python est déjà un vieux compagnon familier, ça donne quand même l'impression, en pleine débutante, de changer les règles du jeu en cours de partie.
Une idée traîne dans les groupes de gens qui apprennent à coder en autodidacte, sur le tard : une fois qu'on tient un langage, le suivant serait presque automatique, une question de vocabulaire à changer. J'y ai cru, moi aussi, avant d'ouvrir ce fichier .js.
Avant d'aller plus loin, un mot de transparence : ce carnet contient quelques liens affiliés vers des ressources que j'ai vraiment testées ; si vous cliquez pour vous lancer, je touche une petite commission sans que votre facture change d'un centime. La Formation au langage Python reste celle par laquelle tout a commencé pour moi, bien avant que JavaScript ne s'invite dans mes soirées.
Non, connaître Python ne suffit pas à « parler » JavaScript
Le premier choc, ce sont les accolades. Elles sont partout, et ces points-virgules qui s'accrochent en bout de ligne comme des miettes sur la table après le dîner. JavaScript aurait été écrit en une dizaine de jours à peine, à l'époque de Netscape, et franchement, en relisant mon propre code le soir, je veux bien le croire.
Persuadée que la logique suffirait à faire le pont toute seule, j'ai essayé un temps de regarder des tutoriels vidéo dans le bus ou en préparant le dîner, sans jamais ouvrir l'ordinateur en même temps, en me disant que la théorie finirait par rentrer. Ça n'a rien donné : sans taper une ligne moi-même, sans voir la console me renvoyer une erreur bien à moi, rien ne restait le lendemain soir.
Pareil pour les messages d'erreur : longtemps la console de Chrome m'a semblé aboyer en rouge à la moindre virgule oubliée, jusqu'au jour où l'un d'eux m'a paru moins hostile qu'avant, j'ai repéré la ligne fautive tout de suite, sans sentir mon pouls s'accélérer.

Pourquoi choisir entre let, const et var me fatigue encore un peu
Ce n'est pas une histoire de choisir entre Python et JavaScript : les deux cohabitent très bien dans mon carnet, chacun avec son rôle. Mais réapprendre à nommer une variable, ça, ça m'a coûté : là où Python me laissait tranquille, JavaScript me demande de trancher entre let, const et le vieux var qu'on me déconseille partout sans jamais m'expliquer pourquoi il traîne encore dans les vieux forums.
Pour compter des éléments, il faut aussi changer de réflexe. En Python, j'avais fini par écrire un mot sur comment utiliser la fonction len en python pour ne pas perdre le fil, alors qu'en JavaScript tout est objet et qu'on va chercher la propriété .length. Ce n'est pas plus compliqué, juste une autre poignée de porte à apprendre à tourner.
Repenser l'ordre des opérations quand tout devient asynchrone
En Python, les choses se suivent sagement : une ligne se termine avant que la suivante ne commence, et cette discipline m'allait très bien. JavaScript, lui, doit composer avec un navigateur qui ne va pas geler la page entière juste parce qu'une image met du temps à charger.
Longtemps je n'ai rien compris à cette histoire de callbacks et de promesses qu'on empile les unes sur les autres. C'est en marchant au bord du lac d'Aydat, un dimanche où je ressassais le problème plutôt que de le fuir, que l'image m'est enfin venue : c'est comme mettre une soupe à mijoter, dresser la table pendant que ça chauffe, et répondre au téléphone entre les deux, en espérant que rien ne déborde. Si on n'est pas habituée à ce jonglage, on finit avec une soupe trop cuite et une table à moitié mise. C'est ce qui rend l'apprentissage des bases du javascript pour créer des sites web interactifs si différent de ce que je faisais avant, seule avec mes tableaux de données.
Voir un bouton changer de couleur avant de comprendre la théorie
Fatiguée de lire de la théorie sur les promesses sans que rien ne bouge à l'écran, j'ai fini par tester JavaScript : formation 100 % pratique, histoire d'arrêter de réfléchir comme une informaticienne, ce que je ne suis pas, et de manipuler tout de suite de vrais éléments sur ma page.
Le déclic est venu du DOM, un nom barbare qui cache juste la structure de la page web. J'ai écrit une poignée de lignes qui changeaient la couleur d'un bouton au clic, et le voir virer au vert sous mes yeux, après avoir vu tant de résultats en texte brut dans une console noire et triste, ça m'a fait un effet disproportionné pour trois lignes de code. Valérian, mon collègue de bureau, m'a envoyé ce soir-là un mème sur les développeurs qu'il ne comprenait qu'à moitié lui-même, et pour une fois, j'ai ri en connaissance de cause.
C'est aussi là que j'ai fini par sentir la différence entre == et ===. En Python, la question ne se pose presque jamais ; en JavaScript, cette rigueur sur les types évite bien des bugs qui n'ont l'air de rien jusqu'à ce qu'ils cassent tout le reste.
Ce que je répondrais à qui pense que le deuxième langage ira plus vite
Théophane, un lecteur assidu qui commente depuis Lyon, m'a écrit un jour qu'il pensait, lui aussi, qu'un langage de plus se poserait presque tout seul par-dessus le premier. Dans son message, il racontait buter sur des détails que j'avais, moi, déjà résolus avant lui, tout en avançant plus vite que moi sur d'autres points : la preuve, s'il en fallait une, que ce transfert automatique n'existe pour personne.
La règle que j'en tire, pour ce qu'elle vaut : ne pas compter sur ses vieux réflexes pour faire le travail à sa place. Il faut prévoir, dès le départ, de désapprendre certaines habitudes, l'ordre séquentiel, la tolérance de Python pour les petites approximations, avant même d'espérer aller plus vite qu'au premier langage. Ce n'est pas vraiment une reconversion, juste une deuxième grammaire de code à apprivoiser, et il m'arrive encore de vouloir trier une liste en python en pleine ligne de JavaScript, par pur réflexe.
Je garde un œil sur la Formation Cisco pour plus tard, question de comprendre un jour comment tout ce petit monde communique vraiment sur le réseau, mais pour l'instant, ma table de formica déborde déjà bien assez de post-its et de tasses vides. Et vous, qu'est-ce qui vous a semblé le plus déroutant en changeant de langage : la syntaxe, ou la façon de penser derrière ?