Apprenez à vos enfants à coder, sinon ils seront des esclaves du numérique

On pouvait à peu près se passer de l'informatique au XXème siècle. Aujourd'hui, c'est devenu impossible. Les programmes organisent nos vies et nous interagissons en permanence avec les ordinateurs. Pourtant, la population reste désespérement inculte sur tout ce qui touche à l'informatique. C'est un problème majeur.

De mon temps

L'informatique a très longtemps été totalement délaissée par l'éducation nationale. Ça s'arrange semble-t-il, à raison de quelques petites dizaines d'heures par an à partir de la primaire, mais lentement. Trop lentement à mon goût. Consacrer une heure par semaine à une matière aussi vaste et complexe que l'informatique me paraît insuffisant.

Il faut apprendre à contrôler un ordinateur.
Il faut apprendre à lire et écrire des programmes.
Il faut maîtriser cet outil - sous peine d'être analphabète dans le monde numérique.

Nous vivons un événement rare, qui n’arrive que deux fois par siècle : l’ajout d’une nouvelle discipline. Si on veut le faire sérieusement, il est urgent de mettre en place un plan Marshall pour la formation des enseignants en informatique. Gilles Dowek, interview

Un langage universel !

Je me concentrerai sur la programmation et les langages informatiques, en laissant de coté tout ce qui a trait aux machines physiques. Programmer, c'est d'abord apprendre un langage. Mieux : c'est apprendre toute une famille de langages différents et adaptés à des situations très diverses.

Le langage informatique est un outil de communication. Il permet d'entrer en relation avec un processeur, à travers un mille-feuille de protocoles d'échange d'informations. On se sert par exemple de C et de Fortran pour organiser des suites d'opérations, sous la forme d'instructions, et dicter ainsi le traitement voulu à un processeur. Le développeur a un pouvoir total. Un ordinateur exécute sans discuter, extrêmement rapidement, et sans se tromper. Il faut voir un processeur comme un outil pleinement complémentaire à l’homme.

Apprendre à programmer, c'est s'offrir la possibilité d'organiser, interagir, contrôler des institutions, des organisations. Puisque tout passe à un moment ou à un autre par un ordinateur, le développeur possède un grand nombre de clés (symboliques). Un pouvoir encore plus hallucinant avec l'arrivée massive des objets connectés : on s'attend à compter 100x, 1000x plus d'objets connectés que d'humains dans les prochaines années. Veut-on vraiment s'interdire de parler le langage adapté aux machines ?

L'apprentissage des langages de programmation mérite d’être au même niveau que l'apprentissage d’une langue vivante.

Ca fait râler des vieux ? Et alors ?

Logique appliquée

Apprendre un langage, c'est aussi apprendre la logique formelle et l'appliquer à des cas concrets. Sans logique, pas d'algorithmes, pas de traitement de donnée, pas de programmes intelligents (ou presque). Attention : une logique parfaite n'empêche pas les bugs, les erreurs de conceptions, ou les fautes d'implémentation. C'est une condition nécessaire qui est loin d'être suffisante.

Programmer, c'est d'abord réfléchir. Appréhender un problème, c'est fixer un périmètre, des entrées, des sorties, faire quelques hypothèses opérationnelles puis casser le problème en sous-problèmes plus simples. Diviser pour mieux régner, et explorer la complexité de l'ensemble jusqu'à pouvoir discerner aisément chacun des rouages. Cette gymnastique cérébrale est utile dans la vie personnelle ou professionnelle : prendre de bonnes décisions, c'est déjà bien cadrer l'espace des possibles.

Si le latin est présenté comme la principale racine linguistique du français, la logique à l’œuvre dans l'activité du développeur est la principale fondation de tout discours censé.

Apprendre à coder, c'est apprendre à structurer son discours, ses idées, son raisonnement.

Il y a dans ce pays, une fracture (numérique)

Les vieux ont toujours regardé les jeunes avec, dans les yeux, un mélange de condescendance et d'envie. Jeunes, oui, certes, mais passablement idiots. Rien de neuf sous le soleil.

Quand ils sont tout neufs, qu'ils sortent de l'œuf, du cocon, tous les jeunes blancs-becs prennent les vieux mecs pour des cons. Quand ils sont d'venus des têtes chenues, des grisons, tous les vieux fourneaux prennent les jeunots pour des cons ! Georges Brassens

Aujourd'hui, j'entends parler de millenials. Nés avec la technologie, ils la maîtriserait d'instinct, naturellement, par une sorte d’imprégnation magique. Un sombre mensonge, bien entendu. Ils passent certes un nombre d'heures hallucinants à jouer des pouces sur leurs smartphones. Comme les vieux ?

Comme les vieux. Maîtrisent-ils pour autant ces outils numériques ? Bien sur que non. Pire : ils sont maîtrisés par ces programmes, par ces applications. Leur très naturelle aisance à jouer avec ces nouveaux jouets n'implique absolument pas qu'ils sachent les créer. L'alphabétisation numérique, computer literacy en anglais, n'est que la première étape vers la réelle maîtrise des programmes. Disons-le clairement : l'activité créatrice permise par la programmation demande beaucoup plus d'efforts que jouer avec un smartphone et glander sur Facebook, Instagram ou Twitter.

Observation contre intuitive : les millenials utilisent toute la journée des outils qu’ils ne comprennent pas.

Ils ne les comprendront que s'ils consacrent à cette tâche un travail personnel, comme les autres. C'est exactement la même situation chez les adultes qui passent leur vie à utiliser un ordinateur sans savoir écrire une ligne de code, soit 99% de la population mondiale, au bas mot. Être contraint d'utiliser des outils pensés par d'autres, sans pouvoir les modifier, les améliorer, ni en changer, ni même parfois les comprendre. Il faut se poser la question de cette dépendance, au niveau des citoyens, professionnels et organisations. C’est une question importante.

