L’impossible maîtrise du code à l’école

Tous développeurs, tous créateurs ?

« Tous codeurs ? », interroge ainsi un entrepreneur du numérique. Pour un universitaire, nul doute, il faut « former à l’informatique l’ensemble des citoyens. » De fait c’est une nouvelle compétence de base pour l’Académie des sciences : « lire, écrire, compter, raisonner et programmer » : « L’enseignement de l’informatique doit permettre à tous les élèves – y compris ceux qui ne deviendront pas informaticiens – de comprendre le monde numérique qui les entoure, de le maîtriser et d’accéder aux nouvelles formes de pensée qui accompagnent le développement de l’informatique. »

Comprendre et même « maîtriser » le monde numérique en apprenant le code à l’école, c’est effectivement très ambitieux. À vrai dire, le rapport de l’Académie est plus timoré que la proposition de loi de certains de nos députés les plus audacieux : « Les objectifs fondamentaux et prioritaires qui doivent être assignés aux écoles sont l’apprentissage de la langue française, la maîtrise de la lecture, de l’écriture, l’utilisation des mathématiques et l’apprentissage du codage informatique. Ces savoirs doivent impérativement être acquis lors de l’entrée au collège. »

L’apprentissage du code devient un enjeu « pour vraiment « maîtriser » ce monde numérique. » C'est ici qu'intervient la rhétorique des « clés » du numérique.

« Il faut apprendre aux élèves comment marchent les objets qui entourent leur vie quotidienne […] Après tout, n’a-t-on pas appris à des générations d’élèves comment fonctionnent les machines à vapeur ou les automobiles ? » L’objectif, tel qu’il est présenté, est donc très ambitieux : « L’enjeu de l’apprentissage de la programmation, du « savoir coder » est donc celui de (re)prendre le pouvoir sur la machine. »

« Ne pas subir passivement, en tant qu'utilisateur, usager ou consommateur, les décisions d’un “programme” ou d’un “système informatique” sans être capable de les comprendre, de les contester ou les discuter, voire de les modifier. »

Mieux : il ne s’agit pas seulement de comprendre, de maîtriser, il s’agit de créer, non pas seulement des contenus, mais des logiciels eux-mêmes !

Le président américain demande ainsi aux jeunes d’apprendre l’informatique, de ne pas se conten­ter d’utiliser les appli­ca­tions sur leur smartphone mais de les inven­ter. Et Jacques Baudé de renchérir : « être des créateurs et non de simples utilisateurs de produits créés par d’autres. » Le renchérissement est parfois étonnant, avec un glissement du paramétrage à la programmation : « Il est indispensable de comprendre les principes des outils manipulés, de réussir à les paramétrer voire d’en construire. »

Mais à bien lire les prescriptions des uns et des autres, quelques contradictions se font jour quant à ces objectifs ambitieux. Au collège, « cette acquisition de l’autonomie demande d’apprendre les rudiments des langages et méthodes de programmation » : mais comment, à en croire l’Académie, des « rudiments » pourraient-ils donner une quelconque « autonomie » ?

Même contradiction dans l’étrange objectif affiché : « Maîtriser le numérique par la découverte de la programmation » au collège. « Le but est de leur apprendre à dépasser le stade de simple spectateur pour devenir des participants à part entière du monde numérique » dit le rapport de l’Académie des sciences.

Mais en quoi quelqu’un qui dispose seulement de rudiments peut-il être autre chose qu’un « spectateur » ?

Une maîtrise illusoire

Apprendre l’algorithmique ? Compter deux ans d’études supérieures avec quatre heures trente de cours par semaine !

Pour un programmeur professionnel : « On ne devient bon programmeur qu’après plusieurs années d’expérience, après avoir lu des lignes et des lignes de code. » C’est donc avec lucidité qu’il juge l’enseignement du code à l’école : « Avoir des notions de programmation est indispensable pour tout le monde. En faire un métier, c’est autre chose. »

D’ailleurs l’enseignement du code à lui seul ne peut pas suffire, selon Mathieu Nebra : « "Former à la programmation ", je dois dire que le terme est trompeur : il ne s’agit pas juste d’enseigner la programmation. Il s’agit de comprendre l’univers technique. Qu’on ait parlé au moins une fois à tout le monde de protocoles (TCP, UDP, HTTP…), de cryptographie (symétrique, asymétrique…), de techniques de compression (destructrice, non destructrice…), de langages, de méthodes de stockage (fichiers, XML, SQL, NoSQL…), d’API… Je continue ? »

« Le code informatique n’est pas fait pour tout le monde et on ne peut pas tous être développeurs » ajoute Frédéric Bardeau. L’analogie avec le solfège est d’ailleurs intéressante, car précisément le solfège, un code comme un autre, est trop exigeant pour être enseigné à l’école avec un horaire réduit ! Alors quel sens y aurait-il à initier au solfège tout comme au code informatique ?

