Diffuser la culture de la reproductibilité par une formation aux bonnes pratiques

De la qualité d’un projet aux pipelines de données

Introduction

Contexte


  • L’INSEE se désengage de son patrimoine en SAS depuis plusieurs années
  • Volonté institutionnelle d’utiliser Git pour les projets statistiques
  • Beaucoup de formations internes d’introduction à


Important

Une transition réussie à R nécessite de se préoccuper de la qualité du code produit :

  • Besoin de formations à tous les niveaux
  • Besoin d’accompagnement

Enjeux


  • Faible sensibilisation à la question de la qualité du code :
    • lors de la formation initiale ;
    • lors des formations d’initiation à ou
  • Risque de créer de la dette technique sans une transition contrôlée
  • Besoins et niveaux très hétérogènes dans l’institut:
    • Transition parfois difficile de SAS à R ;
    • Pas les mêmes besoins selon les niveaux hiérarchiques.

Pourquoi former aux bonnes pratiques ?


  • Il est utile de former aux bonnes pratiques:
    • Temps investi faible par rapport à de l’apprentissage sur le tas ;
    • Pour des gains sensibles de qualité
  • Il est utile de sensibiliser aux bonnes pratiques à tous les niveaux :
    • Effets de mimétisme ;
    • Communauté interne utile pour debugger…

Un point d’accès centralisé

Sommaire

  • 1️⃣ Objectifs pédagogiques
  • 2️⃣ Contenu du parcours
  • 3️⃣ Retour d’expérience

1️⃣ Objectifs pédagogiques

Enjeux (1/2)



  • Abandonner la vision utilitariste du code:
    • Code est un moyen de communication: le “code est plus souvent lu qu’écrit” (Guido Van Rossum)
  • La maintenance d’un code est très coûteuse
  • Traitements statistiques se doivent d’être transparents et reproductibles

Définition des bonnes pratiques

Un ensemble de règles informelles, conventionnellement acceptées comme produisant des projets fiables, évolutifs et maintenables

Enjeux (2/2)


  • Mais ⚠️ une reproductibilité parfaite est coûteuse
  • Git est un standard atteignable et efficient
  • Un socle minimal est attendu pour tout projet
    • Puis un curseur à placer plus loin en fonction des projets

Note

Par exemple, on insiste plutôt sur la modularisation que la packagisation car le package n’est pas pertinent pour tout.

Approche pédagogique


  • Un exemple fil rouge pour les applications
    • Cas classique: on hérite d’un code avec de nombreuses mauvaises pratiques
  • Amélioration graduelle de la qualité du projet
    • Après l’avoir rendu fonctionnel, on l’améliore progressivement

Exemple : exercice modularisation du projet

  1. Déplacer toutes les fonctions dans un fichier R/functions.R.
  2. Donner à la fonction fonction_de_stat_agregee un nom plus pertinent et des noms d’arguments plus transparents.
  3. Dans script.R, appeler en début de chaîne ces fonctions avec source("R/functions.R", encoding = "UTF-8").
  4. Documenter la fonction principale au format attendu par roxygen2.
  5. Ajouter les tests unitaires de la fonction comme exemples d’utilisation et les retirer de script.R.
  6. Tester le bon fonctionnement de script.R.

Exemple (suite)

  • Un système de checkpoint pour permettre à chacun d’aller à son rythme

2️⃣ Contenu du parcours

Des versions différentes selon le public

  • Socle minimal (1 jour de formation)
  • Version approfondie (2 jours):
  • Version manageurs (1/2 journée):
  • A venir: Sensibilisation pour débutants en R (1 heure)

Le socle minimal (formation 1 jour)

  • Concepts et pratique de Git & Gitlab sans l’aspect collaboratif
  • Qualité du script:
    • Nettoyer le code: linter et formaters
    • Privilégier l’autodocumentation du code
    • Modulariser son code avec des fonctions
  • Structure des projets:
    • Auto-documentation dans la structure de projet
    • Comprendre enjeux séparation stockage du code & des données

Eléments plus avancés (formation 2 jours)


  • Travail collaboratif avec Git & Gitlab: branches, pull request
  • Environnements reproductibles: renv
  • Pipelines de données avec targets
  • Publications reproductibles avec Quarto

Une approche complémentaire pour les manageurs


  • Formation pour sensibiliser les manageurs au sujet
  • Conseils sur l’utilisation de ces outils pour de la supervision
  • Convaincre que cette exigeance est aussi nécessaire pour les manageurs

3️⃣ Retour d’expérience

Concernant Git

  • Beaucoup de formations depuis 3 ans à Git:
    • Bonne communauté d’utilisateurs à l’INSEE pour aider
    • Ressources complémentaires depuis longtemps dans utilitR
  • Formation massive à Git collaboratif viendra plus tard
    • Besoin avant tout que tout le monde utilise systématiquement Git

Concernant R

  • Pragmatisme dans le programme choisi
  • Priorité: comprendre la logique R différente de celle de SAS
  • D’autres éléments (renv, targets…) sont plus de l’ordre de l’horizon vers lequel on veut converger