À propos du "code à l'école" ou de l'idée de faire faire de la programmation aux enfants ...
Ce billet est toujours en cours de réflexion ...
Après avoir laissé décanter quelques temps j'ai envie de donner mon avis sur cette question du "code à l'école" ou "apprendre à coder aux enfants" ...
Pour commencer, sachez que j'aime ce métier de développeur, je trouve qu'il se rapproche d'un métier artistique à bien des égards: on part souvent d'une feuille blanche pour donner naissance à "un truc" (logiciel).
Le code source libre apporte au développeur la possibilité de ne pas réinventer des trucs existants et de se focaliser sur "son idée" en utilisant des morceaux de logiciels tiers. Il permet aussi de regarder comment ont fait les autres, d'apprendre en observant ses pairs ...
Mais je regrette que ce métier ne soit pas encadré par un code de conduite ou de déontologie, il existe le secret médical, la protection de sources pour les journalistes ... mais rien pour nous qui avons accès à absolument toutes les informations stockées ou qui transitent dans les différents systèmes informatiques auxquels nous avons accès.
Ainsi l'exemple le plus simple que je peux présenter est la création d'un "Logiciel menteur", qui contiens par exemple un bouton "envoyer le message" et qui l'envoie également à une autre personne à l'insu de l'utilisateur. Nous avons des centaines d'exemples de ce genre, le dernier en date qui a fait la une (mais n'a pas créé de scandale en rapport avec l'importance des faits), c'est le cas de snapchat, un service en ligne à succès qui propose à ses usagers de diffuser une photo ou une petite vidéo à ses amis pendant une durée très courte de 1 à 10 secondes ... le problème c'est qu'il n'en est rien, les photos et vidéos sont conservées sur les serveurs snapchat à l'insu des utilisateurs !
Snapchat hébergeant vos photos que quelques secondes a provoqué des idées loufoques et beaucoup de personnes se sont prises en photo nues ou dans des situations incongrues pensant que l'image ne serait diffusée que quelques secondes ! Manque de chance, certains font des captures d'écrans et re-diffusent alors ces photos sans limite de temps ... mais plus grave encore des pirates ont volés la base de données de snapchat et diffusent les photos en question à la planète entière. Attention avant de cliquer vous allez tomber sur des photos loufoques ou pouvant heurter la sensibilité des plus jeunes: http://hackedsnapchatphotos.com/. Certes les pirates n'auraient pas du pirater la base de données, mais la faute la plus grave est à l'actif de snapchat qui a mentis à ses usagers et conservé les photos sans limite de durée !
Le Monde a fait un article dessus ... mais ça aurait du donner un procès et provoquer une onde de choc auprès des utilisateurs de services en ligne ... il n'en est rien, beaucoup trop de monde continue à faire confiance à des services "cool" mais menteurs.
Aussi, dans ma réflexion d'amener les enfants à apprendre la programmation par cette idée du "code à l'école" j'ai creusé diverses pistes avant d'en parler à la communauté éducative du projet AbulÉdu. J'ai acheté un robot à roulette qu'on peut programmer, le lil'bot, ma société a donné un petit coup de pouce à l'appel au financement participatif sur kickstarter, on en a parlé sur notre newsletter ... j'ai bossé dessus, réfléchis et creusé la super piste de programmation un peu visuelle inspirée de BlocklyDuino ... présenté ça aux copains et finalement j'ai laissé décanter.
J'ai aussi avancé sur d'autres outils pour finalement entendre un jour dans une discussion "c'est pas en faisant bouger la tortue logo qu'on a avancé beaucoup sur la programmation à l'époque du plan informatique".
J'ai finis par me poser la question de savoir si ce qui importe dans le fond c'est de savoir faire de l'algorithme, des boucles, des additions, faire bouger un robot ou une tortue ... ou si finalement l'enjeu est ailleurs ?
Je propose donc une autre direction pour "le code à l'école", direction qui serait centrée autour des 4 "clés" suivantes: L'informatique est une technologie formidable qui permet de
- collecter des données
- stocker des données
- traiter ou analyser des données
- diffuser des données
Et je me dis que si on arrivait à faire prendre conscience de ça aux enfants on donnerait peut-être à un adolescent les clés lui permettant de comprendre pourquoi c'est grave de raconter sa vie et celles de ses proches sur des sites internet divers et variés. Peut-être qu'ils pourraient comprendre qu'il est facile de croiser des données entre plusieurs sites, ou entre des dates éloignées ... il y a six mois je t'ai demandé le prénom de ta maman, aujourd'hui c'est celui de ton papa, demain c'est ta soeur ou ton frère dont je connaîtrait le prénom ...et ainsi de suite je tisse une toile d'information autour de toi.
Combien d'adultes se sont fait "piéger" (car pour moi c'est un piège) par google lorsque gmail a demandé un jour "quel est votre numéro de téléphone mobile" soit disant pour sécuriser l'accès à gmail et pour pouvoir envoyer le mot de passe par sms ... combien d'adultes n'imaginent pas que grâce à ça google a une clé permettant de regrouper des adresses mails "anonymes" du genre "championdegolf@gmail.com" avec votre véritable nom ?
Pourquoi votre véritable nom, hé bien tout simplement qu'en associant championdegolf@gmail.com avec 0606060606 et ensuite en cherchant dans son annuaire (oui vous savez tous les contacts "sauvegardés" chez gmail de tous les téléphones android du monde) quel est le nom de la personne associée avec ce numéro ... on trouvera bien qui vous êtes
Combien ont un jour eu un téléphone android dont le carnet d'adresse est ainsi "partis" sur google sans trop l'avoir voulu ?
Voilà, si on arrive à faire comprendre ces enjeux là par "le code à l'école" ... je signe tout de suite, c'est encore une fois une très belle utopie
Proposition de projet "le code à l'école"
J'aurais bien proposé un projet du genre "observation météo" qui aurait à mon sens plein de retombées intéressantes, surtout si on le connecte avec un service en ligne de type babytwit ou twitter
Collecter les données
Les données "normales"
- date et heure de l'observation météo
- observation mété
Au passage on pourrait imaginer deux outils différents, l'un au format web avec des champs à compléter. Et l'autre sous la forme d'un robot connecté à twitter ou babytwit et qui lirait les messages à conditions qu'ils respectent une syntaxe particulière comme par exemple
@robotmeteo: 9h15;soleil;15 degrés;vent du nord;5 noeuds;etc.
On pourrait ainsi aborder les questions de "lecture" d'une phrase par un ordinateur "bête" et progresser jusqu'à montrer qu'il pourrait comprendre une phrase "normale" comme par exemple
@robotmeteo: bonjour robot, aujourd'hui à 9h15 il y avait du soleil, la température était de 15 degrés @robotmeteo: il y a un peu de vent du nord, environ 5 noeuds d'après l'anémomètre
Les données collectées à l'insu de l'utilisateur
Là je ne suis pas super doué car il faut souvent avoir un esprit un peu retors pour chopper des informations "implicites" mais le plus simple est de stocker l'adresse IP d'origine du message, faire une requête sur une base de type GeoIP et de garder ça dans un coin "pour plus tard". On pourrait également aller lire les détails du compte source si le message est envoyé depuis babytwit/twitter car on y trouvera peut-être le nom de la ville, si ça coincide avec GeoIP bingo on garde l'information. On peut aussi voir si pendant 2 ou 3 semaines l'ip ne change pas où si elle change que le nom de la ville retournée par GeoIP est "proche" de la précédente.
Stocker les données
Là j'aurais proposé un exercice aux enfants de leur demander d'après eux comment on pourrait stocker les informations "météo". On aborde alors le concept de tableau (qu'on peut représenter dans un tableur) mais le point essentiel serait d'aborder le concept de table (base de données) et de lien entre deux tables pour ne pas répéter une informations plusieurs fois ... là je sais bien qu'on demande surtout de très grandes compétences aux personnes qui sont en charge de l'animation pédagogique. Mais il n'y a pas de secret, la clé de la réussite est *toujours* dans la compétence de la personne qui transmet la formation.
Traiter ou analyser des données
Encore une fois, une étape géniale, car on peut montrer plusieurs facettes de cette application, l'une qui serait de traiter les données météo de manière logique (dans le sens où on communique aux usagers du service les informations collectées de manière globale), par exemple la carte du pays avec les différents relevés réalisés par les autres écoles.
Le traitement normal des données
Avec les calculs (tiens, aujourd'hui on fait des maths), les moyennes, les maximums, minimums, comparaisons entre différentes données etc.
Le traitement caché
Il faut toujours avoir un esprit bien tordu pour imaginer des utilisations détournés mais je dirais par exemple qu'une utilisation détournée serait de ... mince je n'ai pas la moindre idée ... envoyer une publicité pour des panneaux solaires aux écoles dont l'ensoleillement est X et des éoliennes à celles dont le vent est Y ? ça me semble être une utilisation "positive" des données, il faudrait trouver un truc plus retors !
Diffuser des données
En ce qui concerne la diffusion des données, il est important de faire comprendre que la diffusion des résultats des traitements peuvent être visuels comme une carte et on peut prendre un exemple avec ce qui a déjà été fait par la communauté d'AbulÉdu avec les recettes de cuisines de babytwit, ou la carte des poilus.
Mais aussi expliquer l'intérêt pour l'utilisateur de s'assurer que le service permet d'extraire les "données brutes" (mais anonymes par exemple) de toutes les données de toutes les écoles, après tout la base de données a été alimentée de manière collective, c'est donc un bien commun qui doit être accessible à tous ... et à ce sujet c'est rarement le cas des services en lignes existants, c'est donc l'occasion de poser la question et de faire réfléchir les enfants sur ce concept.