L’indémodable software craftsmanship

Blog Single
Technology

L’idée ne date pas d’hier : le manifeste pour l’artisanat du logiciel a fait son apparition en 2009. Il rappelle le rôle central du savoir-faire dans le développement informatique et l’importance de sa transmission. Le software craftsmanship reste depuis un sujet fréquemment évoqué. Alors pourquoi est-il toujours autant d’actualité ?

Un petit rappel…

« Un logiciel ne doit pas seulement être fonctionnel, il doit également être bien conçu« , déclare Marc Vincent,  Head of Technology chez Daveo. C’est un point crucial soulevé dans ledit manifeste. Il est important de comprendre l’origine de cette pensée. Les problèmes de conception et de qualité sont en effet des maux récurrents rencontrés dans l’industrie du logiciel. Ce manifeste nous rappelle l’objectif et la posture d’un développeur dans l’exercice de ses fonctions.

Un logiciel peut répondre aux attentes fonctionnelles d’un utilisateur. Cependant, si l’on regarde les coulisses – “le code source” – on pourrait identifier un certain nombre de problèmes techniques. De la même manière, dans le milieu de la restauration, si un plat est bon, on se demanderait si les cuisines sont propres. Le mouvement du software craftsmanship met en lumière l’importance de la maintenabilité lorsque l’on conçoit un logiciel.

La problématique

Lorsque l’on commence à développer un logiciel, tout progresse généralement vite. Vous avez une impression de fluidité dans l’avancement des travaux. Les fonctionnalités livrées sont conformes aux attendus.

Au fil du temps – dans un nombre non négligeable de cas – cette dynamique se dégrade. Les développements deviennent de plus en plus compliqués à réaliser. Des anomalies apparaissent. Vous avez alors accumulé de la dette technique. Ce phénomène est difficilement inévitable sur le long terme dans un contexte économique avec des impératifs de livraison.

Nous parlons ici de non qualité : les développements deviennent alors plus coûteux. Ce qui ne prenait que quelques heures de travail au début peut maintenant se compter en jours. C’est facilement compréhensible si l’on imagine le volume de code que représente un logiciel. Un développeur va passer la majeure partie de son temps à lire du code et pas à en écrire.

C’est ici qu’arrive la question de la lisibilité et de la maintenabilité du code. Travailler sur ces aspects signifie avoir une vision pérenne des développements. Pour atteindre cela, quelques prérequis sont nécessaires :

  • Professionnalisme
  • Pragmatisme
  • Partage
  • Humilité
  • Rigueur

Développer un logiciel ne se résume donc pas uniquement à maîtriser la syntaxe d’un langage de programmation. C’est plus complexe et subtil.

La vision

Des bonnes pratiques de code sont peut-être parfois méconnues. Dans d’autres cas, elles ne sont pas mises en oeuvre. Il est impératif de maîtriser les bons gestes et de les transmettre. Les développeurs qui convoitent la fiabilité et la maintenance de leur produit agissent tel des artisans amoureux du travail bien fait. C’est une question de culture, un véritable état d’esprit. Un code bien conçu est quelque chose avec lequel on prend plaisir à travailler.

Parmi les outils de l’artisan développeur, on trouvera par exemple les principes suivants :
YAGNI (you ain’t gonna need it) : on ajoute des fonctionnalités uniquement lorsqu’on en a besoin.
KISS (Keep it simple, stupid) : on préconise la simplicité dans la conception.
DRY (Don’t repeat yourself) : on banni la redondance de code
Boy Scout Rule : on laisse toujours un endroit dans un meilleur état que celui où l’on l’à trouvé.

Le message porté par ce manifeste est intemporel. Il est important d’affirmer ou réaffirmer ses valeurs.

Quelques recommandations de lecture pour aller plus loin 

  • The Pragmatic Programmer: From Journeyman to Master. Andrew Hunt et David Thomas (1999)
  • Clean Code: A Handbook of Agile Software Craftsmanship. Robert Martin (2008)
  • The Software Craftsman: Professionalism, Pragmatism, Pride. Sandro Mancuso (2014)