Enseigner ou pas le code à l’école ?

J’ai depuis longtemps un avis très tranché sur la question que je n’ai jamais pris le temps d’organiser dans un écrit. Mais cet horrible article est le troll de trop.

Je me suis passionné pour l’informatique à l’époque où la notion d’ordinateur personnel faisait débat. J’avais alors une dizaine d’années et j’ai commencé la programmation avec l’APL et l’assembleur 8080, deux langages de programmation particulièrement illisibles et inadaptés à l’apprentissage. Je n’ai pas choisi, j’ai fait avec ce que j’avais sous la main (les ordinateurs que mon père rapportait du bureau).

Dès cette époque je m’évertuais à convaincre les gens que je rencontrais de deux choses :

  • l’importance de comprendre l’informatique pour tout le monde (vers 15 ans je voulais offrir un ZX81 à ma grand-mère de 78 ans),
  • c’est à la portée de tout le monde.

It’s not magic, it’s work

(ce n’est pas de la magie, c’est du travail)

Pas question ici de savoir mettre un texte en gras, faire une recherche sur le web ou publier un énième autoportrait sur son profil.

Il s’agit de comprendre que l’ordinateur est une machine idiote qui exécute à la perfection et à toute vitesse ce pour quoi on l’a programmée. C’est cette vitesse et cette capacité à répéter sans fin qui produit l’illusion d’intelligence.

cropped-fond1.jpg

Par exemple, un programme qui “joue bien au Scrabble” va simplement essayer toutes les combinaisons de mots une par une, en calculant à chaque fois le score résultant et choisir le mot qui donne le meilleur score. Ce que je viens de décrire s’appelle un algorithme.

Allons plus loin, écrivons ce programme :

1) Lire le fichier qui contient la liste de tous les mots français
2) Essayer toutes les combinaisons de lettres de notre tirage et
   isoler les mots qui existent dans notre dictionnaire
3) Pour chacun des mots possibles
   a) Essayer de le placer sur le plateau de jeu
   b) Vérifier que les mots combinés existent aussi
   c) Calculer le score résultant
   d) Répéter avec le mot suivant
4) Choisir le mot qui rapporte le plus de points

Immédiatement, l’ordinateur apparaît moins intelligent quand on comprend que son seul mérite c’est d’avoir essayé toutes les combinaisons possibles.

Ce premier niveau de compréhension devrait être inculqué dès le plus jeune âge. Pourquoi ? D’abord parce-qu’il rassure : l’ordinateur serait vu pour ce qu’il est, une simple machine. Ensuite parce-que cela sous-entend que chaque chose que fait l’ordinateur a été programmée par un être humain et donc que c’est à notre portée.

Coder c’est anticiper

Imaginez un petit robot au bout duquel se trouve un stylo qui touche le sol. Quand ce robot avance, il “dessine” un trait. Maintenant, représentez-vous ce que fait le programme suivant :

Répéter 4 fois la boucle :
  Avancer d'un mètre
  Tourner à droite de 90° (un angle droit)
Boucler

Visualisez mentalement le parcours du robot et le dessin obtenu. Vous avez trouvé ? Oui, c’est un carré, bravo. Qu’avez-vous fait ? Vous avez exécuté le programme dans votre tête. Développer cette capacité à anticiper c’est développer la capacité de réfléchir. Mais est-ce que l’école n’est pas justement le lieu où l’on apprend à réfléchir ? Alors c’est quoi le problème ?

Quelle école pour quelle société ?

L’article qui me fait réagir n’est pas seulement le point de vue léger d’un blogueur. C’est un message dangereux qui nous renseigne crûment sur notre société.

Ce qui m’a d’abord choqué c’est de trouver, au milieu de tout un tas d’exemples d’initiatives visant à promouvoir l’apprentissage du code pour s’amuser ou pour se cultiver, une référence à l’infect projet 42 de Xavier Niel. Pour mémoire (ou pour information pour ceux qui ne lisent que la presse) sous couvert (ultra-médiatisé) de créer une “école” moderne de programmation, c’est en réalité une façon de repérer les quelques passionnés talentueux qui arriveront à être productifs dans un environnement hostile et stressant (faites-vous votre opinion en tapant “42 piscine” sur un moteur de recherche). De bonnes recrues, corvéables à merci.

Puis viennent les questions “de fond” : comment former tous ces professeurs d’informatique ? Les élèves ont-ils besoin d’une matière supplémentaire ? Est-ce bien utile d’enseigner l’informatique, cette discipline si rébarbative ? Pour finir par “Quitte à introduire une matière qui décoiffe, autant promouvoir l’enseignement au design ou à l’entrepreneuriat…”. Ben voyons.

Ce qui se dégage de cette lecture c’est l’image de quelqu’un qui se sent dominé par l’informatique, infériorisé et qui, du coup, la traite avec mépris et condescendance. Il reconnaît qu’elle induit une autre façon d’enseigner et d’apprendre mais il préférerait que ce soit via une autre matière. Sauf que… non.

Il y a 2 façons d’aborder l’informatique : soit on applique des procédures, on sait qu’il faut cliquer ici pour obtenir tel résultat, soit on comprend ce qu’on fait et on est capable de faire faire ce qu’on veut à la machine, pas seulement ce que d’autres ont prévu. Je ne vais pas me répéter, (re)lisez Libre vs simple).

Avec la première approche, celle qui a jusqu’ici été privilégiée (puisqu’on a laissé des industriels choisir ce qu’on ferait de nos machines), on a une population de consommateurs hypnotisés par leurs écrans, et dans le travail, tout juste bons à faire le boulot que des machines ne peuvent pas encore faire.

