Themis engagement à la culture de la qualité
La qualité du code est un concept qui vous est certainement familier et qui bénéficie d’une certaine attention tout au long de vos projets. Vous collectez peut-être d’ailleurs des métriques sur votre code et utilisez également des linters pour maintenir un code uniforme et propre. Métriques, linter, code… je parle surtout de technique ici. Est-ce que cela suffit à gérer efficacement la qualité de vos développements ? Je pose cette question car chez ProMyze, nous avons constaté qu’avoir des outils c’est bien, mais que sans une utilisation concertée et structurée, la mayonnaise risque d’avoir du mal à prendre dans les processus de l’équipe. Conséquence ? La qualité devient un sujet cloisonné dans une suite d’outils (et à une ou deux personnes chargées de maintenir l’outil en vie). Il y a dans ce contexte un véritable travail sur l’engagement des équipes sur la qualité logicielle à faire. C’est un enjeu crucial et nous allons essayer de comprendre pourquoi, avant d’aborder les points à étudier pour démarrer efficacement.



L’engagement, c’est quoi au juste ? 

On parle d’engagement lorsqu’on cherche à motiver une communauté de personnes à passer à l’action et ce, de façon régulière. Par exemple, si vous concevez un site e-commerce, votre objectif est que vos visiteurs aillent jusqu’à la finalisation de la commande, et que plus tard ils reviennent à nouveau (on parle alors de fidélisation). Les contextes sont nombreux mais le schéma est toujours le même : la réussite d’un objectif fixé passe par l’engagement récurrent d’une communauté. Il faut alors identifier les leviers et mécanismes pour atteindre les non-engagé·e·s, et consolider les autres.

Cette question se pose également dans la gestion de la qualité logicielle. Pour que vos investissements soient fructueux, nous pensons qu’il faut aller au-delà de l’allocation de ressources à destination d’outils. Pour produire du code de qualité sur tous vos projets, il y a une réelle culture de la qualité à diffuser dans l’entreprise. Sensibiliser et impliquer les équipes de développement sur ces aspects feront passer le message que l’enjeu est prioritaire pour toute l’entreprise. Sans de telles actions il est probable que tout le monde se désintéresse progressivement du sujet. Ainsi, l’engagement crée une implication récurrente d’une communauté et se base sur deux concepts : des déclencheurs qui renforcent l’engagement, et une reconnaissance (récompense) qui la maintient.

L’engagement renforce le bien-être des collaborateur·trices, ce qui est essentiel pour de bonnes conditions de travail. Grâce à cette émulation fédératrice, vos équipes tireront certainement un meilleur parti des outils actuellement déployés qui sont dédiés à la qualité. Cela est également un bénéfice indirect dans la relation avec vos clients, que vous cherchez déjà à fidéliser. Avec un minimum de communication, vous pouvez rassurer ces derniers et démontrer le bien-fondé de votre démarche et l’intérêt pour eux (un suivi qualité permanent et une maîtrise des coûts de maintenance). Vous en profitez même pour renforcer votre attractivité pour des recrutements futurs. Si la recherche de l’excellence du développement fait partie de votre ADN, c’est idéal en termes d’images.

Quelles actions peut-on mettre en place ?

La volonté de fédérer vos collaborateurs et collaboratrices sur la qualité logicielle doit bien se faire sentir. Mais ensuite, quelles sont les premières actions (les premiers déclencheurs) qui vont pouvoir faire levier sur l’engagement recherché ? Je préconise personnellement des actions réparties sur 2 axes.

1. La gestion de la qualité au quotidien

Le socle indispensable de la démarche consiste à s’assurer que la qualité des développements est suivie, maîtrisée et dirigée par des objectifs. Chez ProMyze, nous préconisons souvent une gestion agile de la qualité. Cette gestion est cadencée par des itérations, des objectifs sont fixés, des tâches sont définies et attribuées aux équipes, et à la fin de chaque itération des cérémonies ont lieu. Prenant la forme de rétrospectives, elles permettent de ritualiser un temps d’échange dédié à la qualité en impliquant tout le monde. En complément, nous recommandons également la tenue de meetings hebdomadaires (à la suite d’un daily meeting par exemple) pour évaluer l’avancement des tâches en cours dédiées à la qualité.

