Découverte :
Software Carpentry ou la transmission de bonnes pratiques en informatique

Avec l’augmentation de la capacité des ordinateurs et de la qualité des algorithmes, l’informatique prend une place de plus en plus importante dans la vie de tous les jours, mais aussi dans la recherche. Cela est rendu aussi possible grâce à la programmation et aux améliorations des languages, des outils et des pratiques. Les développeurs sont devenus plus productifs.

Mais l’impact sur les scientifiques est plus mitigé. En effet, la production de nouveaux résultats est ralentie par le temps nécessaire pour écrire, tester, débugger, installer et maintenir des logiciels. Et la plupart des scientifiques n’ont jamais appris comment faire cela efficacement. Ils peuvent avoir suivi des cours généraux d’introduction à la programmation ou aux statistiques. Mais ils n’ont que rarement entendu parler de gestionnaire de version, ou comment transformer les dernières commandes exécutées en un script réutilisable. Ils passent ainsi des heures à faire des choses qui peuvent être faites en quelques minutes, avec une reproductibilité quasi-nulle. Ou pire, ils ne le font pas car ils ne savent pas par où commencer.

Vous vous retrouvez dans cette description, et vous voulez changer vos pratiques pour faciliter et améliorer votre recherche? Vous travaillez avec des scientifiques dans ce cas là et qui veulent changer? Software Carpentry pourrait vous aider.

Software Carpentry

Software Carpentry est une organisation bénévole fondée en 1998. Son but est de rendre les scientifiques plus productifs et d'améliorer la reproductibilité de leur travail en leur apprenant des compétences basiques en programmation, comme:

  • Les bases de la programmation structurée en Python ou R
  • Le contrôle de version avec git
  • L’automatisation de tâches avec Unix shell

 

Nombre cumulatif de scientifiques formés par Software Carpentry [1]

Le contenu des cours est orienté vers les chercheurs avec une pédagogie adaptée et vraiment réfléchie. Le but est donc de promouvoir l’autonomisation mais aussi la reproductibilité en recherche, en leur faisant adopter des techniques et des outils standards dans l’industrie du logiciel.

Ces cours sont gérés selon le principe de l’open access. Ils sont donc libres et consultables par n’importe qui. Mais, la base de l’enseignement repose sur l’organisation de workshops courts et intensifs, animés par des formateurs “assermentés” bénévoles, partout dans le monde. Tout laboratoire ou université peut organiser un workshop.

A quoi ressemble un workshop "standard" sur deux jours?

  • Matin du premier jour : Unix shell, avec présentation d’une douzaine de commandes basiques. L’objectif est d’introduire l’idée de combiner des outils simples (via pipes, boucle, filtre,…)
  • Après-midi du premier jour : programmation en Python (ou parfois R) pour montrer quand, pourquoi et comment construire des programmes étape par étape en fonctions compréhensibles, réutilisables et testables
  • Matin du second jour : gestionnaire de version comme git en insistant sur l'importance de l'utiliser, plutôt que créer des répertoires nommés “final”, “really_final” et pour collaborer de façon plus efficace
  • Après-midi du second jour : approfondissement du langage de programmation ou introduction aux bases de données et à SQL

Les workshops sont basés sur la pratique par les élèves pour faire passer des concepts plus larges, malgré des temps réduits. Le succès des workshops vient aussi de plusieurs techniques mises en place : boucle de réactions (en temps réel pendant le workshop, mais aussi avant et après), live-coding, ouverture sur tout (succès, échec, contenu des cours, ...), développement collaboratif des cours, utilisation quotidienne par les formateurs de ce qui est enseigné, prise de note collaborative, programmation par paire,...

Trouvant la philosophie intéressante, j’ai voulu organiser un workshop au sein de mon laboratoire (à Clermont-Ferrand), de préférence en français. J’ai donc regardé quels étaient les  formateurs “assermentés” possibles. Ils sont nombreux aux États Unis, au Canada et en Angleterre. Mais en France (il y a un an), il n'y en avait que 3 : 2 à Paris et 1 à Lyon, compliquant l’organisation d’un workshop dans mon laboratoire. Devant le manque de formateurs sur le territoire français. j’ai alors voulu rejoindre cette organisation.

Devenir formateur

En juin dernier, je me suis donc inscrite. La formation a démarré en octobre, pour 12 semaines. Elle ne portait pas tant sur le contenu des workshops. C’est plutôt une introduction à la recherche moderne pour l’éducation et les pratiques d’enseignement.

Comment s’est déroulée la formation?

Durant 12 semaines, j’avais une heure de cours à suivre chaque semaine et ensuite des “devoirs” à réaliser pour la semaine suivante. Les cours étaient en anglais et se faisaient à distance. Etherpad était utilisé pour la prise de notes collaboratives et pour poser des questions au formateur. Les devoirs étaient soumis via Piazza. Et pour favoriser les échanges et avoir des visions différentes, les devoirs étaient commentés par tous. Certains devoirs reposaient aussi sur des simulations de cours avec du live-coding à distance (via Hangout). Cet exercice, particulièrement difficile, est très formateur.

L’obtention de la certification (un des buts de la formation) passait par une phase d’évaluation. D’abord, par les devoirs, pas directement (pas de notes), mais par la régularité et le sérieux. L’évaluation principale reposait sur la préparation d’une des leçons (3h) proposées par Software Carpentry dans les workshops, la proposition d’un exercice pour cette leçon et la restitution (en anglais) de 5 minutes de cette leçon devant un formateur expérimenté. Avec un peu de préparation, ce n’était pas si compliqué. L’évaluation ne donne pas lieu à notation mais sert surtout à estimer si la philosophie de Software Carpentry et de l’enseignement est assimilée.