Il y a une fracture numérique et technologique vis à vis de l'informatique. Si nous y sommes collectivement tombés, essayons de ressortir de cet abîme et, pour le moins, n'y entrainons pas nos jeunes !

Les enfants doivent apprendre l'informatique tôt

L'informatique, la programmation, l'algorithmique, la logique doivent être enseignés à l'école. Dans des créneaux spécifiques, différents des mathématiques et de la technologie. C'est à mes yeux une évidence totale. Je ne suis pas le seul, loin de là (académie des sciences).

Comme la lecture, l'écriture, les mathématiques, il faut inclure l’informatique dans le programme d'apprentissage des enfants. Avec ou sans ordinateur, seul ou en groupe, en théorie ou en pratique. La compréhension et la maîtrise de ce formidable outil qu'est le processeur doit faire partie du socle des connaissances de base. Tôt, évidemment, pour profiter de leur capacité d’apprentissage phénoménale, et pour aider à la structuration logique de ces jeunes cerveaux. Pas forcément à haute dose, mais largement plus qu'à dose homéopathique, pour que ça puisse marcher. Ceux qui parlent d’embrigadement ou de formatage des cerveaux pour les besoins des entreprises ont loupé quelques marches et feraient mieux d’ouvrir les yeux : le monde se construit en partie sur l'exploitation intelligente de la puissance de calcul.

Rappelons qu'il existe des méthodes d'apprentissage de la pensée informatique adaptée à tous les âges. Robots programmables, chasse au trésor, invention de jeux, énigmes logiques ... les activités ne manquent pas.

Filles, garçons : même combat

Je n'ai pas envie de faire de différence de genre dans ce constat, ni dans les recommandations. Garçons, filles : même combat, apprenez à programmer ! L'énorme majorité des développeurs que je rencontre sont des hommes. Les femmes sont rares. Ce constat est d’ailleurs valable dans toute ma vie d'ingénieur, chercheur, data scientist. Chez les devs, c'est effarant et effrayant. Ça s'explique peut-être par une différenciation qui s'opère dès le collège. C'est ce que me raconte mon histoire personnelle. Peut-être suffirait-il de dire aux enfants, filles ou garçons, des choses simples : programmer, ce n’est rien de plus que raconter une histoire à un ordinateur. Et c’est aussi lui faire faire ce qu’on désire. Ca n'est pas genré.

Je vais peut-être vous étonner, mais la situation était aussi largement perfectible en sortie d'école d'ingénieur, au début des années 2000. Si on met de coté les écoles et formations spécialisées en informatique, la norme est, en moyenne haute, une centaine d'heures de programmation, incluant de la théorie et un peu de pratique. Pour beaucoup de nos futurs cadres techniques, leurs compétences se bornent à écrire quelques macros MS Excel et une petite expérience en Matlab (voire R ou python pour une faible minorité) lors d'analyse de données plutôt propres. Léger. Comme si cette expérience vraiment rudimentaire allait leur permettre d'attaquer des problèmes réels avec des algorithmes compliqués …

Ce discours sonne peut-être un peu aigri ; peut-être le suis-je. C'est surtout un constat qui s'impose à moi et me rend parfois amer. Pour recruter nos data scientists, chez AltGR, nous avons placé le minimum syndical au doctorat en sciences mathématiques, biologique ou physiques. Pas pour leurs expertises techniques sur des domaines que nous n'avons aucune chance de comprendre, mais pour leur expérience de trois ans en traitement et manipulation de données, et donc en informatique.

GNU/Linux

Je vous ai parle de GNU/Linux comme outil de travail alternatif à Mac OS ou MS Windows ? Non. Disons que c'est un véritable pré-requis pour tout travail de traitement de données un peu massives, ou sales. C'est un autre combat.

Je baigne dans l'informatique depuis mes 10 ans

Toute pensée est la confession d'un corps, disait Nietzsche avant de s'envoyer son huitième steak tartare de la matinée dans une gargote de Turin. Que m'a apporté l'informatique ? Elle m’a donné les outils pour aller au bout de ma thèse de doctorat, m'a appris un métier et m'a permis de mener à bien de nombreux projets sympathiques.

Le monde de la valorisation de données est un monde en explosion, avec des technologies en forte évolution et dont les besoins commencent à peine à se fixer. L'informatique nous permet d'exprimer n'importe quel traitement mathématique dans un langage compris par n'importe quel cœur de calcul : c'est un pouvoir énorme ! Il ne demande que deux choses : du travail et de la pratique. Rien d'inaccessible, franchement. Et même si les maths peuvent être un point de blocage, chacun peut, s'il s'en donne la peine, écrire des programmes. Les maths viendront ensuite, s’il le faut. L'informatique m'a aussi forcé à ne pas perdre le goût de l'effort et de conserver une forme d'exigence intellectuelle. Pour se créer liberté, un autre mot de Nietzsche.

La messe est dite

L’investissement vaut le coup. Ça tombe bien, puisque ces compétences seront bientôt indispensables pour tout travail intellectuel. Les manipulateurs de symboles de notre société en grande partie tertiarisée devront savoir dompter, puis controler, les processeurs.

Indispensable : à quoi l’on ne peut se soustraire, dont on ne peut se dispenser.

Hey toi, le jeune !

1 Lache ce smartphone, tu perds ton temps.
2 Apprends l'informatique !

Tu me remercieras un jour. Oui.


Thomas