Un autre exemple consiste à réunir l’équipe pour paramétrer les linters utilisés pour identifier les défauts dans le code. Qu’y fait-on précisément ? On regarde la configuration du linter et de l’ensemble des règles actuellement actives et inactives. Puis, on discute de la pertinence de certaines règles actuellement actives, et on statue pour savoir si on les garde ou non. Ces actions sont simples à mettre en place en apparence, mais révèlent une chose essentielle : on s’intéresse à la qualité. Comment faire passer le message aux équipes que “la qualité c’est important” si on ne s’accorde pas le temps d’en parler ?

2. L’animation de la communauté

En complément de ce socle, voici d’autres actions qui selon moi entretiennent une implication efficace et durable sur la qualité logicielle :

  • Présentation de langages/frameworks : Les tendances des langages et frameworks sont très changeantes d’une année à l’autre. Au moment où j’écris cet article, beaucoup de personnes préconisent le framework React pour écrire des applications Web, alors qu’il y a 3 ans on soutenait AngularJS. Bref, en tant que développeur, il est important de faire de la veille sur toutes ces nouveautés, afin de les prendre en compte notamment pour des projets futurs. Une session d’une heure de premiers pas en Go est un exemple. Une session mensuelle de ce type est vivement conseillée, et doit se faire sur la base du volontariat.
  • Présentation de méthodologies ou techniques de programmation : Les équipes IT sont souvent friantes de nouvelles méthodologies de travail : méthodes agiles, Pomodoro, Get Things Done… Les présenter et ensuite les expérimenter est toujours une idée pertinente car cela amène de la nouveauté et démontre qu’on cherche toujours à s’améliorer en continu dans notre façon de travailler. La même chose est valable pour des techniques de programmation tels que TDD ou BDD. Cela peut même être le partage d’un livre ou d’un article lu par une personne de l’équipe.
  • Revue de code : Si vous êtes familiers des outils comme Github, Gitlab ou encore Bitbucket, vous connaissez les concepts de pull request et donc de revue de code. Dans tous les cas, organiser régulièrement des revues de code avec une rotation des relecteurs permet d’une part de renforcer l’uniformisation des bonnes pratiques, mais aussi de suggérer des pistes d’amélioration du code existant. Et cela renforce en plus la propriété collective du code.
  • Coding Dojo : Il s’agit de défis de programmation à réaliser de façon collective. Le but est d’apprendre ensemble des techniques de programmation, utilisées ici pour atteindre un objectif. Le but n’étant pas tellement de réaliser le défi mais plutôt d’apprendre à travers le défi. La motivation et l’envie d’apprendre sont donc primordiales. Chacun.e amène sa machine et tout le monde participe ! Je vous invite à consulter ce lien du ChtiJUG pour plus de détails sur l’organisation et les formats existants.
  • Meetups : Plateforme de réseautage social, Meetup permet à des membres de se regrouper pour partager des intérêts communs sur des sujets divers et variés. Il en existe un certain nombre liés au développement logiciel et ils se spécialisent généralement dans un langage, une technologie, ou encore une base de données. En fonction de vos équipes et votre cœur de métier, il serait pertinent de les rejoindre et d’assister aux sessions régulièrement organisées, voire d’en accueillir ponctuellement (toujours un plus en termes d’image !). Et enfin d’en faire un retour d’expérience aux personnes qui n’ont pu être présentes.

L’essentiel est surtout d’inculquer une démarche collective, un état d’esprit basé sur la curiosité et le partage. Et quelques soient les actions que vous adoptez, elles doivent être en adéquation avec cet état d’esprit.

Autre point, mais pas des moindres, il est important d’attribuer des rôles et des responsabilités pour chacune de ces actions. Qui est responsable d’animer les rétrospectives dédiées à la qualité ? Qui organise un coding dojo ? Cela paraît évident comme ça, mais si on oublie de le faire il est peu probable que quelqu’un dans l’équipe prenne les choses en main de son plein gré. Pour ne pas surcharger quelques personnes et responsabiliser tout le monde, il est pertinent d’organiser une rotation des responsabilités parmi les membres de l’équipe. Encore une fois, cela permet l’implication et l’engagement de tout le monde.

