software craftsmanship vs agile
IT & Technique

Quelle compatibilité entre software craftsmanship et méthodes agiles ?

Dans le monde du développement logiciel, deux concepts ont pris une importance grandissante ces dernières années : le software craftsmanship (ou artisanat logiciel) et les méthodes agiles. Bien qu’ils partagent des valeurs communes telles que l’amélioration continue et la qualité du code source, le débat sur leur véritable complémentarité est toujours vivant.

Définition des méthodes

Avant toute chose, revenons sur les principes de bases des deux approches :

Le software craftsmanship :

Il s’agit d’un mouvement qui place l’artisanat logiciel au cœur du processus de création. Les développeurs sont ainsi encouragés à écrire un code propre, bien conçu, testable et maintenable. Ce concept repose sur plusieurs principes clés :

  • Le souci du détail : chaque ligne de code compte et doit être écrite avec rigueur pour éviter toute fuite de mémoire, duplication ou erreur.
  • La communication avec les autres membres de l’équipe : un bon code est compréhensible par tous et favorise la collaboration.
  • L’apprentissage continu : les artisans logiciels cherchent sans cesse à améliorer leurs compétences au travers de la pratique et l’étude des meilleures pratiques techniques.

Les méthodes agiles :

Ces méthodes de gestion de projet placent le client et la communication entre les membres de l’équipe au centre de leur attention. Elles reposent sur des itérations courtes, qui permettent d’adapter rapidement le produit développé aux exigences changeantes du marché et du client. Parmi les pratiques agiles, on compte notamment :

  • Le SCRUM : une méthode de gestion de projet qui s’appuie sur des cycles de développement courts, appelés sprints, et une coordination continue entre les membres de l’équipe.
  • L’Extreme Programming (XP) : cette approche propose un ensemble de techniques pour améliorer la qualité du code et la communication entre les membres de l’équipe. Elle est basée sur les principes de pair programming, test-driven development (TDD)et intégration continue.
  • Le Kanban : cette méthode mise sur la visualisation des tâches à réaliser, à travers un tableau partagé par toute l’équipe, afin d’améliorer le flux de travail et la communication.

Une complémentarité entre software craftsmanship et agile est-elle possible ?

Il est indéniable que ces deux concepts possèdent des valeurs communes telles que l’amélioration continue, la collaboration et la qualité du produit final. Le software craftsmanship prône en effet la qualité du code comme garant d’un produit logiciel fiable et évolutif, tandis que les méthodes agiles recherchent une meilleure réactivité face aux changements et une relation privilégiée avec le client.

De ce fait, il semble naturel d’associer ces deux démarches pour tirer le meilleur parti de chacune :

  • En appliquant les principes du software craftsmanship dans le cadre d’une méthode agile comme le SCRUM, les développeurs peuvent améliorer la qualité de leur code tout en respectant les contraintes de temps et de priorité des tâches.
  • Les pratiques de l’XP, telles que le pair programming ou le TDD, sont en accord avec les valeurs du software craftsmanship et permettent de former des artisans logiciels au sein des équipes agiles.
  • Dans un contexte Kanban, la priorisation des tâches peut être adaptée pour favoriser l’apprentissage continu et les initiatives visant à améliorer la qualité du code.

Quelles sont les limites de cette complémentarité ?

Cependant, malgré ces synergies apparentes, certaines tensions demeurent entre les tenants du software craftsmanship et les méthodes agiles.

Un premier point central est le réel besoin de formations des artisans logiciels au sein des équipes agiles. Pour tirer pleinement profit de cette complémentarité, il faut accompagner les développeurs dans leur montée en compétences techniques. Ceci peut être réalisé avec la mise en place de formations spécifiques sur les meilleures pratiques de développement. Cela pour parait se matérialiser par des formations sur l’intégration continue ou encore se former par exemple autour du Test Driven Development (TDD).

En interne, l’organisation de workshops où les artisans expérimentés partagent leurs connaissances avec les moins expérimentés est une belle plus value pour l’ensemble des équipes. Enfin, la formation peut être réaliser en externe, en encourageant les membres de l’équipe à participer à des conférences et des meetups sur l’artisanat logiciel pour découvrir les nouvelles tendances et approfondir leurs compétences.

En complément, ci-dessous, trois points qui semblent à considérer pour améliorer les usages :

  • Le manque de structuration technique proposé par les méthodes agiles : ces dernières n’offrent pas de guide précis sur la manière de concevoir un code de qualité, ce qui laisse une grande liberté aux développeurs et peut mettre en péril l’amélioration continue si les artisans ne prennent pas le leadership.
  • La pression temporelle des méthodes agiles : elles imposent souvent des délais de livraison serrés, ce qui peut entraîner des compromis sur la qualité du code au profit de la rapidité. Les artisans devront donc veiller à limiter ces concessions pour préserver la viabilité à long terme du produit.
  • L’importance de la relation client dans les méthodes agiles : le software craftsmanship souhaite avant tout optimiser la qualité du code et l’épanouissement des développeurs, tandis que les méthodes agiles privilégient la satisfaction du client. Il conviendra donc de trouver un équilibre entre ces deux préoccupations pour favoriser une collaboration sereine.

En résumé, l’alliance du software craftsmanship et des méthodes agiles ne sera pas sans défis, mais elle offre indéniablement des perspectives intéressantes en termes d’amélioration continue, de qualité du produit final et d’épanouissement des développeurs.