Alexandre Petit

Mémoriser Python

Temps de lecture : 6 min.

Mémoriser Python

Je me suis lancé comme défi de mémoriser Python in a Nutshell, un livre de 700 pages qui est une référence synthétique du langage de programmation Python.

Mon objectif était :

Mes hypothèses étaient que :

Mon processus a consisté à lire sur ordinateur, prendre des notes en split-screen, et créer des cartes de révision pour Anki.

Anki est un outil de mémorisation basée sur le principe de répétition espacée.

L'idée derrière la technique de la révision espacée est que pour mémoriser une information pour toujours, il suffit de la réviser le lendemain, puis trois jours plus tars, une semaine plus tard, un mois plus tard, ... avec des intervalles de plus en plus espacés. La courbe de l'oubli s'atténue à chaque fois que l'on parvient à rappeler l'information.

Illustration prise sur le site LifeHack

J'ai mis 3 mois à terminer ce projet en y consacrant en moyenne 2h/jour.

Voici les principales erreurs que j'ai commises.

Erreur #1 : créer des cartes trop théoriques

Les cartes de définitions sont des rabbit holes.

Il est difficile d'arrêter une définition équilibrée : précise et en même temps concise ; naturelle et en même temps exacte sur les termes ; non pédante ; claire ; intuitive ; orale.

Il est possible de simplifier une définition en itérant dessus. Mais même simplifiées, les définitions restent des cartes difficiles à mémoriser par rapport à des cartes "pratiques".

Cela tombe bien : l'aspect pratique est ce qui apporte le plus de valeur.

img_5.png

à gauche : une première version précise mais verbeuse
à droite : version simplifiée après plusieurs itérations

Un développeur lit du code et écrit du code.

Les deux questions les plus importantes sont donc :

  1. Comment lire truc ? (ex : que renvoi "abc" + "hello" ?)
  2. Comment exprimer machin ? (ex : comment concaténer s1 et s2 ?)

Toujours avec le cas du starred pattern, voici un exemple de bonne carte :

img_4.png Cette carte est bonne car :

Takeaways :

Erreur #2 : créer trop de cartes d'un coup

Au début, je me suis concentré sur la partie facile :

img_2.png

Une note structurée en carte de révision

Puis, après 3 semaines de lecture, j'ai exporté mes cartes dans Anki. Aïe.

Je me suis retrouvé avec 800 éléments à mémoriser. D'un coup.

img_1.png

Oups.

On peut visualiser le flux de travail de ce projet ainsi :

En concentrant mon énergie sur lire et en délaissant le travail de mémorisation, j'ai créé un grand stock de cartes à mémoriser. Cela a bloqué mon flux de travail, et je n'ai reçu tardivement le feedback que mes cartes étaient étaient trop compliquées, pas assez éprouvées, et trop nombreuses.

Il s'en est ensuivi un cycle d'un mois dédié à mémoriser, éditer pour simplifier, mettre en pratique pour vérifier, mémoriser, simplifier, mémoriser, simplifier, mémoriser ... Jusqu'à overdose.

Takeaways :

  1. Mémorise au fil de l'eau.
  2. La mémorisation n'est pas gratuite. Les cartes de révision encadrent et facilitent le travail de mémorisation, mais cela demande quand même fournir des efforts et du temps. Ne mémorise que l'essentiel. S'il manque une information, tu pourras ajouter une carte plus tard.

Erreur #3 : créer des cartes sur parole

Créer une carte pour un truc que tu n'as pas mis en pratique ne sert à rien.

D'abord parce que l'information ne se fixe pas.

Manipuler un objet permet de créer une connexion avec, de développer une intuition sur son fonctionnement, d'explorer ses fonctionnalités, de se poser des questions. C'est une étape importante du processus d'apprentissage. C'est un lieu commun de le dire, mais je suis tombé dans le piège de dévorer la lecture sans m'arrêter pour pratiquer. Cela donne l'impression d'aller plus vite et de savoir. Mais en fait l'information ne se fixe pas. Et infine, je ne sais pas faire + de choses.

Ensuite, parce que l'information n'est pas fiable.

À plusieurs reprises, j'ai trouvé des informations inexactes dans le livre. Je me suis mis à douter de mes cartes. Et j'ai fini par retravailler toutes celles que j'avais créées sans les avoir vérifiées.

Note que les définitions ne sont pas vérifiables. C'est un problème. Et c'est un argument de plus pour aller vers des cartes pratiques, orientées action. Idem, les affirmations sur le comportement interne sont difficilement vérifiables - même si tu peux regarder le code source de CPython.

Takeaways :

La version actualisée du workflow

Les cartes servent à mémoriser ce que tu as appris, pas à apprendre en premier lieu.

Erreur #4 : créer des cartes exotiques

Certains modules et certaines méthodes sont exotiques.

Il est intéressant de savoir qu'ils existent, noter dans quel contexte ils ont été introduits et quels problèmes ils résolvent. Il peut être intéressant les manipuler et noter comment les utiliser sur des cas courants (on parle parfois de recipes), mais c'est tout.

Il n'est pas pertinent de mémoriser toutes les utilisations.

Une solution est de mémoriser just in time plutôt que just in case :

Takeaways :

Conclusion

En lisant Python in a Nutshell, j'ai beaucoup appris sur le langage, sa syntaxe, et le contenu de la bibliothèque standard. Après avoir passé +200 heures à l'étudier, je me sens plus proche du langage, plus connecté à lui. Je connais mieux ces contours et ce qu'il ne contient pas, ses limites.

En parallèle de cette lecture, j'ai écouté plusieurs podcasts de Guido Van Rossum, le créateur du langage. C'est aussi une écoute que je recommande pour comprendre la philosophie du langage est ses grandes tendances d'évolution.

Anki est un outil formidable. Cela fait partie des outils que j'aurais aimé connaître durant ma scolarité. C'est le buddy parfait pour mémoriser de la poésie, des formules de mathématiques, du vocabulaire d'Anglais.

Publié le

Une remarque ? Dis-moi 💙