Sélectionner une page

Le but de cet article est de parler de Zelda de vous amener à réfléchir sur vous-même et d’identifier si vous êtes Craftsman ou non. Essayons ensemble d’aborder ce qu’est le mouvement Software Craftsmanship en faisant une petite introspection : Comment vous percevez-vous ? Comment percevez-vous votre métier ?

À la fin de cet article vous aurez, je l’espère, plus d’éléments pour savoir dans quel mesure vous êtes un artisan du logiciel.

Attention aux âmes sensibles, à lire avec précaution !

QU’EST-CE QUI FAIT DE VOUS UN BON SOFTWARE CRAFTSMAN ?

En observant les personnes avec qui j’ai pu travailler de près ou de loin, j’ai pu remarquer une chose : le nombre d’années travaillées en entreprise n’est pas toujours un bon révélateur de la qualité du travail produit au quotidien (ce qui fait la vraie valeur du développeur). Cette remarque peut peut-être vous choquer, ou alors vous l’avez peut-être constaté vous-même… Quoi qu’il en soit, une question se pose : Pourquoi ce constat est-il possible ?

Bien entendu il y a là une partie subjective. Qu’est-ce qui fait qu’un code est meilleur qu’un autre ? Tout est une question de point de vue, mais dans la grande majorité du temps, on recherche un code lisible, maintenable, robuste et qui réponde aux différents besoins du projet.

Posons alors la question qui nous fera entrer réellement dans le vif du sujet : Quels sont les éléments qui déterminent la vraie valeur d’un développeur ? Un meilleur QI ? Une école différente, des années de travail en plus ?

Ce sont malheureusement des critères qui sont souvent regardés, mais qui, à mon sens, ne sont pas les clés de la réponse.

LES 3 COUCHES DU DÉVELOPPEUR

En tant que développeurs nous connaissons tous le principe de couches (je ne parle pas de celles de nos chers bambins 😊). Nous les utilisons pour séparer certains aspects de nos logiciels, mais ici je les utilise pour séparer certains aspects de nous-mêmes.

On pourrait donc observer 3 couches, de la plus visible à la moins visible :

  1. LA CONNAISSANCE
  2. LA CONSCIENCE
  3. LE CŒUR

LA CONNAISSANCE, PREMIÈRE COUCHE D’UN BON DÉVELOPPEUR CRAFTSMAN

C’est l’aspect le plus exposé, le plus facilement remarquable, quantifiable, celui que tout le monde voit en premier. Par exemple, en entretien, ce qu’on cherchera le plus souvent à connaître ce sont vos connaissances, les “Hard Skills”.

Est-ce que globalement on peut dire qu’un développeur ayant plus de connaissances qu’un autre sera meilleur ? OUI !

Mais ne vous y méprenez pas, c’est seulement une des clés de la réponse : la partie émergée de l’iceberg. Cela dépend des connaissances que chacun a pu acquérir durant ses expériences.

En effet, toutes les expériences ne se valent pas et elles ne se valorisent pas de la même manière. La durée n’est pas forcément synonyme de qualité. Ainsi, 3 petites expériences de 6 mois peuvent être plus denses et enrichissantes qu’une grosse expérience de 3 ans.

Plus en détails il y a 2 types de connaissances qui nous intéressent :

1. LES CONNAISSANCES TECHNIQUES

Elles sont indispensables dans notre travail. Il est ainsi primordial de connaître et surtout de maîtriser les langages et Frameworks sur lesquels nous travaillons afin de pouvoir produire quelque chose.

Quelqu’un qui possède beaucoup de connaissances techniques sera plus productif que quelqu’un qui en a moins.

Jusque-là c’est logique n’est-ce pas ? 😉

Alors pourquoi aller plus loin ? Si on connaît très bien un langage et ses Frameworks on produira LE meilleur code ? Eh bien non, pas forcément !

Un des risques quand on est passionné par la technique et par les nouvelles technologies, c’est d’avoir toujours envie de jouer avec les dernières nouveautés, de les tordre dans tous les sens pour les faire correspondre à nos besoins.

C’est un risque pour 2 raisons :

  • Cela peut provoquer un manque de lisibilité : les besoins fonctionnels sont noyés dans du code technique.
  • Cela peut rendre le code moins maintenable : en plus de la mauvaise lisibilité qui réduit elle aussi la maintenabilité, le fait d’utiliser un code trop technique pourrait être un choix non opportun car les collègues qui passent derrière ne connaîtront pas forcément le Framework utilisé et ne comprendront peut-être pas si facilement le code.

Il manque ainsi un autre type de connaissance.

2. LES CONNAISSANCES MÉTHODOLOGIQUES

Elles sont tout aussi importantes, si ce n’est plus, que les connaissances techniques.

