ELEPHANT technologies, l’ESN locale et à taille humaine spécialisée sur 2 métiers : le développement et le pilotage autour de 4 expertises : hardware, embarqué, software et web.

 

Aujourd’hui, nous retrouvons Antoine notre développeur full stack, java / angular, pour nous parler du Craftsmanship et nous expliquer plus en détail son fonctionnement.

 

Let’s go !

 

 

Définition du Craftsmanship

 

Craftsmanship est un code de conduite qui décrit un ensemble d’habitudes, de réflexes et de bonnes pratiques. C’est un software, également appelé « artisanat logiciel » en français. Ce terme appartient à la cinquième valeur du manifeste Agile : « Craftsmanship over Execution » c'est-à-dire « L’artisanat plus que l’exécution ».

 

  • Son histoire

Historiquement peu intégré, plusieurs développeurs se sont regroupés afin de rédiger un manifeste, qui sera publié en 2009. À travers celui-ci, on remarque une similitude avec le manifeste agile. En effet, les valeurs du manifeste Craftsmanship partent des valeurs agiles et les étoffent.

 

Craftsmanship prône le côté artisanal du développement logiciel. L’idée principale est de considérer que le métier d’un développeur n'est pas de seulement coder, mais également de construire un produit et d’en assurer le niveau de qualité.

 

  • Son objectif

L’objectif principal de craftsmanship consiste à toujours veiller à la propreté de son code, celui-ci doit impérativement être clair, lisible et agréable à lire. Un logiciel est amené à constamment évoluer car il aura de nombreuses nouvelles fonctionnalités qui correspondent à de nouvelles valeurs métiers. Et pour leur ajout, une bonne qualité de code est nécessaire.

 

Cependant, il est parfois délicat de concilier temps et budget. Le manifeste se montre particulièrement pertinent, car il permet de trouver le juste milieu entre une situation économique raisonnable et une qualité de code correcte.

 

 

Les valeurs du craftsmanship

 

✅ LA QUALITÉ

✅ L’HUMILITÉ

✅ LE PARTAGE

✅ LE PROFESSIONNALISME

 

  • La qualité :

Elle est au cœur du craftsmanship, c’est d’elle que va découler les autres valeurs. Dans la mise en place de ce dernier, on s’efforce à une conception simple afin que la modification ou l’évolution du code soit possible qu’importe le membre de l’équipe. C’est le clean code. On peut même aller plus loin et dire qu’un développeur hors projet doit pouvoir comprendre rapidement la portée du code.

 

De plus, on peut mettre en place au fil des différents développements, du refactoring, ce qui consiste à la reprise de codes existants afin d’éviter la duplication de lignes. Par conséquent, le code est plus compact et digeste.

 

Pour finir, la mise en place possible de TDD, (Test-Driven Development), permet d’améliorer la qualité de code dans sa pertinence à répondre aux besoins client. On commence par la mise en place des tests avant de coder la fonctionnalité. Ainsi, le périmètre du test n’est pas influencé par le développement de la fonctionnalité mais c’est plutôt l’inverse.

 

  • L’humilité :

Se remettre en question est une composante importante du craftsmanship. Il permet au développeur, au fil de son expérience et des retours de son équipe vis-à-vis de son code, de s’améliorer.

 

  • Le partage :

Le fait de travailler à deux, le peer-programming, ou encore la programmation en groupe permet la mise en commun des savoirs techniques. Une propriété collective s’établit au sein de laquelle chaque développeur de l’équipe peut venir piocher.

 

  • Le professionnalisme :

Une notion importante du craftsmanship est de traiter son client comme un partenaire afin d’avancer ensemble vers un même but commun. La qualité et la rigueur mise en place montre au client le sérieux du travail fait. Une confiance mutuelle s’établit, le besoin est plus rapidement et mieux compris, améliorant en conséquence la qualité.

 

 

En résumé :

 

En résumé, le craftsmanship, avec ses notions de qualité et d’amélioration continue, s’incorpore très bien avec les notions Agiles. Au sein d’une équipe, le craftsmanship améliore l’échange et la communication. Comme dit précédemment, il permet une meilleure qualité de code, ainsi on constate moins de retours au niveau de la qualification et de la recette. La montée en compétences y est plus rapide du fait du peer-programming, mais aussi de la mise en commun des bonnes pratiques et connaissances.

 

  • Les inconvénients :

Cependant, malgré ces nombreux aspects positifs, il apporte son lot d’inconvénients. Les niveaux pouvant être hétérogène dans une équipe, la notion de clean code peut-être différente et on peut avoir un comportement assimilable à la « police du clean code ». Dans certains cas, TDD est difficilement applicable et demande beaucoup de travail en amont, et ne pas l’appliquer est problématique, car c’est la base de craftsmanship.

 

  • A certaines conditions :

Le craftsmanship est un formidable outil à condition qu’il soit utilisé dans de bonnes conditions. Dans une équipe collaborative et agile, il sera un moteur de productivité et de qualité. S’il est implémenté dans une équipe trop récente ou peu soudée, il sera un frein du fait du ressenti qu’il génère et la charge de travail supplémentaire qu’il implique à ses débuts.

 

 


🐘 Nous remercions Antoine pour son article et si vous souhaitez en découvrir d’autres, c’est par ici : https://www.elephant-technologies.fr/les-actualites?news_category_filter%5Bcategory%5D=