
Il est tard, le silence est tombé sur Clermont-Ferrand et je suis encore là, assise à ma table de cuisine, devant une tisane qui a fini par refroidir complètement. C'est un moment que je connais bien maintenant : le ronronnement du vieux frigo dans la cuisine silencieuse pendant que je fixe ces quatre espaces vides comme s'ils allaient me répondre. J'ai un petit script de dix lignes devant moi, un truc tout bête pour classer mes recettes de cuisine, mais Python refuse de le lancer. Il s'obstine à m'afficher un message qui me rendait chèvre il y a encore quelques mois : "IndentationError".
Au début, quand j'ai commencé cette aventure en octobre dernier, je pensais que le plus dur serait de comprendre la logique ou les mathématiques derrière le code. Je ne me doutais pas que ma plus grande bataille se jouerait sur des caractères invisibles. C'est frustrant parce que, visuellement, tout semble parfait. Mes lignes sont alignées, mes boucles ont l'air correctes, et pourtant, la machine me dit non. C'est un peu comme essayer de monter un meuble suédois et réaliser que rien ne s'emboîte alors que vous avez suivi le plan à la lettre. Enfin, c'est ce qu'on croit.
Le choc de l'alignement invisible
Je me souviens très bien d'une soirée de fin octobre, juste après le travail. J'étais toute fière d'avoir écrit ma première boucle. Mais Python est un langage très particulier : là où d'autres utilisent des accolades pour dire "ceci va avec cela", lui utilise le vide. C'est élégant quand ça marche, mais c'est un cauchemar quand on débute. Pour Python, l'espace n'est pas juste du vide, c'est une instruction. Si une ligne n'est pas décalée exactement comme sa grande sœur, tout s'écroule.
Le problème, c'est que nos yeux d'humains sont très indulgents. On voit deux lignes à peu près alignées et on se dit que c'est bon. Mais l'ordinateur, lui, est d'une rigidité effrayante. Pendant les vacances de Noël, j'ai passé une après-midi entière à essayer de corriger une erreur de ce type. J'ajoutais des espaces, j'en enlevais, je transformais mon code en un escalier bancal sans rien résoudre. J'avais l'impression de jouer à cache-cache avec un fantôme.

La règle d'or : le chiffre 4 et le guide de style
C'est en creusant un peu que j'ai découvert l'existence du PEP 8. C'est le guide de style officiel pour Python. Et là, j'ai appris qu'il y avait une norme : il faut utiliser exactement 4 espaces pour chaque niveau d'indentation. Pas trois, pas cinq, pas une tabulation sauvage. C'est le standard recommandé pour que tout le monde se comprenne.
Mais savoir qu'il faut 4 espaces ne règle pas tout. Un soir, j'ai craqué. J'ai fini par effacer trois fois de suite une boucle 'for' entière par pure frustration, pour finalement me rendre compte qu'il manquait juste une pression sur la barre d'espace. C'est à ce moment-là que j'ai réalisé que mon cerveau de non-développeuse essayait de lire le code comme un texte de roman, alors qu'il faut le regarder comme une grille de point de croix. Chaque petit carré compte. C'est un peu ce que je racontais quand je cherchais comment débuter en Python quand on n'est pas développeur : on se focalise sur les gros concepts alors que le diable se cache dans les détails.
Le déclic : tabulations contre espaces
Le vrai tournant a eu lieu lors d'un soir de pluie en mars. J'en étais à un point où je voulais presque abandonner. Mon code avait l'air absolument parfait, mais Python me lançait une "TabError". C'est là que j'ai découvert le pot aux roses : je mélangeais sans le savoir des espaces et des tabulations. Pour nous, ça se ressemble, mais pour la machine, c'est le jour et la nuit. J'ai appris que l'ordinateur voit le code ASCII 32 pour un espace et le code ASCII 9 pour une tabulation. Ce sont deux entités totalement différentes dans l'alphabet de la machine, même si elles sont toutes les deux invisibles pour nous.
Depuis Python 3, le mélange des deux est strictement interdit et provoque une erreur immédiate. C'est une sécurité, mais quand on ne le sait pas, on a l'impression que l'ordinateur fait exprès de nous embêter. C'est là que j'ai trouvé mon astuce miracle : j'ai activé l'affichage des caractères invisibles dans mon éditeur de code. Soudain, au lieu de voir du vide, j'ai vu des petits points pour les espaces et des petites flèches pour les tabulations. C'était une révélation. Mon code n'était pas "propre", c'était un champ de bataille de caractères mal assortis.

Ma petite routine pour garder le calme
Ces dernières semaines, j'ai enfin trouvé la paix avec mes indentations. J'ai arrêté de me battre avec la barre d'espace. Voici ce que j'ai mis en place à ma table de cuisine pour ne plus perdre mes nerfs :
- J'ai réglé mon éditeur pour qu'il transforme automatiquement chaque pression sur la touche "Tab" en 4 espaces. C'est magique, on garde le confort de la touche tabulation mais on respecte la règle des espaces.
- Je garde toujours l'affichage des points invisibles activé. Ça fait un peu sapin de Noël au début, mais ça évite de chercher pendant une heure pourquoi une ligne boude.
- Si une erreur d'indentation persiste, je n'essaie plus de la corriger ligne par ligne. Je supprime les espaces au début de la ligne et je recommence le décalage proprement.
Apprendre le Python quand on a une vie bien remplie à côté, c'est accepter que des petits riens puissent nous bloquer pendant des heures. Mais c'est aussi savourer la petite victoire quand, enfin, le script se lance et que les résultats s'affichent correctement. Ce n'est pas de la magie, c'est juste de la rigueur, un peu comme quand on suit une recette de pâtisserie très précise. Si on oublie un ingrédient ou qu'on se trompe de mesure, le gâteau ne monte pas. Ici, les mesures, ce sont ces fameux quatre espaces.
Je ne comprends toujours pas tout, loin de là. Il y a des soirs où les messages d'erreur ressemblent encore à du vieux norrois. Mais au moins, je ne passe plus mes nuits à me demander si j'ai mis trop d'espaces. Je ferme mon ordinateur, je vide ma tisane froide dans l'évier, et je vais me coucher avec le sentiment d'avoir un peu mieux compris comment parler à cette machine qui, au fond, n'est pas méchante, juste un peu trop pointilleuse sur la décoration de ses paragraphes. Est-ce que c'est la même chose pour vous ? Ce sentiment de bloquer sur un truc minuscule ?