
Onze. C'est le nombre de fois où j'ai retapé la même ligne avant que mon bouton daigne changer de couleur sur l'écran. Onze essais, une tisane qui refroidissait à côté du clavier, et une question qui tournait en boucle : est-ce qu'apprendre Python m'avait vraiment préparée à quoi que ce soit côté JavaScript ? Ce billet répond aux questions qu'on me pose le plus souvent depuis que je me suis lancée, en autoformation et à coups de code improvisés le soir, dans la manipulation du DOM après des mois passés côté Python.
Avant d'aller plus loin : ce carnet contient des liens vers des formations que j'ai testées moi-même, dont certains sont des liens affiliés — un clic dessus peut me rapporter une petite commission, sans que ça change quoi que ce soit pour vous côté prix. Je ne cite que ce qui m'a vraiment servi, parce que trier seule dans la pile de tutoriels prend déjà assez d'énergie un soir de semaine.
Le DOM, qu'est-ce que c'est vraiment pour une débutante en JavaScript venue de Python ?
Longtemps, DOM n'était qu'un sigle de plus dans ma tête, un mot de barbu parmi d'autres. Pour trouver un repère qui tienne, j'ai fini par le voir comme un pull qu'on vient de terminer : le HTML est le patron, le DOM c'est le pull une fois fini et posé sur la table, et JavaScript, c'est la main qui peut encore défaire une maille ou en resserrer une sans tout retricoter. Si vous cherchez un repère simple : le DOM, c'est ce que le navigateur affiche à l'instant présent, pas le fichier de départ — dès qu'on garde ça en tête, une bonne moitié de la confusion retombe.
Mon amie d'enfance Cassandre appelle toujours ça « le truc ordinateur », et rien qu'en essayant de le lui expliquer sans jargon, un dimanche au téléphone, je me suis rendu compte que je ne le comprenais qu'à moitié moi-même. Ses questions naïves ont ce don de me forcer à reformuler ce que je croyais avoir compris — et c'est souvent dans l'effort de simplifier pour elle que les choses se clarifient vraiment pour moi aussi. Python restait mon point d'appui pendant tout ce temps : j'avais fini par réussir à lire un fichier texte en python grâce à ma formation, et la Formation au langage Python m'avait servi de socle avant que je ne me risque du côté du navigateur.

Accolades contre indentation : le choc des habitudes
Le vrai vertige est arrivé avec les accolades. Python m'avait habituée à une propreté presque maniaque, quatre espaces et tout rentre dans l'ordre ; le JavaScript, lui, m'a noyée sous les points-virgules et les accolades qui se referment trop tôt ou pas du tout. Avec Python, le déclic avait été presque silencieux : une ligne de terminal qui affichait pile le texte que j'espérais, et moi qui restais interdite devant l'écran, n'osant pas y croire tout de suite. Avec le JavaScript, rien de tel — le silence a cédé la place à des dizaines de messages d'erreur qui ne ressemblaient à rien de familier.
Mon vieux portable trône toujours sur la même table en formica où on mange aussi le soir, une tasse posée juste à côté du clavier et un carnet couvert de post-its qui débordent du cadre. Rien d'un bureau digne de ce nom : une cuisine éclairée par un plafonnier un peu trop jaune, où j'essaie tant bien que mal de faire tenir accolades et points-virgules dans une tête habituée aux quatre espaces. Un peu comme improviser un repas le samedi avec ce qu'on a trouvé au marché du Brézet : on n'a pas toujours la recette exacte sous les yeux, on fait avec ce qu'il y a sous la main. Compter mentalement les accolades ouvertes et fermées avant de lancer le code, ça m'évite maintenant la moitié des erreurs bêtes.
Traduire sa logique Python en JavaScript ne marche pas telle quelle
J'ai d'abord cru que je pouvais garder ma logique Python intacte et juste changer de vocabulaire. Grave erreur. En Python, je pensais en ligne droite : une étape, puis la suivante, jusqu'au bout du script. Face au DOM, j'ai essayé d'écrire des dizaines de lignes pour dire à chaque élément, un par un, quoi faire à chaque clic — un vrai sac de nœuds où changer un détail cassait tout ailleurs.
Ce qui a fini par débloquer les choses : arrêter de parler à chaque élément individuellement et définir un état global — « le mode sombre est activé », par exemple — puis laisser la page réagir toute seule à cet état-là. Le repère que j'applique maintenant : si je me surprends à écrire plus de trois lignes pour dire à un seul élément quoi faire, je m'arrête et je cherche comment poser un état à la place. J'avais aussi tenté, avant de comprendre ça, d'installer une bibliothèque python avec pip sans faire d'erreur, pensant naïvement que ça m'aiderait pour le web. Erreur classique : Python tourne surtout côté serveur, alors que ce qui fait bouger un bouton sous les yeux de quelqu'un, c'est du JavaScript qui s'exécute directement dans le navigateur.