Ajoutons qu’il y a loin de la maîtrise du code à la « maîtrise du monde numérique » dont personne ne peut véritablement se prévaloir. Un simple système d’exploitation pour ordinateur, pour prendre un objet numérique du quotidien parmi de nombreux autres, ce sont des dizaines et des dizaines de millions de lignes de code. À supposer que le code source soit public, pour simplement lire ces lignes sans même les comprendre et sans dormir, à la vitesse effrénée d’une ligne par seconde, il faudrait y passer plus d’un an de sa vie !

Le mythe des digital native nous laisse croire que les plus jeunes sont doués pour utiliser les objets numériques, objets ergonomiques c’est-à-dire conçus... pour être faciles à utiliser, comme l’iPad entre les mains d’un bébé. Autant dire que ce don ne veut pas dire grand-chose, même si Michel Serres s’extasie de l’extraordinaire habileté de sa « Petite Poucette ». Habileté que possèdent en fait, à des degrés divers, la plupart des personnes nées avant la démocratisation d’Internet.

En réalité, ceux qui ont vécu la naissance rudimentaire de l’informatique et la démocratisation du web ont plus de chances d’avoir des notions d’informatique que les jeunes générations actuelles faisant passivement face à un monde de pages dynamiques, d’applications et de logiciels complexes, exception faite bien sûr des plus curieux d’entre eux, assez peu nombreux, qui percent de façon autodidacte une petite partie de ces mystères.

Pour le dire autrement, jamais le code informatique n’a été aussi éloigné de ses utilisateurs.

Faut-il pour autant l’enseigner (au sens où il faudrait la maîtriser) ? C’est ce que l’on pourrait penser à première vue, puisque les plus jeunes sont démunis. Mais précisément la complexité des logiciels et la multiplicité des langages spécialisés rendent cette tâche proprement impossible. Cet enseignement ne peut donc être que superficiel, fondé sur des principes très abstraits et très généraux.

L’allemand est une langue à flexion : comprendre le principe de son fonctionnement ne fait pas parler allemand pour autant.

En réalité, laisser penser qu’aujourd’hui l’enseignement du code permet d’être « citoyen » (sic), c’est entretenir l’illusion d’une maîtrise de la technique que personne n’a plus, informaticiens compris.

L’évolution extraordinairement rapide et étendue du monde numérique nous oblige à une délégation de tous les instants, à un renoncement à notre autonomie, quoi que nous en pensions. Et ce d’autant plus que les objets numériques nous invitent à de plus en plus de simplicité. Nous dépendons d’objets que nous ne maîtrisons pas et laisser penser que nous pourrions les maîtriser est illusoire, voire empêche toute prise de conscience de cette servitude.

Un promoteur de l’enseignement du code l’avoue d’ailleurs benoîtement, pour qui « l’usage de l’expression "nouvelles technologies" » trahit la méconnaissance des élites françaises en matière de numérique : « Elles parlent de "plan numérique" comme si on planifiait la récolte de blé en URSS, cherchant à contrôler des choses qui ne sont pas contrôlables. »

Voilà qui a le mérite d’être dit.

Des objectifs finalement modestes

Dès lors, les ambitions diminuent à propos de l’enseignement du code, en contradiction avec les enjeux économiques affichés par ailleurs : « Si aujourd’hui beaucoup s’accordent sur l’utilité de l’apprentissage de la programmation, il reste à définir le point d’équilibre entre la nécessité d’enseigner les principes généraux utiles à la compréhension des conséquences du numérique et « l’injonction à devenir tous programmeurs ». »

L’école doit « initier […] aux notions centrales de l’informatique » et le Conseil supérieur des programmes, dans sa proposition de socle, ne propose pas autre chose qu’une « initiation », voire une « sensibilisation ». On est loin de la « maîtrise » réclamée précédemment. Être initié n’est pas maîtriser et ne donne aucune compétence. On est dans une culture superficielle, loin de la rigueur attendue.

« Tout le monde est en effet à peu près sur la même longueur d’ondes pour dire que l’objectif n’est pas de faire de tous les petits Français des développeurs, mais de leur inculquer des fondamentaux, une culture transverse et une logique. » Une « culture » qui malheureusement ne fait pas l’unanimité, certains estimant qu’une culture numérique peut très bien se passer de la connaissance du code.

Pour le CNNum il faut « enseigner un minimum de culture générale dans ce domaine dès le primaire. » Les métiers de demain « nécessiteront immanquablement un minimum de compréhension des langages de ces machines faites par les hommes » : certes, mais à quoi renvoie « un minimum de compréhension des langages de ces machines » ?

« Il n’est pas question pour le ministère de former des ingénieurs informaticiens en culottes courtes, mais de donner à tous des clés de compréhension sur le numérique. » Ainsi donc des fonctionnements aussi complexes de systèmes numériques pourraient se comprendre avec des « rudiments » ? En quoi savoir « créer soi-même un petit logiciel » permet-il de « maîtriser le monde numérique » ?

