J'ai été le seul développeur et le "développeur senior" de facto sur le produit phare de mon entreprise depuis un certain temps (une application .NET WinForms, mais ce n'est pas lié). Tout récemment, ils ont embauché un nouveau développeur novice avec un diplôme en informatique frais. Aucune expérience en contrôle de source, en tests unitaires, en maintenance logicielle, etc.
Récemment, je lui ai confié un petit morceau de travail et je me suis rendu entièrement disponible pour l'aider, pour constater que sa production laissait vraiment à désirer, tant en termes de vitesse que de qualité. J'ai essayé de ne pas être trop autoritaire, donc la seule orientation initiale que je lui ai donnée est un article de wiki décrivant la tâche que j'ai mis à jour (mais lui non), plusieurs exemples de code sur de nouvelles technologies (comme IPC), et j'ai décomposé les tâches en plusieurs cas FogBugz (auxquels il n'a donné aucun estimé original, temps réel, ou commentaire jusqu'à ce que je lui dise ce que je mettrais). Il posait rarement des questions et, lorsqu'il le faisait, il semblait suivre mes suggestions comme s'il s'agissait de consignes, souvent sans les comprendre et même lorsqu'elles étaient erronées.
Alors... Je comprends parfaitement sa situation où vous ne savez pas quoi faire et avez peur de poser des questions. Je sais que c'est de ma responsabilité de mieux faire mon travail, mais personne ne m'a donné de directives donc je n'ai pas d'expérience de ce à quoi ressemble un meilleur travail. Heureusement, il est en vacances pour une semaine, donc j'ai un peu de temps pour réfléchir à comment améliorer le processus. Voici quelques éléments qui me viennent à l'esprit, mais je suis ouvert aux suggestions et critiques:
- Demandez quelle partie de la dernière itération a été la plus difficile. Demandez quelle partie a pris beaucoup plus de temps que prévu.
- Faites du pair programming. J'ai déjà suggéré cela et il semblait ouvert à l'idée, mais chaque fois que nous avons commencé, j'avais tendance à prendre le relais parce qu'il ne tapait pas assez vite. C'est quelque chose sur lequel je dois travailler.
- Faites une revue de code avant de vérifier le travail. (Nous ne l'avons pas fait cette fois-ci en raison de ses vacances.) La revue de code mettrait en lumière les éléments suivants.
- Exiger des commentaires sur tous les membres publics. (Aucun de ses codes n'est commenté.)
- Exigez qu'il supprime tout code inutilisé. (Un examen sommaire montre qu'il ne l'a pas fait.)
- Exigez qu'il engage du code à chaque cas FogBugz lorsqu'il le termine et/ou révise les cas lorsqu'ils diffèrent de ce qu'il découvre en codant.
- Exigez qu'il entre des estimations originales dans FogBugz et bascule le drapeau "en cours" pour le maintenir sur la tâche.
Alors que les choses de la revue de code sont spécifiques et techniques, je suis plus préoccupé par sa capacité à être autonome et à demander/obtenir de l'aide là où il en a besoin. Je ne considère pas les exigences de FogBugz (6 et 7) comme des règles strictes, mais il semble qu'il doive les suivre pour rester sur la bonne voie.
Aussi, je sais que je dois améliorer mes compétences en mentorat/formation autant que lui doit améliorer ses compétences en codage. Des suggestions sur par où commencer quand le "développeur senior" n'a pas participé à une revue de code formelle ou n'a pas réussi une séance de pair programming sans prendre le contrôle?
Mon premier réflexe est de mettre à jour ce qu'il a déjà vérifié, mais je sais que je devrais le réserver pour une revue de code. Je voulais qu'il vérifie le travail pour que je puisse commencer à coder la partie qui utilise ce qu'il a vérifié. Donc, devrais-je utiliser ce qu'il a vérifié même si je ne pense pas que cela soit satisfaisant?