Écrire sa première interaction dans la manipulation du DOM sans paniquer devant l'écran
Le déclic pratique est venu avec la JavaScript : formation 100 % pratique, qui m'a fait manipuler au lieu de seulement lire de la théorie. La première fois que j'ai écrit quelque chose comme `document.querySelector('.mon-bouton').style.backgroundColor = 'tomato';`, ce n'était qu'une couleur qui changeait, mais j'ai eu l'impression de parler enfin à quelque chose que je pouvais voir et toucher, pas à une console abstraite. Pour une première interaction avec le DOM, viser un seul élément visible plutôt que vouloir faire réagir toute la page d'un coup, ça évite de se noyer dès le premier soir.
Prendre le réflexe d'écrire une petite fonction pour ce genre d'interaction, plutôt que d'empiler le code dans un seul bloc, c'est une habitude que je garde de Python — j'en détaille la logique ailleurs dans mes billets, donc je ne m'y attarde pas ici. Le `let` et le `const`, qui remplacent la simple affectation à laquelle j'étais habituée en Python, m'ont aussi demandé un temps d'adaptation à part ; les conditions, elles, gardent un air de famille avec leurs cousines Python, ce qui aide un peu à s'accrocher.
Les blocages les plus fréquents face au DOM
Le blocage le plus courant, autant chez moi que dans les messages que je reçois, c'est de lancer le script avant que la page ait fini de se charger — le DOM n'existe pas encore, et rien ne répond. Vérifier ça en premier, avant de chercher plus loin, c'est presque toujours la bonne piste. Les messages d'erreur du navigateur restent un chapitre à part entière que je détaille ailleurs, mais disons ici qu'ils sont nettement moins bavards qu'en Python sur ce qui a vraiment cassé. Même les boucles, que je croyais pourtant acquises, se comportent différemment une fois posées dans une page web plutôt que dans un script isolé.

Une formation, un ami qui code plus vite, ou seule dans sa cuisine : qu'est-ce qui aide vraiment ?
C'est la question que me pose le plus souvent Perrine, une lectrice de Bordeaux qui me suit depuis mes tout premiers billets : qu'est-ce qui aide vraiment, concrètement, quand on est bloquée ? Elle avait un jour tenté d'expliquer Python à son mari et avait fini par tout embrouiller, elle en rit encore aujourd'hui avec un humour un peu résigné — et je comprends, parce que j'ai essayé la même chose de l'autre côté.
J'ai bien tenté, une fois, de demander un coup de main à un ami développeur. Mauvaise idée dans ma situation : il allait tellement vite dans ses explications que je décrochais au bout de deux minutes, gentil geste mais mauvaise méthode pour quelqu'un qui a besoin de tout revoir deux fois. La formation JavaScript pratique que j'ai suivie ensuite m'a mieux convenu, simplement parce que je pouvais la mettre sur pause à ma vitesse, sans avoir l'impression de ralentir quelqu'un d'autre. Mon critère aujourd'hui : je choisis un format qu'on peut interrompre et reprendre à son rythme, pas quelqu'un — aussi bien intentionné soit-il — qui avance plus vite que moi.
Il me reste une question à laquelle je n'ai pas encore de réponse : est-ce que j'aurai un jour besoin de comprendre ce qui se passe plus loin, du côté des réseaux et des câbles ? Je garde la formation Cisco dans un coin de tête pour plus tard, sans savoir si j'irai vraiment par là un jour. Le choix entre Python et JavaScript dans l'absolu, je l'ai déjà raconté ailleurs dans ce carnet, donc je n'y reviens pas ici. Pour l'instant, mon compteur clique bien dans le navigateur, la tisane est presque froide, et ça me suffit pour ce soir.