Outils de programmation par paire (pair-programming)

Ce petit article liste quelques outils qu’un groupe (d’au moins deux personnes) peuvent utiliser pour travailler en collaboration sur du code et faire de la programmation par pair (pair-programming) efficacement.

Contexte : cet article est écrit dans le but d’être utile aux élèves de 1ère année de licence de mathématiques et d’informatique, en 2020, à l’Université de Rennes 1, pour le cours INF1. Mais ces conseils peuvent être utiles à n’importe qui.

1) Approche basique : pour les débutants et débutantes

Pour collaborer avec votre binôme sur du code (Java ou autre), ou des documents (Microsoft Word ou LibreOffice ou OpenOffice), l’approche suivante fonctionne bien :

  • échangez votre fichier avec votre binôme par mail, Facebook Messenger, WhatsApp ou autre logiciel. Vous pouvez aussi utiliser un dossier partagé, par exemple sur Google Drive, ou un service gratuit comme Dropbox,

  • appelez vous régulièrement, par téléphone, ou par Facebook Messenger, WhatsApp, ou un autre logiciel de visio-conférence comme Skype, ou un logiciel en ligne comme Meet JitSi, FramaCall etc,

  • au téléphone, travaillez à deux, avec une personne qui travaille sur Eclipse (pour du code Java) ou un autre logiciel (par exemple Word),

  • vous verrez vite que c’est très limité de n’avoir que la voix pour travailler, et la personne qui n’a pas l’ordinateur aura du mal à suivre le travail de l’autre ! C’est pourquoi il sera préférable d’utiliser un logiciel web permettant de partager votre écran, comme les outils listés précédemment.

C’est simple mais un peu limité…

  • Avantages ? Vous serez rapidement capable de collaborer, mais il n’y aura qu’une seule personne en train d’écrire dans le fichier.

  • Inconvénients ? Besoin d’installer Java sur votre machine personnelle, besoin d’avoir un ordinateur, pas besoin d’installer un plugin supplémentaire dans Eclipse ou un logiciel supplémentaire.

2) Approche plus avancée : pour les curieuses et curieux

2.a) Avec REPL.it

Nous vous recommandons d’utiliser l’outil REPL.it, pour écrire, exécuter, tester votre code Java (ou autres langages, Python notamment est supporté, et plein d’autres), directement dans une page web, partagée avec votre binôme.

  • Chaque membre du binôme crée un compte sur REPL.it (avec un mail, ou votre compte Google ou Facebook). C’est gratuit et rapide.

  • Créez UNE équipe par binôme, donnez lui un nom respectant les règles bien précises : que des lettres a-z et des chiffres 0-9 et pas d’espace ni aucun autre symbole. Par exemple inf1ur120XXXX avec XXXXX un grand nombre à 5 chiffres.

  • Par exemple, cela ressemblera à cette équipe.

  • Vous pouvez ensuite créer un nouveau « REPL » dans l’équipe, par exemple comme celui-ci.

  • Vous devriez désormais être capables de collaborer sur ce fichier, et chacun devrait pouvoir écrire du code dans le même fichier, l’exécuter (i.e., compiler avec javac, et exécuter le résultat de la compilation avec java) et voir le résultat dans la fenêtre du terminal à droite.

  • Avantages ? Pas besoin d’installer Java sur votre machine personnelle, pas besoin d’avoir un ordinateur.

  • Inconvénients ? C’est des fois un peu lent…

Note

Si vous voulez écrire du code Java et l’exécuter en ligne, vous pouvez aussi utiliser le très bon outil Python Tutor, qui propose un mode Java (version 8) : PythonTutor.com/java.html.

2.b) Avec Saros intégré dans Eclipse