Les uns parlent ainsi de « développer un regard critique sur la technologie » : pour le ministre délégué à l’économie numérique, « apprendre à coder ou à développer peut permettre de comprendre comment est construit l’univers digital dans lequel ils évoluent, et de développer une distance critique ». Ceux qui n’auraient jamais appris le code ou trop peu n’auraient donc aucune distance critique ? Et l’école, à travers une multiplicité de discipline, n’a-t-elle par ailleurs pas vocation à former à la logique et à l’esprit critique ?

« Le but n’est pas de fabriquer une génération d’ingénieurs informaticiens, explique David Wilgenbus. Notre pays a intérêt à développer la culture technique et scientifique. Nous vivons dans un monde interconnecté, mais rares sont les personnes qui comprennent comment ça marche. Une conséquence, par exemple, est de ne pas connaître les risques que l’on encourt, notamment en termes de protection des données. »

De tels risques n’ont pourtant pas grand-chose à voir avec la capacité à coder !

On retrouve la même confusion entre informatique et numérique chez la vice-présidente du Grand Lyon en charge de l’innovation et des nouvelles technologies, avec l’emploi du verbe décoder dans son sens le plus large et le plus restreint : « Il s’agit de donner par l’éducation, la culture, les repères essentiels et nécessaires pour ‘décoder’ et naviguer dans ce foisonnement d’information, d’interconnexion massif et ouvert mais aussi de permettre un accès plus large et aisé à ces outils par la maitrise de ces différents langages, dont le code fait partie » ».

Il ne s’agit plus de dominer mais simplement de « se familiariser avec de nouveaux langages, méthodes, logiques de pensée et de création. » Comment peut-on être familiarisé avec quelque chose que l’on ne maîtrise pas ? Comme on l’a vu, l’éducation musicale à l’école montre qu’il y a loin de l’initiation à la maîtrise.

D’autres sont encore plus mesurés et estiment que « plus que l’apprentissage du code, c’est la sensibilisation aux cultures du numérique qui est importante. » Cédric Villani parle avec franchise d’« un petit tour derrière le décor » : « tout le monde devrait apprendre à programmer pour sentir ce qu’est un programme ! » De même, pour Déborah Elalouf qui organise des « coding goûters » : « ils repartent avec un œil différent sur le numérique. »

Bref, des objectifs sans doute louables mais très limités : nécessitent-ils un programme, des enseignants et des horaires dédiés dans un cursus scolaire ?

Les contradictions dans les objectifs se retrouvent dans cette revendication paradoxale de Colin de la Higuera : « une dis­ci­pline obli­ga­toire, sous la forme d’un ensei­gne­ment de décou­verte au collège ». De la même façon, après avoir réaffirmé l’importance cruciale de cet enseignement, le ministre de l’Éducation propose finalement « une initiation »… facultative et sur le temps périscolaire !

L’exemple de la spécialité ISN

Il y a un précédent récent qui montre bien l’écart entre les objectifs affichés et les objectifs réellement atteints : la spécialité ISN proposée en Terminale et en série scientifique. Son programme est à l’image des programmes scolaires modernes : démesurément ambitieux sur le papier, se satisfaisant de bien peu dans la réalité : pas d'épreuves théoriques (contrairement aux autres spécialités) mais un simple oral sur un projet mené pendant l’année... et des consignes de l’Inspection pour évaluer les candidats avec la plus grande bienveillance.

Les vingt et une « capacités » à maîtriser dans l’année doivent l’être… en consacrant trois heures à chacune ! Heureusement ce professeur se veut rassurant sur les objectifs réels à atteindre :

« Le contenu de ce nouvel enseignement est très vaste. Je pense que l’on peut même parler de transversalité. Dans les sciences du numérique, on parle aussi bien du transistor, composant élémentaire de l’ordinateur, que de programmation dans des langages évolués ou de manipulation de réseaux ou de robots. Un champ de connaissances et de notions aussi large est peu fréquent. […] Au vu des notions abordées, le programme semble à première vue très ambitieux. Mais en fait, nous n’avons pas besoin d’approfondir les notions abordées. Il est simplement question d’une introduction au monde du numérique. L’objectif est de faire comprendre aux élèves les enjeux de ce nouveau monde dans lequel ils évoluent. »

« L’expérimentation menée dans l’académie de Montpellier montre que la réflexion sur le contenu de cet enseignement doit encore être approfondie » : cette langue de bois administrative pour justifier l’ajournement de la généralisation – pourtant promise – de la spécialité ISN à toutes les séries du lycée.

Ainsi donc, ce qui est trop vaste déjà pour des élèves de série scientifique en Terminale ne manquera pas d’être parfaitement adapté à tous les autres niveaux : on se souvient du curieux « sondage » de l’Inria qui concluait avec candeur que cette spécialité était réclamée par un quart des Français… dès le primaire !