Au fil des années nous avons testé de multiples solutions pour s'assurer de la progression de chacun, il en ressort 5 éléments essentiels pour progresser dans son rôle de développeur :
Du temps
Y'a pas de secret, la première clé pour apprendre est de prendre le temps de le faire.
Pour garantir que du temps soit effectivement disponible pour l'équipe, nous ne cherchons jamais à facturer 100% du temps de nos développeurs.
La règle qui est fixée est que 80% du temps de travail effectif dans le mois doit être attribué aux projets clients.
Il y a donc 20% de temps "libre" (soit environ 1 jour par semaine) pour apprendre, refaire une tâche d'une autre manière, prendre plus de temps que nécessaire sur certains points, prendre en compte des imprévus, des tâches de support non facturées, ..
Un process favorisant les retours et les échanges
Nous développons par itération, des petites tâches livrables rapidement, qui doivent suivre les étapes de notre "usine logiciel" pour être validées.
Concrètement :
- Chaque tâche / ticket (renseigné dans Trello) nécessite la création d'une branche (Git / Gitlab).
- Nos projets contiennent des tests et des outils de contrôle de la qualité du code de manière à tester localement et garantir le respect des bonnes pratiques.
- Lorsqu'une tâche est terminée, elle doit être validée via une MR (Merge Request), cette action déclenche 2 choses :
- Le lancement automatique des tests et outils de contrôle (Intégration continue)
- La relecture du code par un autre développeur (Code Review) qui va porter un oeil bienveillant afin d'orienter vers : de meilleures pratiques de développement, un code plus lisible, plus de qualité.
- Lorsque la MR est validée, le code est merged dans la branche de développement dans le but d'être déployé automatiquement sur l'environnement de test.
- Si durant le développement de sa tâche, le développeur a besoin d'une information qui n'était pas disponible dans notre documentation et qui mérite de l'être, c’est à lui de compléter la doc.
Pair Programming
Parfois la meilleure solution pour avancer, c'est de réfléchir à deux.
Dans ce cas, il est possible de demander à un autre développeur / lead développeur une session de Pair Programming.
Deux pré-requis :
- avoir identifié un point de blocage,
- se fixer un timing
Attention, le pair programming, ce n'est pas faire travailler l'autre pour avoir la solution, c'est travailler ensemble pour aller vers la solution. Concrètement, vous pouvez par exemple vous forcer à passer le clavier toutes les 10 minutes, c'est un moyen simple de s'assurer que les 2 développeurs vont apporter quelque chose.
MasterClass
Les masterclass sont des moments de démonstration d'une technique ou d'une compétence, c'est un créneau plus "académique" et "descendant" qui permet de reprendre les bases d'un sujet ou découvrir une bonne pratique mise en place sur un autre projet. Quelques exemples : Maîtriser Sql, Stripe Customer Portal, Tester son application, Utiliser Alfred, ...
Nous essayons d'organiser une masterClass par mois.
Mentoring
Réservé plutôt au profil junior, en complément des points "RH", il s'agit de prendre 1h par semaine avec le CTO pour :
- prendre du recul sur les développements en cours
- accompagner la montée en compétences
- débloquer des points techniques
- expliquer et démystifier nos process
Point bonus : Ecrire un article ou donner une conférence
Dans les deux cas, cela permet de réunir les connaissances acquises sur un sujet précis puis de synthétiser et transmettre à la communauté. Cet article est un exemple de synthèse des différentes pratiques que nous mettons en place pour progresser :)