Le logiciel libre et gratuit Saros fonctionne pour IntelliJ ou Eclipse, donc c’est une bonne solution pour les fans de Java.

  • Regardez la documentation qui explique comment installer Saros dans Eclipse,

  • Utilisez Saros pour collaborer avec votre binôme, directement dans Eclipse, sans avoir besoin de faire de partage d’écrans !

  • Mais il sera quand même utile que vous utilisiez un des logiciels listés plus haut, pour appeler votre binôme, afin de pouvoir facilement discuter en direct.

  • Avantages ? Vous serez très rapidement capable de collaborer à deux personnes sur le même fichier.

  • Inconvénients ? Besoin d’installer Java sur votre machine personnelle, besoin d’avoir un ordinateur, besoin d’installer un plugin supplémentaire dans Eclipse.

3) Approche encore plus avancée : pour les expert-e-s !

3.a) Avec un dépôt Git

Vous pouvez utiliser Git directement dans REPL.it !

Vous pouvez aussi choisir l’approche suivante :

  • Vous pouvez apprendre à utiliser les commandes de base du logiciel de gestion de version Git (j’ai écrit un tutoriel ici, il y en a un autre assez concis ici, un autre très bien ici et d’autres ressources listées ici),

  • Puis chaque membre du binôme crée un compte sur un site web qui propose d’héberger des dépôts Git. Le plus populaire est GitHub, il y a aussi GitLab.com, BitBucket. Créez un compte avec votre adresse email favorite. Mais l’ISTIC à l’Université Rennes 1 propose aussi un site vous permettant de faire ça, avec votre compte étudiant : GitLab de l’ISTIC

  • Créez un dépôt git pour votre projet (ou vos TP), invitez votre binôme à collaborer sur le projet,

  • Puis utilisez Eclipse (ou votre éditeur de code favori, moi j’aime bien Visual Studio Code), sur votre machine personnelle, pour écrire votre code, et faites de nouveaux commits de temps en temps (régulièrement) pour sauvegarder votre code, et synchroniser le avec le dépôt git (typiquement, vous aurez à taper des commandes qui ressemblent à ça, git add *.java, git commit -m "message de commit", git push, dans un terminal).

  • Utilisez git n’empêche pas de s’appeler et de travailler à deux, avec une personne écrivant son code dans Eclipse (ou autre), partageant son écran.

  • Vous pouvez aussi utiliser Git directement dans l’interface de votre éditeur de code favori (Visual Studio Code, Sublime Text, Atom, Emacs ou Vim, tous proposent des plugins pour intégrer git dans l’éditeur), ou utilisez une interface graphique pour git (par exemple gitk, ou Git Kraken qui marche très bien).

3.b) Avec d’autres approches

Note

Si vous avez d’autres idées, d’autres façons de collaborer sur du code, n’hésitez pas à m’écrire un mail (ou autre solution pour me contacter, cf cette page là), et j’ajouterai ici ces conseils !


Avertissement

Je n’ai pas utilisé tous ces outils, je n’ai pas eu beaucoup d’occasion de faire du pair-programming moi-même…

Des EDI en ligne (online IDE)

  • REPL.it semble très puissant, supporte plein de langages, et un mode « multi-joueurs », pour collaborer sur un code à plusieurs (maximum 10 personnes en même temps avec l’offre gratuite). C’est vraiment l’outil que je recommande !

  • PythonTutor fonctionne pour Python 2 et 3, JavaScript et Java, et il est génial, je m’en sers pour mes enseignements (mais il ne fonctionne que pour un seul petit fichier à la fois). C’est vraiment un bon outil, qui aide à comprendre la portée des variables, les pointeurs pour les tableaux etc car en plus de montrer la sortie du terminal, il visualise les objets créés par le code.

  • CodeAnyWhere est l’un des plus populaires et complets,

  • Cloud9 est générique et puissant.

Plugins pour EDI (IDE)

Il y a aussi évidemment des solutions spécifiques à des IDE :

Outils génériques

  • Use Together est gratuit dans sa version simple, semble supporter toute application et pas juste quelques IDE,

  • Team Viewer fait un peu pareil,

  • CodeShare semble pas trop mal non plus !

Des solutions spécifiques à des OS


Références

Ici je donne quelques liens vers des articles en ligne que j’ai consultées pour écrire cette page :