Cette année, apprenez à programmer !
Mon premier ordinateur était un Amstrad cpc 6128. Mon père l’avait acheté peu après sa sortie soit en 1986… Il n’y avait alors pas beaucoup de logiciels (à part les jeux) et les passionnés apprenaient la programmation pour faire quelque chose avec cet ordinateur.
Une dizaine d’années plus tard, l’ordinateur et plus précisément le PC, a commencé à rentrer dans chaque foyer. Vous vous souvenez de Windows 95 puis 98 ? C’était il y a presque 30 ans. Les logiciels se sont multipliés pour répondre à différents usages. Enfin, surtout de la bureautique, de la communication, navigation web, un peu de photo et vidéo.
Encore une dizaine d’années plus tard (2007), l’iPhone révolutionnait encore l’usage de l’outil informatique en nous permettant d’emporter un ordinateur dans notre poche. Et avec la fameuse promesse « There is an app for that ». Quelqu’un avait donc déjà pensé à répondre à votre besoin.
Sauf que ce n’est pas tout à fait vrai…
Toutes les applications existantes couvrent des besoins génériques et de manière uniforme. Mais tout le monde a des besoins particuliers pour lesquels il n’existe rien. C’est vrai dans le monde professionnel et c’est la raison de la présence d’une grande partie de mes stagiaires en formation Python. Ils ont des besoins d’automatisation pour lesquels il n’existe pas de solution et ils devront se débrouiller eux-même.
Et ceci est aussi vrai pour le besoin personnel. Vous faites certainement à la main ce qu’un ordinateur pourrait faire pour vous, souvent parce que vous ne savez même pas que vous pourriez gagner du temps.
Et ce début d’année scolaire va me permettre de vous l’illustrer par un cas pratique.
Le laborieux travail des associations de parents d’élèves
Chaque début d’année, les associations de parents d’élèves reçoivent de la part des établissements scolaires les coordonnées des parents (qui ont accepté le partage) afin de communiquer avec eux. En 2023, cette communication se fait par mail. Il faut donc créer les contacts dans l’outil de messagerie de l’association.
Pour notre collège, les informations sont envoyées sous forme d’un fichier Excel. Et un parent s’y collait pour… faire des copier/coller…
Notre collège, c’est (environ) 450 élèves soit 900 parents. Ok, entre les familles monoparentales et celles qui n’autorisent pas la transmission de leurs coordonnées, on va dire 700. Il faut donc créer 700 fiches et faire 2100 copier/coller (nom, prénom, mail)…
L’année dernière, la personne qui s’est dit faire ça a mis quelque chose comme 3 soirées…
Le code à la rescousse
Et si on connaît la programmation ? J’ai mis 1 heure à écrire un programme (en m’amusant et essayant des trucs) qui permet de transformer les données d’origine en fichiers par classe afin qu’ils soient simplement importés dans les contacts. Ce programme fait la transformation instantanément. Ensuite, l’import des 16 classes (donc 16 fichiers) se fait manuellement et prends moins d’un quart d’heure. Cette étape aurai pu également être automatisée mais elle nécessitait des accès que je n’ai pas et qui sont difficiles à maintenir. C’est donc un choix de simplicité.
Ce programme, je l’ai écrit il y a 2 ans et c’est la troisième année où il permet de tout faire en vingt minutes. Oui, l’an dernier il y a eu un raté de communication.
Imaginez vous le temps perdu par une saisie manuelle ? Trois fois trois jours contre une heure d’investissement il y a 2 ans puis trois fois vingt minutes… Certes, si vous apprenez en même temps, le temps de création du programme sera plus long, mais cet apprentissage est un investissement qui vous servira pour autre chose.
Et évidemment, dans le cas de l’automatisation, on évite les erreurs de saisie (même avec des copier/coller, avec ce volume, il y a des erreurs).
Ah mais à propos des erreurs de saisie… Pour créer le fichier qui nous est envoyé, quelqu’un au sein de l’établissement a saisi les informations à la main à partir de formulaires papier. Vous vous doutez qu’il y a des erreurs (aussi bien lecture que frappe). Si elles sont corrigées, l’établissement nous envoie un nouveau fichier…
Comment identifier les différences ? Les linuxiens me répondront « diff » mais bon, eux n’ont pas besoin d’être convaincus. Pour les moldus, je vous laisse vous représenter la tâche à faire à la main.
Avec mon script, nous ne nous posons pas de question : nous effaçons les contacts et nous les importons à nouveau.
Des informations plus riches
Autre avantage : si nous automatisons la création des contacts, nous n’avons plus à nous limiter à 3 informations. J’en ai donc profité pour ajouter d’autres informations que j’ai jugé utiles :
- Nom et prénom de l’enfant dans les champs enfant des contacts
- Note du types « mère de Harry Potter » (oui je sais qu’il est orphelin) car j’ai les informations de relation.
Je me suis ravisé d’indiquer quel est l’autre parent puisque je ne connais pas leur relation. Si nous voulons contacter les parents d’un enfant, il suffit de faire une recherche par son nom puisqu’il est indiqué dans les fiches des parents.
Petit bonus. Cette automatisation du parcours du fichier permet d’avoir également une synthèse des coordonnées que nous n’avons pas. Soit parce que les parents n’ont pas souhaité les partager soit parce que les parents n’ont pas de mail.
Autre petit bonus : puisque le script parcourt la liste des élèves par classes, j’en profite pour générer des fichiers texte uniquement avec les noms des élèves afin de préparer les notes des conseils de classe.
Existe-t-il des outils qui font déjà ce traitement ?
Tout dépends de la complexité des données, des transformations et ce que nous voulons comme résultat. Ce qui fait que la réponse est en général… Non…
C’est un constat fréquent. Comme je l’ai écris en introduction, c’est la raison pour laquelle il y a une telle demande de formations sur le langage Python : beaucoup de métiers ont des petits besoins d’automatisation pour lesquels il n’existe pas d’outil. Et si ils existent, il faudra mettre la main à la pâte pour les adapter. Dans notre cas, le format de fichier d’entrée et de sortie peuvent être très variables.
Comment apprendre ?
C’est là où malheureusement, ça se complique. Il y a assez peu de formations accessibles. Je ne vais évidemment pas vous diriger vers les formations hors de prix. Et pour des tutos accessibles, ce n’est pas forcément évident, surtout en Français.
Et, là c’est la partie auto-promotion…
Sur ce blog, j’essaye déjà de sensibiliser à la nécessité d’apprendre à programmer. Je vais essayer cette année de proposer des articles plus didactiques expliquant des bases. Mais l’apprentissage, c’est aussi beaucoup de travail personnel avec de la pratique qui va vous conduire à vous demander comment faire un truc et rechercher sur le web.
Créez, partagez, adaptez
Si il y a de la théorie et des principes, le code et la programmation s’apprennent en observant comment d’autres ont fait. Un code peut être partagé, utilisé par d’autres, adapté et peut-être amélioré. C’est comme ça que le monde Open Source fonctionne et a fait progresser l’informatique.
Et c’est ce que je fais avec le code pour ma transformation de données issues du collège. Celui-ci est disponible sur mon GitHub. Ce n’est pas tout à fait la version que je vous ai décrite ici car j’ai évidemment refait une partie pour qu’il soit plus générique. Il permet en tout cas (dans sa version de fin septembre 2023) d’extraire les informations dans des fichiers csv compatibles Gmail. Mais vous aurez certainement à adapter la lecture qui se trouve dans basic_parser.py
.
En conclusion
Connaitre le code fait gagner du temps
À propos de... Darko Stankovski
iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.