Convaincre ses collègues d’utiliser Git

J’utilise Git au boulot depuis maintenant un peu plus de deux ans. C’est assez récent, on ne peut pas dire qu’on est des early adopter, historiquement on utilisait SVN puis un jour un développeur a installé un serveur Gitlab (pour faire simple un Github-like que l’on peut héberger sur sa propre infrastructure), petit à petit certaines équipes de la boite ont commencé à l’utiliser et à “évangéliser” les autres vers ce formidable outil.

Rétrospectivement, je pense qu’au cours de ces dix premières années de carrière en tant que développeur, l’outil qui a le plus transformé ma façon de travailler n’est pas un langage ou un framework, encore moins un IDE mais bien Git.

Ces dernières semaines j’ai changé de projet, ma nouvelle équipe utilise encore SVN. Evidemment effectuer un retour arrière vers un outil comme SVN quand on a utilisé Git (et Gitlab) me paraît être une chose impossible : je me suis mis en tête de progressivement les convaincre de passer sous Git.

Je précise tout de suite, l’idée n’est pas d’imposer un changement immédiat à toute l’équipe, je n’en ai ni l’envie ni le droit (je ne suis pas leur chef), simplement d’éveiller leur curiosité envers l’outil et faire en sorte que lors du démarrage de leur prochain projet ils se posent la question d’utiliser Git ou bien de continuer à utiliser SVN.

Deux types de réactions

Je sais d’avance que la tâche sera ardue : inciter quelqu’un à passer d’un outil à l’autre alors qu’il pense être tout a fait efficace avec le premier c’est lui demander de sortir de sa zone de confort. Pour résumer il y a eu deux types de réactions dans l’open space :

Les développeurs curieux (une qualité indispensable dans notre métier) étaient enthousiastes à l’idée d’essayer un nouvel outil, d’autant plus qu’ils en entendent parler sans cesse sur le Web et à la machine à café.

Les développeurs réticents se protégeaient de la façon suivante : “SVN ça marche bien depuis longtemps pour nous et puis de toute façon ça apporte quoi en plus Git ?”

Trouver les arguments

Manque de chance pour moi, je ne me rappelle plus des arguments qu’ont avancés ceux qui m’ont incités à essayer Git. Je pense que j’y suis allé principalement parce que je savais que ne pas utiliser Git représentait un retard qu’il fallait songer à rattraper et parce que l’interface Web de Gitlab m’a parue franchement bien foutue et filait un sacré coup de vieux à mon bon vieux client SVN (TortoiseSVN).

… Cela ne serait pas suffisant pour eux. J’ai laissé passé plusieurs jours et j’ai fini par trouver un “angle d’attaque”, je vous le présente, il est certainement imparfait, incomplet mais il vous permettra peut être vous aussi à convaincre les plus récalcitrants.

Je leur ai posé quelques questions dans l’open-space :

Question 1 : a quoi sert une branche dans un SCM ?

J’ai eu des réponses satisfaisantes du type :

  • Cela permet de maintenir plusieurs versions applicatives en parallèle.
  • Cela permet à chacun de travailler en isolation, de ne pas être perturbé par les travaux en cours (parfois non terminés) des autres membres de l’équipe.

Question 2 : OK, donc c’est une bonne pratique d’utiliser les branche ?

Là encore, ils sont tous d’accord pour dire que oui, c’est une bonne pratique de faire des branches. J’appuis encore un peu sur ce point en ajoutant : On a envie de travailler en isolation tout le temps sur un projet n’est-ce pas, on doit théoriquement en faire très souvent, combien de branche créez-vous par jour ? par semaine ? Evidemment à ce moment là tout le monde regarde ses pieds (pour assurer le coup j’avais préalablement regardé dans le repository SVN de l’équipe et constaté que même les projets les plus conséquents ne comportaient pas plus de 3 ou 4 branches).

Question 3 :

Si tout le monde s’accorde sur le fait qu’utiliser les branches c’est très utiles pourquoi ne les utilisez-vous presque jamais ? Je connais la réponse : parce que merger des branche (sous SVN) c’est compliqué, c’est là que Git apporte un réel avantage, elles sont partie intégrante du travail quotidien.

Whereas SVN branches are only used to capture the occasional large-scale development effort, Git branches are an integral part of your everyday workflow (Using Branches by Atlassian)

J’ajoute à cela une petite démo du Gitlab corporate, en particulier un exemple de Merge Request (une fonctionnalité qui permet de merger très simplement deux branches depuis l’interface web) et le tour semble joué. Depuis, plusieurs membres de l’équipe m’ont demandé de leur ajouter un compte sur Gitlab.

Il faudra attendre encore quelques temps pour savoir s’il vont abandonner progressivement SVN mais je pense avoir suscité chez eux la curiosité nécessaire pour tester Git, reste à voir si leurs premiers pas seront concluants et leur donneront envie de l’utiliser au quotidien.