Une conception collective et une concertation continue

La première étape est de réunir vos équipes et d’encourager leur créativité, stimuler leur capacité d’innovation, pour définir le format qui leur correspond le mieux. Vous pouvez ré-utiliser les exemples ci-dessus comme un support, mais il est important de vous l’approprier. Impliquer le plus de monde en amont réduit le risque de vivre l’expérience comme une contrainte. On s’engage mieux dans un projet lorsqu’on participe à sa conception. Surtout que certaines personnes dans les équipes ont peut-être déjà vécu ce type d’expériences par le passé. Et comme elles sont les premières concernées, autant les impliquer au plus tôt.

Une fois que les premières actions font consensus, partagez vos souhaits auprès du reste de la structure et en particulier auprès de la direction. D’une part, vous ferez preuve de transparence et motiverez les actions futures afin qu’elles soient mieux acceptées (et pourront éventuellement donner des idées à d’autres équipes). D’autre part, il faut garder en mémoire qu’il est vital d’articuler les processus d’entreprises autour d’une telle démarche. Pour rappel, on distingue généralement 3 niveaux de processus : processus de réalisation (cœur de métier, ce qui délivre la valeur aux clients), processus de support (RH, infrastructures, formation, environnement de travail, tout ce qui va aider à l’accomplissement des processus de réalisation), et enfin des processus de management (pilotage et suivi de l’ensemble des processus). Ces 3 familles sont impliquées dans la mise en place de vos actions : avec le soutien de la direction, vous devez montrer que vos actions seront guidées et leurs performances mesurées, et vous devez vous assurer que les moyens à disposition seront suffisants (une machine, une salle de réunion, …).

Le cadre est aussi important que le contenu

Communiquez avec toute l’organisation est primordial car on doit sentir que la démarche est alignée avec les valeurs de l’entreprise. Si ce n’est pas le cas, il y a un risque de découragement si certaines personnes n’y croient pas ou ne sont pas convaincu.e.s. Il faudra également veiller à adapter les plannings pour allouer dans l’idéal du temps de travail à ces nouvelles actions. Soyez vigilants sur la tenue des sessions le soir afin de respecter la vie privée de vos salarié.e.s. Si vous préférez des créneaux le midi, assurez-vous que la logistique est prévue pour que tout le monde puisse profiter d’un repas avant ou après la session. L’important est que tout le monde vive ces sessions comme des moments agréables (Les salarié·e·s reviendront ainsi avec plaisir !).

Enfin, dans l’esprit des méthodologies agiles, il est important qu’après chaque action réalisée, les ressentis des participant.e.s soient mis en commun. Si lors d’une présentation tout le monde s’ennuie ou regarde son téléphone, c’est que quelque chose ne va pas. Est-ce le format qui n’est pas bon ? Le lieu qui n’est adapté au public ? Ne négligez aucun détail car la démotivation n’est jamais bien loin. Ainsi, la concertation collective sur les actions à mener doit se faire en continu afin de procéder à d’éventuels ajustements. Encore une fois, appuyez-vous sur les personnes responsables de ces actions et qui auront pour mission la tenue des sessions dans les meilleurs conditions.

En conclusion, quand on investit dans la qualité logicielle, il est bien évidemment logique d’allouer des ressources sur des outils tel que Themis, mais un travail de fond derrière est essentiel pour fédérer l’engagement des équipes sur cette problématique. C’est un chantier complexe mais qui peut apporter une réelle plus-value dans votre organisation et dans vos futurs projets. D’autres pistes telles que la gamification sont à explorer pour optimiser les gains de la démarche.

Start connecting developers' knowledge with Promyze

Best coding practices shared from IDEs & Code reviews

Promyze, the collaborative platform dedicated to improve developers’ skills through best practices sharing and definition.

Crafted from Bordeaux, France.

©2023 Promyze – Legal notice