Après avoir choisi votre flow Git, et donc défini comment vous allez échanger avec vos collègues, il est temps de passer à la seconde étape de la cohésion technique de votre projet, de votre équipe. Comment s’assurer que votre équipe va grandir, s’améliorer, et surtout produire du code de qualité ? Voyons ensemble la seconde étape de la cohésion technique : la culture de l’apprentissage.
Un objectif à atteindre
Quel est l’objectif numéro 1 lorsqu’on crée un projet de développement ?
D’un côté, les uns vont vous dire qu’il s’agit de produire un projet d’une qualité parfaite, un projet exempt de bugs, et bien organisé, respectant le clean code, la clean architecture.
De l’autre, nous entendrons au contraire une volonté de respecter les besoins client-e-s à tout prix. La qualité de code n’étant pas une nécessité. Des arguments qui peuvent d’ailleurs s’entendre à l’heure du No code : la qualité n’est pas un but en soi, seule la réponse aux besoins client-e est respectée.
Bon, si on partait ensemble sur un développement custom, spécifique, permettant de répondre précisément aux besoins du client, de la cliente ?
N’est-ce pas un mixte des deux : respect des besoins et qualité de code ?
C’est par exemple ce que tente de proposer DDD comme approche, avec un Ubiquitous langage, un event storming, des domain models, …
Oui, et pourtant, il y a un mais, un vrai gros MAIS.
La qualité ne se produit pas directement, elle s’acquière avec le temps, avec l’expérience, la remise en question, l’apprentissage.
Le développement logiciel est, était, et sera toujours un état de l’art (vive l’artisanat du code).
Ainsi, on pourrait raccourcir toutes nos décisions, en validant ceci : pour un code de qualité, prenez que des devs seniors, avec une vraie bonne expérience, et le tour est joué. Non ?
La tentation du diable
Créer une équipe que de séniors est une bonne piste pour amener qualité, cohésion technique, et respect des besoins du client, de la cliente.
Et pourtant, rien ne vous garantira que le projet réussira, et c’est une autre histoire … (nous en reparlerons dans une autre série d’articles au sujet de la cohésion humaine).
C’est, pourtant, ce que j’inclus dans ce que j’appelle « la tentation du diable« . Pourquoi ?
Comment construire ensemble un monde où tous les devs, toutes les devs font de la qualité logicielle, apprennent, et s’améliore ?
Bien intégrer les juniors
Même si ça peut épuiser, ou dégoûter certains, ou certaines, l’état d’esprit du mentoring fait partie intégrante de la culture d’apprentissage.
Intégrer un junior, une junior, sans la-le guider
La tentation ici aussi, c’est de prendre un-e junior et de se dire : aller hop, je suis débarrassé-e, il-elle va pouvoir tout faire tout-e seul-e.
Croyez-vous que l’école permette d’apprendre tout ce qu’il faut pour :
- faire du code de qualité direct
- savoir écouter et traduire les besoins client
- améliorer son code en continue
- intégrer des philosophies de design de code comme le TDD
C’est tout bonnement impossible ! Et quand bien même l’école l’enseignerait (ce qui encore hélas trop rare), il y a un vrai gap avec la vie en entreprise, sur le terrain.
Une image qui me vient ici c’est un militaire qui se forme dans son équipe, tranquillement « au chaud » dans sa caserne (pas sur du nom ici), et qu’on envoie au frond pour la première fois ….
Mentorer, accompagner, guider
Dans une équipe, la plupart du temps, nous avons des niveaux hétérogènes. Et ce n’est pas un mal, si la culture d’apprentissage est présente, et est mise en place rigoureusement tout le temps, tous les jours.
Une équipe s’auto-organise dans l’état d’esprit agile, soit.
Je pense que l’on doit aller plus loin dans la réflexion : une équipe s’entraide, se challenge, ensemble, sans manager, juste l’équipe.
- Un-e junior demande du soutien sans devenir une sangsue des seniors,
- Le-la senior apporte ses connaissances, sans faire du Top-down supérieur d’information
- Chacun, chacune, va se challenger pour améliorer tout le monde
- Chacun apprend, s’améliore, quelque soit le niveau
Veille et apprentissage
Alors comment met-on en place cette culture d’apprentissage ?
Il existe plusieurs stratégies, complémentaires, s’alignant sur un but commun : faire grandir, et grandir ensemble.
- Mettre en place une veille continue
- Suive une formation professionnelle
- Apprendre via du micro learning
- Mentorer, et se faire mentorer, même les seniors
- Faire de la review technique
- Oser la critique bienveillante
- Oser l’erreur, accepter l’erreur