Les récentes déclarations de Benoît Hamon sur l'introduction du « codage » dans le périscolaire mettent soudainement de nombreuses personnes sous pression : il faut mettre en place des activités, ici et maintenant. C'est une bonne nouvelle car je crois effectivement qu'il est urgent d'enseigner l'informatique. Mais disons que cela arrive un peu soudainement au cœur de l'été après des décennies d'immobilisme.
Je pense qu'il faut faire abstraction du pis-aller que constitue le périscolaire ici. J'aurais bien sûr préféré un enseignement directement à l'école, qui fasse confiance aux enseignants après leur avoir donné une formation adaptée. S'appuyer de la sorte sur le périscolaire est source d'inégalités territoriales, et ce n'est pas pérenne.
Mais c'est aussi une formidable opportunité d'enseigner l'informatique au plus grand nombre au plus vite. Je fais le pari d'un scénario à la britannique, avec une introduction de l'informatique par bouts de ficelles dans le périscolaire deux ans avant son introduction dans de bonnes conditions. Il faut accompagner cette initiative afin que cela se passe le mieux possible, si on y arrive. C'est une opportunité comme on en a tous les trente ans.
Passons également sur le novlangue « codage », probablement une mauvaise traduction de l'anglais. Coder, en français, signifie plutôt « rendre inintelligible » que « émanciper dans un monde informatisé » qui serait plutôt mon objectif au fond.
Ce billet vise à apporter des éléments de réponses aux nombreuses questions pratiques qui se posent, notamment sur ce qu'il convient d'enseigner, et sur la démarche pour le faire (qui, comment, matériel). Je ne prétends pas avoir la Vérité, mais j'ai des pistes à expérimenter que je partage ici avec vous. Partagez vous aussi vos idées et retour d'expériences pour qu'on avance ensemble, s'il vous plaît.
Objectifs pédagogiques
La première question porte donc sur ce que l'on souhaite faire passer de la sorte aux enfants de primaire. On répète qu'il faut améliorer la littératie numérique des enfants, mais personne ne sait trop ce que cela veut dire. En adaptant la définition de littératie donnée par l'OCDE, la littératie numérique serait « l’aptitude à comprendre et à utiliser les technologies de l’information et de la communication dans la vie courante, à la maison, au travail et dans la collectivité en vue d’atteindre des buts personnels et d’étendre ses connaissances et ses capacités ». Cette définition est intéressante, mais elle n'est pas très opérationnelle. Comment faire en sorte que les enfants soient capables de faire un usage raisonné de l'informatique et des ordinateurs ? On trouve quelques belles idées dans ces propositions d'orientations générales pour un programme d'informatique à l'école primaire.
Je me fixe des objectifs encore bien plus terre à terre. Je souhaite que les enfants soient capables de créer des petites choses sur ordinateur, comme ils sont capables d'écrire de petits textes ou faire des dessins à l'heure actuelle. Je souhaite qu'ils puissent créer leur propre carte de vœux pour la fête des mères, sans avoir à choisir parmi des cartes toutes faites sur http://www.dromadaire.com/ ou ailleurs. Je souhaite qu'ils soient capables de faire de petits dessins animés pour raconter des petites histoires, de complexité comparable aux rédactions qu'ils font déjà. Je souhaite qu'ils puissent réaliser leurs propres petits jeux informatiques, qui auront le mérite d'être leurs propres créations même s'il ne s'agit pas de futurs blockbusters.
Pourquoi ces objectifs sont-ils intéressants ? Et bien déjà parce qu'ils sont extrêmement opérationnels : cela donne des pistes d'activités. Du point de vue de la science informatique, ce n'est pas la panacée car on voit mal le lambda calcul, la NP-complétude, les fonctions récursives primitives ou même la complexité algorithmique dans ce programme d'action. Mais cela reste assez ouvert pour laisser la place à des choses intéressantes. Par exemple, quand les petits jeux deviendront moins naïfs, on verra probablement surgir de nombreux problèmes algorithmiques intéressants. Il est même possible que certains enfants s'attaquent à des problèmes « connus » NP-complets, ce qui peut donner des discussions intéressantes (je l'ai fait à leur âge, mais j'ai dû attendre la fac pour que l'on m'explique le problème). Disons que ces objectifs sont à l'informatique ce que le calcul que l'on fait à l'école primaire est aux mathématiques (du moins je crois).
Mais ces objectifs me semblent particulièrement pertinents en ceci qu'ils permettent aux enfants d'être acteurs dans leur monde devenu numérique, et pas seulement consommateurs. À l'époque des réseaux sociaux informatisés, savoir s'exprimer sur la toile semble par exemple plus important que de savoir programmer en C ou en Java. Ce que je propose est une bien maigre contribution dans cette direction, mais on fait skonpeu.
Ces objectifs donnent des pistes pratiques, mais dans l'urgence de l'été, il faut aller plus loin et tenter de donner des idées de progressions et séances clé en main à ceux qui devront mettre en place ces activités dès la rentrée.
Faut-il faire des « Coding Goûters » ?
Il serait possible d'organiser des Coding Goûters, c'est-à-dire des samedi après-midi entiers où les enfants et leurs parents apprennent ensemble la programmation créative, avec des accompagnateurs mais sans professeur. Ce format est particulièrement bien trouvé et nous avons organisé avec Inria des micro-formations pour donner des billes à nos collègues qui voudraient se lancer sans savoir trop comment s'y prendre.
Les inventeurs des Coding Goûters organisent des séances régulières, avec les mêmes participants d'une fois sur l'autre. C'est une bonne idée car cela permet de construire des choses ensemble, en sortant de l'événementiel un peu stérile. Je crois cependant que l'approche de co-construction des savoirs entre enfants et adultes n'est pas vraiment adaptée à un usage récurrent en (péri)scolaire comme préconisé par le ministère. C'est dommage. Les choses iraient probablement mieux si l'école pouvait s'ouvrir à de telles pratiques, mais on ne peut pas tout changer en même temps.
Longue vie aux Coding Goûters tels qu'ils ont lieu depuis quelques années, mais je crois que ce format n'est pas généralisable en l'état actuel des choses pour des activités récurrentes en milieu scolaire.
Si vous voulez prendre la température, achetez quelques bonbons et gâteaux avant d'inviter à la fois des enfants à découvrir la programmation et des intervenants potentiels à découvrir des enfants d'école primaire. Mais pour une activité récurrente, faites plus court (deux heures ?) et simplifiez votre format en supprimant les gâteaux, AMHA.
Programmation créative hebdomadaire
Il y a cependant beaucoup de bonnes idées à reprendre dans la méthode pour enseigner la programmation créative. Comme dit Claude Terosier de chez Magic Makers, il s'agit d'apprendre à coder pour apprendre à créer (et elle fait ça très bien). Nous organisons de notre côté une activité pilote à la rentrée à la MJC Nomade de Vandœuvre-les-Nancy sur ce modèle. Notre club s'appelle Cod Cod Coding
Comme nous préparons la chose depuis janvier et que nous bénéficions du soutien sans faille de la cellule de médiation scientifique chez Inria, le club sera animé en binôme par un animateur de la MJC qui connaît bien les enfants de ces âges et par un doctorant en informatique qui connaît bien la matière. Cela simplifie quelque peu l'expérimentation et nous avons prévu de tenir un blog pour partager et documenter ce qui fonctionne en pratique ainsi que les pièges à éviter.
Les déclarations du ministre précipitant les choses, voici comment nous avons prévu de démarrer. Nous apprendrons tous ensemble en marchant.
Approche générale
Il me semble important de mélanger activités sur ordinateur (avec Scratch) et activités débranchées. Il est inimaginable de ne pas passer sur ordinateur, mais il est important de réfléchir parfois sans ordinateur. D'expérience, il est très difficile de parler à un groupe de gens absorbés par l'écran. Mes élèves ingénieurs ont plus de 20 ans, mais j'ai parfois du mal à obtenir leur attention en salle machine. J'imagine que ce sera encore pire avec des enfants plus jeunes. Sortir de l'ordinateur permet également de sortir de l'occupationnel et de tenter de passer un message, de mettre en place un apprentissage. Il faut préparer l'activité en amont avec les enfants et les faire réfléchir après coup à ce qu'ils ont fait.
La frustration risque cependant de monter très vite si on fait faire de l'informatique sans ordinateur pendant trop longtemps. L'équilibre est délicat à trouver et c'est l'un des aspects que j'espère parvenir à régler en pratique à la MJC l'an prochain. Certains commencent par une séance intégralement débranchée avant les séances sur machine, mais cela me semble un peu rude. Il vaut peut-être mieux faire à chaque séance un peu de débranché au début, un gros temps d'activités sur machine, avant un petit retour tous ensemble à la fin.
L'un des dix principes de « La main à la pâte » est de faire tenir un cahier de laboratoire aux enfants, où ils consignent leurs expériences et conclusions avec leurs mots à eux. Je pense que cela s'appliquerait très bien pour nous.
Supports
Le plus dur dans un atelier de programmation créative, ce sont les dix premières minutes, au lancement. Pour le « coding anniversaire » de mon fils, nous avions installé les enfants directement sur machine et nous avons eu très (très (très)) chaud pour faire démarrer l'activité ensuite. Quand on a la chance d'avoir un atelier récurrent où les nouveaux venus posent leurs questions aux enfants habitués, c'est plus simple. Mais pour démarrer un groupe la première fois, il faut avoir une bonne activité brise glace, où l'on discute avec les enfants de leurs attentes, de ce que l'on va faire ensemble. On peut les faire parler sur comment on s'y prend pour faire faire des choses à l'ordinateur.
Sans aller jusqu'à introduire la notion d'algorithme avant le premier passage sur machine, on peut utiliser des activités débranchées pour expliquer ce que programmer veut dire (verbaliser la séquence d'opérations permettant d'arriver au résultat). Cette activité me semble particulièrement pertinente pour cela. Ensuite, si les enfants ont encore un peu de patience, j'enchaînerais avec les activités débranchées que nous avons mises au point avec Jean-Christophe Bach, ou d'autres activités débranchées existantes.
Il faut passer assez rapidement sur machine avec Scratch. Cet environnement a beaucoup de défauts, comme le fait qu'il faille choisir entre la version 1.4 obsolète ou la version 2 en Flash, comme sa traduction française parfois un peu troublante, ou encore l'absence de fonction pouvant rendre des résultats. Un jour, ces problèmes seront résolus ou bien des concurrents plus complets comme Snap! seront prêts à prendre la relève. Mais en attendant, Scratch reste le meilleur choix pragmatique si l'on veut se lancer au plus vite sans trop de heurts.
L'un des points forts de Scratch, c'est sa communauté d'utilisateurs. De très bons pédagogues diffusent beaucoup de bonnes ressources, ce qui est pratique quand on débute. Cette communauté se réuni tous les deux ans, lors d'événements très enrichissants. Je compte m'appuyer sur ce guide présentant dix séances clé en main, ou sur celui-ci, également bien fait. Une fois encore, on trouve de bonnes ressources sur le wiki de http://jecode.org/.
Le matériel
Coté machine, j'ai bien peur que le ministère ne dilapide notre argent en tablettes pour suivre la mode. Ce serait vraiment dommage car je suis personnellement plus productif avec un ordinateur classique qu'avec une tablette, que j'utilise plutôt pour surfer passivement. Scratch 2 étant en Flash, il peut être gourmand en ressources. Mais on peut tout à faire donner une seconde vie à de très vieilles machines avec un GNU/Linux (type xubuntu) équipé d'un Scratch 1.4.
Un ordinateur pour deux enfants suffit. La programmation en binôme est très efficace pour des adultes et des professionnels, il n'y a pas de raison pour que cela ne fonctionne pas avec les enfants. Le plus important est de s'assurer que les rôles s'inversent régulièrement, et qu'aucun enfant ne monopolise la souris. Être deux par machine force les enfants à planifier leurs activités au lieu de se laisser porter par la souris, sans but précis. C'est donc plus contraignant et moins confortable, mais également plus formateur. À vous de voir.
La pédagogie
L'informatique est bien adaptée à des approches pédagogiques un peu différentes. En plus du travail en groupe, qui se passe naturellement, on a tout intérêt à mettre en place une pédagogie par projet. Encore un gros mot jargonnant me direz vous, et c'est un peu vrai.
Prenons l'exemple de l'enseignement de Scratch. On peut avoir une approche traditionnelle avec un chapitre sur les variables, un chapitre sur les boucles, un autre sur les conditionnelles. Chaque chapitre termine par quelques exercices d'applications pour vérifier que le cours est bien assimilé. Cette approche, ultra classique, a donné plusieurs livres : 1, 2, 3, 4, etc.
Mais on peut aussi retourner le modèle, et commencer par faire un petit Angry Birds (en utilisant des conditionnelles sans s'en rendre compte, du moins jusqu'à la fin du chapitre où l'on verbalise la notion après usage), continuer par un casse brique (et utiliser des variables sans apprendre explicitement ce que c'est), puis un Pong (mettant du parallélisme en œuvre sans réaliser que c'est une notion habituellement réservée aux étudiants niveau Bac+4 au moins), etc.
Suivre une pédagogie par projet signifie simplement que l'on apprend en faisant (« learning by doing », comme ils disent). Ce n'est cependant pas la panacée. Mal menée, cette approche sert surtout d'excuse à ceux qui n'ont pas les moyens matériels de mettre des profs devant leurs élèves, qui doivent alors se débrouiller par eux-mêmes. Avec des enfants, on sombre assez vite dans l'occupationnel stérile. Mais bien menée, cette approche est extrêmement motivante pour les apprenants. Et comme disait Maria Montessori, « la joie d'apprendre est aussi indispensable aux études que la respiration aux coureurs ».
Il existe plusieurs livres qui suivent cette approche, comme celui-ci ou celui-là, mais je ne les ai pas encore lu. En revanche, j'ai adoré ce livre. Il s'agit d'une bande dessinée racontant les aventures d'un chat et d'un étudiant en informatique. Au fil des 10 chapitres, on est amené à programmer des petits jeux pour « débloquer » l'aventure jusqu'au chapitre suivant. On apprend les bases de la programmation créative au passage. Je me suis proposé auprès de l'éditeur, mais quelqu'un m'a doublé pour en faire une traduction en français. Encore mieux !
Les intervenants
Le plus « gros problème » de cette approche est elle n'est pas traditionnelle. Certains enseignants ont visiblement un mal de chien à prononcer les mots magiques « je ne sais pas » devant leurs élèves. Pourtant, il est impossible de mener un enseignement sur machine si on n'est pas prêt à lâcher du mou, reconnaître que personne n'est omniscient ici-bas, et apprendre certaines choses des enfants eux-mêmes. Il est très difficile de professer sur ordinateur, et c'est d'ailleurs pour cela que j'ai choisi cette matière quand j'étais élève moi-même
C'est également pour cela qu'il est important d'avoir des enseignants maîtrisant les fondements de l'informatique pour enseigner convenablement la discipline. Savoir ce qu'est une fonction récursive terminale, ou comment est conçu un système d'exploitation donne souvent un certain avantage quand on cherche à déboguer du code d'apprenants, que ce soit en Scratch ou avec d'autres dispositifs techniques. Il ne suffit pas d'être fort en maths, d'être bon bidouilleur, d'avoir l'esprit d'analyse des ingénieurs ou d'avoir compris ce que « pensée computationnelle » veut dire. Aucune de ces composantes n'est suffisante. Il est toujours préférable d'être un informaticien accompli, dans toutes les dimensions du terme, pour enseigner l'informatique. Toujours.
Mais bon, je m'égare, pardon. On parlera épistémologie une autre fois. Passons.
Quand on n'a pas la chance d'avoir un doctorant en informatique motivé et brillant appuyé par une cellule de médiation efficace, on peut quand même faire tourner un club de programmation créative en MJC. Si les ressources et supports sont adaptés (les nôtres seront moins brouillon après le pilote) et si les intervenants passent bien avec les enfants, y a pas de raison.
Et après ?
Voilà donc l'état de mes réflexions vis-à-vis de Cod Cod Coding. Il n'y a rien de définitif pour l'instant, puisque le pilote n'a pas encore débuté. J'espère cependant avoir nourri vos réflexions. Je crois que la meilleure chose que nous puissions faire, c'est de discuter tous ensemble au fur et à mesure de nos avancées sur ce qui fonctionne et les problèmes rencontrés. Tout ne va pas bien se passer, mais tant qu'on documente correctement les expériences et leurs résultats, on avance.
C'est aussi pour cela que nous avons fondé http://jecode.org/. Le premier objectif est de faire se rencontrer (1) les volontaires souhaitant enseigner ce qu'ils savent, (2) les lieux qui veulent organiser des ateliers, et (3) ceux qui veulent apprendre l'informatique. Nul doute que cet objectif est parfaitement d'actualité suite aux déclarations du ministre. Inscrivez-vous sur notre carte interactive pour trouver vos interlocuteurs de demain.
Mais l'autre objectif, c'est de constituer une agora de tous les acteurs de terrain qui s'occupent de l'enseignement de l'informatique, pour leur donner un lieu où discuter et comparer leurs pratiques, afin d'aider à la diffusion des bonnes pratiques. Inscrivez-vous sur notre liste de diffusion pour échanger sur ces sujets.
Nous souhaitons ce débat le plus large possible, et c'est pour cela que nous cherchons à maintenir un triple agnosticisme :
- Nous tâchons de rester neutres sur la question logiciel libre vs. logiciel privateur. Même si je pense personnellement impossible d'émanciper durablement les esprits avec du logiciel privateur, ce débat n'est pas le sujet de jecode.
- Nous tâchons de rester neutres sur la pédagogie. Certains parmi nous aimeraient poser la refonte de l'école républicaine en préalable à l'enseignement pérenne de l'informatique en France, mais cela n'empêche les autres de profiter des terrains d'expérimentation qui s'offrent à nous.
- Nous restons neutres sur le statut des acteurs, académiques, auto-entrepreneurs, fonction territoriale, indépendants, ou autre. Nous sommes également très fiers de compter des membres partageant nos objectifs et valeurs dans d'autres pays, comme le Royaume-Uni, la Tunisie ou le Luxembourg.
Parfois, j'ai même des bouffées d'optimisme où je me dis que cette précipitation est peut-être une bonne chose. Cela empêchera de standardiser trop vite l'enseignement de l'informatique, et forcera l'émergence bottom-up de solutions pragmatiques de terrain, en mode DIY.
Et puis ensuite, je me rappelle qu'il naît chaque année 800 000 enfants rien qu'en France, qu'il y a 2 millions d'élèves dans nos écoles primaires (12 millions sur tous les niveaux de l'éducation nationale) pour quelques douzaines d'inscrits à la liste jecode pour l'instant. Alors je retourne bosser à mes supports, mes progressions et mes expérimentations...
N'attendez plus, venez expérimenter avec nous !