Ainsi, la formation m’a initiée aux bases de la psychologie de l’éducation, à la conception de contenu éducatif (QCM, concept map, …) et l'application à l'enseignement la programmation. Des choses essentielles pour toute personne vouée à enseigner l’informatique, mais qui ne sont pas transmises aux nouveaux enseignants. Ca a été aussi l’occasion de m’initier à des outils comme les notebooks Jupyter, la prise de notes collaborative avec Etherpad, …

J’ai ainsi obtenu la certification. Je fais maintenant parti des quelques formateurs français.

Pour l’instant, je n’ai pas eu l’occasion de participer à un workshop. Mais j’ai pu appliquer et vérifier l'impact des concepts et des outils acquis durant la formation. En effet, j'enseigne depuis deux ans (donc avant et après la formation) à l'IUT de bioinformatique d’Aurillac. Cette année, j'ai mis en place des cours QCM régulièrement pendant les cours (comme recommandé). Ces QCM permettent de maintenir l'attention des étudiants, de les amener à réfléchir d'avantage sur le contenu du cours mais aussi de vérifier en temps réel l'acquisition des notions abordées. J'ai aussi mis en place du live-coding, en me basant sur des notebooks Jupyter. Les retours des étudiants ont été globalement positifs et j'ai pris beaucoup plus de plaisir que l'année précédente à enseigner.

Conclusion

Software Carpentry est un programme (très intéressant) pour apprendre aux chercheurs du monde entier les compétences techniques nécessaires pour améliorer leur travail et leur permettre de faire plus en moins de temps et plus facilement.

Apprendre à devenir formateur pour l'association Software Carpentry a été pour moi une expérience très intéressante et enrichissante. Je ne peux que vous encourager à la suivre à votre tour. Pourquoi?

  • Pour optimiser le travail des scientifiques en leur transmettant de bonnes pratiques d'usage de l'informatique
  • Pour améliorer votre réseau (pendant les workshops)
  • Pour apprendre de nouvelles choses, surtout en pédagogie
  • Pour enseigner et devenir un super enseignant
  • Pour favoriser la diversité et l'origine des formateurs
  • Pour le fun

Pour ceux que ne se sentent pas l’âme d’enseigner, améliorez le monde de la recherche et la vie de vos collaborateurs/coworkers : organisez des workshops Software Carpentry!

 

Je remercie Fabrice, Estel et Bunny pour la relecture et leurs commentaires

 

[1] Wilson G. Software Carpentry: lessons learned. F1000Research 2016, 3:62 (doi: 10.12688/f1000research.3-62.v2)

  • À propos de
  • Je suis en post-doc à Freiburg, après un premier post-doc sur le traitement des données liées aux microbiotes à Clermont-Ferrand. Ma thèse en évolution bactérienne était à l'interface entre biologie computationnelle (évolution artificielle) et bioinformatique (génomique comparative). Mais, avant tout ça, j'ai suivi la formation d'ingénieur en Bioinformatique et Modélisation (BIM à l'INSA de Lyon) et un master d'Informatique Fondamentale (option Modélisation des systèmes complexes à l'ENS de Lyon). Je m'intéresse à ce qui tourne autour de l'open science, l'open source, la communication scientifique, la science des données et de nombreux autres sujets. Compte Twitter : @bebatut

3 commentaires sur “Software Carpentry ou la transmission de bonnes pratiques en informatique

  1. Bonjour

    Ton artuicle est interessant. Ce serait bien que les nouveaux enseignants apprennent cette technique afin que les eleves ou etudiants puissent avoir plus de plaisir a apprendre. Car il y a vraiment certains enseignants qui ne doivent pas enseigner, vu que leur enseignement est ennuyant et donne envie de dormir.
    Encore une fois merci de partager ton expereince sur ce site 😀

  2. Bonjour. Il faut comprendre que la conception de logiciel n\'est pas le coeur de métier des scientifiques. Ils ont plutôt pour coutume de déléguer cette tâche à des prestataires externes.

    • C\'est loin d\'être le cas pour un aspect majeur du métier de chercheur usant de l\'informatique : produire et distribuer un code «preuve de concept» ayant permis la rédaction d\'un article.

      Oui, dans un monde parfait, chaque chercheur est en contact avec une équipe de purs informaticiens, qui se plient en quatre pour implémenter, documenter, distribuer et maintenir «cette nouvelle idée qui devrait résoudre ce problème».

      En vrai, le chercheur moyen a appris à coder tout seul ou dans une formation courte et expéditive.
      Le programme est écrit rapidement, car ce sont les résultats qui comptent.
      La portabilité ? La distribution ? La Doc ? Pas le temps, on a une publi à finir, figurez-vous !

      Cet article met en avant une initiative fort intéressante : étendre la formation des scientifiques de quelques heures, non pas pour leur apprendre uniquement les bases obscures d\'un énième outil ou paradigme,
      mais surtout pour introduire des notions de base en gestion de projet, et présenter des outils pour les encourager à ne pas réinventer la roue.

      Tout le monde n\'a pas les moyens de faire appel à un informaticien pour gérer un bout de code de 1000 lignes écrites et débuggées quasiment d\'une seule traite.

      L\'objectif n\'est pas de peupler la recherche d\'une armée de concepteur logiciel chevronnés,
      mais de minimiser la dette technique en attendant une prochaine génération,
      correctement éduquée à propos des problèmes informatiques.

      Autrement dit, sauver les meubles en attendant les secours.

      Personnellement, j\'ai bien envie de regarder du côté de la formation,
      ça me semble être vachement rigolo, et si ça peut permettre l\'organisation d\'un workshop…
      Je signe !

Laisser un commentaire