Etude sur l’agilité d’un projet de start-up d’état

Etude sur l’agilité d’un projet de start-up d’état

Février 2018

Auteurs

Nous sommes quatre étudiants en dernière année à Polytech Nice-Sophia Antipolis, spécialisés en Architecture Logicielle.

I. Contexte de recherche

Cette étude à été réalisé dans le cadre du module RIMEL. Nous avons décidé de travailler sur la rétro ingénierie d’un projet agile car de nos jours, tous les projets en entreprise tendent à utiliser cette méthodologie, qui est devenu incontournable. Il se trouve que nous utilisons tous plus ou moins les principes agiles en entreprise (stage ou alternance) bien que nos projets ne s’y prêtent pas tout le temps.

Par exemple, l’un d’entre nous travaille sur la réécriture d’un projet déjà existant, afin d’adopter une architecture plus adaptée au problème. Aussi, pour l’un d’entre nous, les lignes directrices du projet sont spécifiés par des autorités (CNDA - Centre National de Dépot et d’Agrément), ce qui oblige à respecter de nombreux cas de tests (+1000) avant de faire une release, ce qui empêche de faire un MVP, de le livrer et d’itérer autours pour apporter des améliorations aux utilisateurs.

Nous avons donc voulu voir comment fonctionnait un projet agile (en l’occurence PIX : https://github.com/betagouv/pix) qui se revendique comme tel, et qui est financé par l’état, ce qui devrait entraîner un certain niveau d’exigence et de perfection.

II. Observations et question générale

Malgré le fait que ce projet soit financé par l’état comme startup suivant les principes de l’agilité, nous avons assez rapidement repéré des anomalies. En effet, certains principes de cette méthodologies ne sont pas toujours respectés.

Nous avons donc orienté notre étude sur la question suivante:

L’agilité d’une start-up d’état : Réalité ou illusion ?

Pour affirmer cela, nous aimerions avoir un indicateur d’agilité, nous permettant de quantifier l’agilité d’un projet. Néanmoins, en commençant le projet, nous ne savions pas quoi mesurer ni comment regrouper toutes les mesures.

III. Rassemblement d’informations

A - Recherche d’indicateurs

Nous avons donc commencé par regrouper un certains nombre d’indicateurs ressortis de brainstormings. Deux catégories d’indicateurs sont ressorties:

Cependant, après avoir contacté l’équipe PIX, nous n’avons pas pu avoir accès à certains de ces indicateurs, comme par exemple leur outil de ticketing (Jira) pour des raisons de confidentialité. En effet, cet outil permet de mettre en exergue la quantité et les conditions de travail, ce qui peut poser des problèmes quand on est une start-up financé par l’état. Nous n’avons pas non plus pu en savoir beaucoup plus sur leur cérémonies agiles. Nous avons donc du nous concentrer majoritairement sur des indicateurs techniques issus de ce que nous avions, à savoir le repository git.

B - Collecte d’informations

Avant d’attaquer l’étude des indicateurs, nous avons voulu situer chronologiquement le projet, afin de faire la correspondance entre certains événements et l’évolutions des indicateurs. En voici la timeline:

Nous nous sommes donc concentrés sur les indicateurs suivants:

IV. Hypothèses et expériences

Nous avons donc voulu, à partir des critères d’agilités que nous avons déterminés dans la partie précédente, obtenir un indice d’agilité permettant de dire à quel point un projet est agile.

Nous voulions donc avoir un indice allant de 1 à 100. Pour cela, nous avons ramené chacun de nos critères d’agilité en une valeur allant de 1 à 100 et avons donné des coefficients à chacun d’entre eux en fonction de leur importance pour obtenir une moyenne étant notre indice. Voici le détail:

Critère d’agilité Coefficient Méthode de calcul
% Commit bien formaté 4 Si tag et rattaché à une tache
% Commit dans la langue principale 1 La langue principale est la langue la + représentée
% Couverture de test moyenne 4 Si > 95% on passe à 100%
% Build passe 4 Sur chaque commit
Dette technique 3 100 - Nombre de jours (> 0)
% Pertinence des tests 5 Estimé par l’architecte / Tech lead
Outillage 6 (Sans outillage on navigue à l’aveugle et il est impossible de s’assurer du reste) On gagne des % par outil: - Couverture de test (20%) - CircleCI ou autre (20%) - Dette Technique (20%) - Ticketage (40%)
Release 4 Si >= 2/mois 100%, si 1/mois 50%, sinon 0%. -1% pour chaque jour où il y a plus d’une release.

Evidemment, ces coefficients ont été définis selon notre expérience personnelle, et ce que nous avons pu observer durant cette étude. Ils sont donc sujets à éventuelle modification après concertation auprès d’un plus grand nombre d’intervenants.

V. Analyse des résultats et conclusion

Nous avons donc calculé l’indice d’agilité de pix :

Critère d’agilité Coefficient Score*
%Commit bien formaté 4 82
%Commit dans la langue principale 1 72
% Couverture de test moyenne 4 100
% Build passe 4 92
Dette technique 3 76
% Pertinence des tests 5 80
Outillage 6 100
Release 4 95
  TOTAL 88.75 / 100

*: Arrondi à l’unité

L’indice d’agilité de PIX est donc de 88.75. Ce score représente le respect de l’agilité sur le plan technique et non humain comme expliqué précédemment (III-A). Pix respecte globalement les principes clés de l’agilité. Avec des releases fréquentes, une gestion très bonne de leur repository et un code résilient (Testé et buildé à chaque commit), le tout renforcé par des outils permettant d’apporter une visibilité sur le projet.

Malgré tout, PIX n’obtient pas un score de 100. Cela s’explique par le fait que l’agilité est un idéal qui est quasiment inatteignable sans que cela coûte un temps élevé en création de taches atomiques ou en réduction au maximum de la dette technique par exemple.

VI. Références

Pix :

https://github.com/betagouv/pix

https://pix.beta.gouv.fr/

https://beta.gouv.fr/startup/pix.html

Articles:

Méthode Agile: Controverses et reflexions : http://www.entreprise-agile.com/AgileControverses.pdf

Agile Software Development : http://users.jyu.fi/~mieijala/kandimateriaali/Agile software development.pdf

The Evolution of Technical Debt in the Apache Ecosystem : http://www.cs.rug.nl/~paris/papers/ECSA17a.pdf