Ces connaissances sont avant tout des méthodes de travail, des principes à appliquer qui peuvent être utilisés avec n’importe quel langage de programmation et qui sont destinés à nous faire produire de bons logiciels.

Je distingue deux catégories :

  • Les méthodes pour l’organisation : sont faites pour nous aider à travailler en équipe et à organiser notre flux de travail.

On pourrait citer les méthodes Agiles comme Scrum, Lean startup ou encore Kanban.

  • Les méthodes pour la production : sont faites pour nous aider à produire un meilleur code.

On peut citer les méthodes DDD, BDD, TDD, mais aussi les principes DRY, YAGNI, KISS, SOLID, etc.

Avec cela nous avons vu la partie la plus perceptible de nos caractéristiques de développeurs. Nous allons pouvoir aborder la couche d’en dessous : la conscience.

LA CONSCIENCE, DEUXIÈME COUCHE DU SOFTWARE CRAFTSMANSHIP

C’est une couche très importante mais aussi très abstraite. Il s’agit ici, non plus de savoir-faire mais de savoir-être, vous savez c’est les Soft skills dont on entend souvent parler.

Il est ici question de la faculté de savoir se remettre en question, de savoir rester humble, et d’avoir conscience que nous ne sommes pas seuls et que nous progressons, grandissons avec les autres.

MAIS QUI SONT CES AUTRES ?

Vos collègues bien entendu, mais aussi la communauté de votre langage de programmation, sans oublier toutes les communautés de programmation.

Si vous n’avez travaillé qu’avec un seul langage de programmation, vous pouvez aller voir ce qui se fait dans les autres langages, cela vous fera peut-être prendre conscience qu’il existe d’autres manières de faire et cela vous fera peut-être changer la façon de concevoir vos programmes.

L’humilité fait partie du savoir-être : savoir reconnaître que le code que vous avez produit n’est pas forcément le meilleur, le plus performant et le plus maintenable.

Faire preuve de pragmatisme n’est pas quelque chose d’aisé non plus, quand devons-nous reconnaître que le code doit être plus simple ? Où placer le curseur entre découplage et simplicité ?

Même si cette couche est abstraite il est tout à fait possible de la travailler. Si ce sujet vous intéresse, n’hésitez pas à venir nous voir pour en discuter 😉.

LE CŒUR, TROISIÈME COUCHE DU CRAFTSMAN

Il s’agit du dernier aspect de la réflexion sur vous-même, comme vous vous en douterez, la plus importante.

Qu’y a-t-il dans votre cœur ?

  • LA PASSION :

Aimez-vous ce que vous faites ?
Avez-vous envie de continuer vos tâches ?
Êtes-vous révolté lorsque vous voyez des choses qui violent vos convictions ?
Si vous avez répondu oui à au moins une de ces questions, alors votre cœur de développeur à la composante “passion”.

  • LE COURAGE :

Comment vous sentez-vous lorsque l’on vous demande de toucher une brique vieillissante du système ?
Avez-vous peur ?
Avez-vous envie de le faire ? Ou préférez-vous fuir ?

Si vous y touchez :

Préférez-vous changer le moins de choses possible ? Ou profitez-vous de l’occasion pour apporter du sang neuf dans le système ?

En fonction de vos réponses, voici comment se présente la composante “courage” de votre cœur de développeur.

Par ordre du moins courageux au plus courageux :

  1. Vous avez peur et vous fuyez.
  2. Vous avez peur, vous avez envie de le faire, mais vous changez le moins de choses possible. (Oui cela peut être aussi du pragmatisme, cela dépend du contexte et de ce qui est effectué).
  3. Vous avez peur, vous avez envie de le faire et vous profitez de l’occasion pour apporter du sang neuf.
  4. Vous n’avez pas peur (vous êtes peut-être fou).
  • LA CURIOSITÉ

Aimez-vous comprendre comment les choses fonctionnent ?
Cherchez-vous à savoir pourquoi les choses sont faites ainsi ?
Cherchez-vous toujours à apprendre de nouvelles choses ?

Si vous avez répondu oui à au moins une de ces questions, alors vous avez la composante “curiosité” de votre cœur de développeur.

Bien entendu, ce ne sont que des exemples et tout n’est pas à prendre au pied de la lettre. Cela dit, toutes ces questions devraient vous permettre d’avoir certains indicateurs sur vous-même.

CONCLUSION, ÊTES-VOUS UN CRAFTMANSHIP DU CODE ?

Au final celui qui possède la Triforce peut vaincre Ganondorf est un bon développeur !

Ce qui déterminera la valeur d’un développeur c’est l’épaisseur de ces couches et leur homogénéité.

Pour terminer, un fait intéressant : ces trois couches sont des composantes de chacun d’entre nous et peuvent être appliquées à tous corps de métier !

Parlez-en autour de vous 😉

Source : Steeven Ramaheridianina blog.cellenza.com