Mais il existe une autre voie. Celle qui consiste à considérer que l’ordinateur est un terrain de jeu et d’expérimentation. “Tiens, si j’appuie sur ce bouton, il se passe quoi ?” Éveiller la curiosité, c’est aussi le rôle de l’école.

Comme par hasard, ce sont aussi deux projets de société. Docile ou libre.

Inventer d’autres façons d’enseigner

D’après l’auteur de l’article, enseigner la programmation c’est rébarbatif. Je suppose qu’un cours magistral sur les variables et les structures de contrôle, sur le papier, ça fait autant envie qu’apprendre la trigonométrie ou la division cellulaire.

Mais la programmation, quoi qu’il en pense, c’est amusant. Parce-que c’est un jeu avec soi-même. Et justement, les jeux ils adorent ça les enfants, c’est même comme ça qu’ils apprennent la vie.

Créer un programme, c’est comme enseigner quelque-chose à une machine. Imaginons une classe où les élèves doivent créer un jeu vidéo, le jeu du pendu par exemple. C’est un jeu simple dont ils connaissent les règles. Ils vont devoir enseigner ces règles à l’ordinateur. Ce changement de rôle (l’élève devient un maître) en lui-même est très intéressant et instructif. Pas tant du point de vue de la programmation mais quant aux compétences qu’ils vont devoir développer : formuler clairement et complètement les règles du jeu, les ordonner, envisager toutes les possibilités.

Puis il leur faudra imaginer un algorithme, en vérifier la validité, sur le papier d’abord. Apprendre à travailler en équipe, découvrir qu’il y a plusieurs façons d’obtenir un résultat correct.

Ensuite il faudra implémenter cet algorithme : en traduire chaque étape dans un langage que la machine pourra comprendre. Puis tester le résultat, comprendre pourquoi ça ne marche pas, corriger, tester encore, vérifier qu’on ne peut pas tricher…

Et les profs dans tout ça ? Je ne vais pas parler à leur place mais il me semble :

  • qu’ils resteraient dans/reprendraient leur (véritable) rôle de guides : mettre sur la voie, faire prendre conscience de l’erreur de raisonnement, proposer des pistes
  • que tout le monde bénéficierait du travail de groupe
  • que la diversité des solutions acceptables encouragerait la créativité, voire qu’un élève ou un groupe pourrait trouver une solution plus optimale que celle proposée par le prof ; le fait que l’informatique soit une compétence transversale et pas une matière ne mettrait pas le prof en défaut ou mieux, montrerait aux élèves que même les profs apprennent toute leur vie, ne sont pas omniscients, etc.
  • que leurs matières seraient plus attrayantes car mises en pratique

Des outils

Un changement de comportement vis-à-vis de l’informatique (acteurs vs moutons) nécessiterait/induirait aussi un changement dans les outils disponibles ; aujourd’hui, très peu sont conçus pour être utilisés par des non-initiés. Mais on trouve quand même des perles :

Capture d'écran de Scratch
Ici un programme qui devrait vous rappeler quelque-chose (cliquez sur l’image), écrit avec Scratch.

Pas grand chose en France ou en français mais, vous l’avez compris, ce n’est pas une question d’éducation mais de politique.

Oui mais la formation du maître alors ?

Eh bien l’idée, c’est de ne pas former spécifiquement les profs et d’utiliser une théorie de l’éducation qui va à l’encontre de la pédagogie traditionnelle, celle du maître ignorant : le professeur se place au même niveau que l’élève, il découvre la matière et progresse en même temps que lui.

Cette philosophie de l’éducation est tout à fait moderne puisqu’elle date de… la fin du XVIIIème siècle. Découverte “par hasard” par Joseph Jacotot, un professeur défenseur des principes révolutionnaires dont les travaux ont été réanalysés par Jacques Rancière dans son livre “Le maître ignorant” (dont on peut trouver une fiche de lecture ici).

Et comme par hasard, qu’est-ce qu’on découvre sur un moteur de recherche en 3ème position quand on tape “maître ignorant” ? Un article de 3 pages sur le site du CNDP (Centre National de Documentation Pédagogique, si vous ne savez pas ce que c’est, jetez un œil au site et notez le pictogramme en haut à gauche “Ministère de l’Éducation Nationale) qui, devant la difficulté des enseignants à valider les épreuves du B2i (Brevet Informatique et Internet) propose justement de s’inspirer de la méthode Jacotot pour aborder l’informatique. En voici le dernier paragraphe :

Et pour finir, une question : mais qu’a donc la technologie informatique de si particulier qu’elle semble s’accorder aussi aisément avec la pensée de Jacotot ? L’idée que l’univers des connaissances puisse être abordé par n’importe quel bout, par n’importe quel livre, par n’importe quel objet, voilà une idée qui s’accommode bien d’un monde parcouru par un réseau donnant accès à une immense quantité d’objets de connaissance que chacun peut lier les uns aux autres à sa guise. Mais il existe aussi un parallèle entre la pensée de Jacotot, provocation radicale dans le monde des idées pédagogiques, et les TIC dont la présence est, elle aussi, une provocation radicale dans le monde de l’éducation et des objets d’apprentissage.

Mais pour cela, encore faut-il vouloir d’une société de gens qui pensent.

2 réflexions sur « Enseigner ou pas le code à l’école ? »

  1. Computer Science Unplugged vise à faire découvrir l’informatique sans utiliser d’ordinateur. Il y a des tas de fiches, un bouquin, beaucoup de choses traduites en français, c’est une vraie mine d’or. http://csunplugged.org/

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *