Être un "mauvais flic"
Comme mentionné précédemment, la voie à suivre est de se détacher ou de se détacher de toute autre personne des problèmes à soulever. Cela signifie:
- Vos règles doivent être claires et écrites, que ce soit dans un wiki, un guide de style, des documents d'entreprise, tout ce que vous utilisez. Ce matériel doit être accessible au développeur en question.
- Lorsque vous signalez des erreurs dans une critique, n'utilisez pas de phrases qui vous impliquent de quelque manière que ce soit. Au lieu de cela, transférez le blâme sur vos documents, tels que le guide de style et sur vos processus en général. Un exemple de ceci peut être, "Ligne X: Selon le styleguide [link], les variables membres statiques doivent suivre le modèle Y."
Vous ne pouvoir éviter complètement le sentiment de mauvais flic , cela fait partie des critiques. Cependant, avec un ton prudent, vous pouvez établir une culture de révision, où il est clair que ce n'est pas un développeur qui est mis en cause, mais seulement le code lui-même. Il doit être compris par toutes les parties qu'un avis ne consiste pas à critiquer une personne ou son travail, mais simplement à améliorer le code et donc votre produit.
Assigner des tâches appropriées
Ceci est probablement mon point le plus important et celui qui, je pense, justifie ma réponse en premier lieu, car il y a des redondances dans toutes les réponses publiées:
Une autre réponse de @ Ertai87 mentionne que corriger toutes les erreurs mineures est épuisant, je assumer à la fois pour le critique et pour le réviseur. Vous mentionnez également qu'il y a tellement de choses à corriger, que tout l'exercice déraille quelque peu. La réponse à laquelle je fais référence indique alors de se concentrer sur les problèmes majeurs et d'ignorer les problèmes mineurs.
À mon avis, ce n'est pas la bonne approche.
Lorsque les tâches résolues par le développeur en question sont tellement complexes que leur examen se transforme en une entreprise énorme, alors je veux dire que ces tâches sont trop importantes pour le développeur en question. Ils ne sont pas prêts et doivent se voir attribuer des tâches plus petites et commencer par les choses mineures. Cela signifie, attribuer par exemple des corrections de bogues qui ne viennent vraisemblablement qu'avec quelques lignes de code, seulement des fonctionnalités très mineures et d'autres problèmes du genre. Sinon, vous passerez une tonne d'absurdités dans votre base de code parce que vous êtes tellement occupé à corriger leurs erreurs majeures que vous ne pouvez pas vous permettre de corriger toutes les bêtises mineures. En fin de compte, ce sera probablement du temps passé par d'autres employés, qui finissent par réparer toutes ces choses lorsqu'ils travaillent à leur tour sur les mêmes passages de code.
Vous ne devriez pas vous attendre à ce que votre junior soit au même niveau que tout le monde sinon, car le processus d'amélioration doit être progressif. Pourtant, ils sont des employés, donc vous pouvez vous attendre à ce qu’ils apportent de la valeur à l’entreprise, même si cette valeur est relativement mineure et ne s’accompagne qu’au fil du temps. Alors, attribuez-leur des tâches plus petites et laissez-les commencer par les bases. Plus ils s'améliorent, plus leur domaine de responsabilité peut devenir étendu et leurs tâches peuvent également prendre de l'importance.
Posez-vous la question. Avec le temps passé à corriger le code de ce développeur, combien de temps en comparaison auriez-vous passé à le faire vous-même?
Distribuer des critiques
En tant que chef d'équipe, il n'est pas écrit dans le marbre que vous doivent revoir tout le code. Les examens peuvent être effectués par tous les employés expérimentés, vous avez la possibilité d'utiliser cette tactique. Une manière courante de procéder consiste à disposer d'un ensemble de réviseurs et d'un créneau horaire, par exemple une fois par semaine, lorsque les avis sont en cours de traitement. Pendant ce temps, tous les membres de l'ensemble doivent examiner les problèmes en attente d'acceptation / de rejet.
Il y a trois avantages principaux à cela:
- La révision de code est une tâche qui demande beaucoup de concentration. Vous ne pouvez en faire qu'une partie par vous-même pendant une journée avant de commencer à transmettre des erreurs à la production. Plus de personnes sur cette tâche signifie plus de concentration en tant que ressource.
- Quelle que soit votre expérience, il y a probablement des modèles dans votre code et des erreurs que vous répétez et dont vous n'êtes pas conscient. Cela vaut également pour vos pairs. Lorsque plusieurs personnes examinent les membres de votre équipe et les uns des autres, à tout le moins la personne évaluée peut voir d'autres modèles et d'autres moyens de résoudre le problème X. De cette façon, les connaissances sont distribuées dans votre équipe.
- Plus il y a de personnes faire des critiques, moins une seule personne court le risque de devenir le mauvais flic .
Je dirai cependant que cela peut dépendre de l'entreprise et des processus en place. Certains lieux de travail peuvent exiger qu'un chef d'équipe approuve chaque élément de code et certains lieux de travail peuvent même le faire en raison d'une qualification spécifique que seul un expert apporte à la table. Un exemple de ceci pourrait être la sécurité dans un cadre médical. S'il n'y a pas d'exigences particulières de ce type, mais que les processus vous obligent actuellement à examiner personnellement tout le code qui va à la production, alors cela peut être soulevé avec la direction qui plaide pour une efficacité accrue de l'équipe. Vous seul saurez comment les choses fonctionnent dans votre entreprise, utilisez votre meilleur jugement pour savoir si la distribution des avis peut être réalisée sur votre lieu de travail.
Une note personnelle: lorsque nous avons commencé les révisions de code dans notre entreprise, c'était cahoteux au début aussi, car il est difficile de ne pas se sentir critiqué lorsque votre demande de fusion est rejetée avec un tas de choses à corriger. À présent, l'équipe chérit les révisions de code. Personnellement, j'ai appris beaucoup en faisant réviser mon code, tout comme mes pairs.
Sur le comportement défensif
Il y a certaines choses dont on peut discuter et d'autres qui ne nécessitent pas de débat. Discuter de telle ou telle architecture n'est pas rare. Ce faisant, il est important d'avoir une bonne raison pour laquelle vous voulez changer l'implémentation X en implémentation Y. Il ne suffit pas de dire "c'est mieux" . Bien sûr, vous pouvez suivre la voie faisant autorité, mais cela risque de démoraliser et de montrer un manque de perspicacité. D'un autre côté, lorsque votre équipe a développé votre guide de style, je m'attendrais à ce que vous ayez réfléchi à la raison pour laquelle vous avez décidé de faire la chose X de la manière Y. Ces choses ne devraient pas aboutir à des débats interminables à chaque fois, du moins si le consensus de l'équipe sur la question n'a pas changé.
Dans l'ensemble, le comportement défensif n'est pas un problème aussi simple ou rapide à résoudre d'après mon expérience. Je suggère de faire des entretiens en tête-à-tête de temps en temps. Semblable à des évaluations de performance, mais destiné à être une discussion non interrogative entre deux membres de l'équipe, plutôt qu'un patron donnant l'entreprise à son subordonné. C'est un moment où vous pouvez partager vos griefs avec les performances de l'employé en suggérant des améliorations. Il est également important d'écouter leur côté. Sont-ils satisfaits de ce qu'ils font? Si non, quels sont les problèmes dans leur esprit? Comment peut-on les résoudre?
Cela étant dit - si toutes ces tentatives ne portent pas leurs fruits, alors la voie faisant autorité peut être tout ce qui reste. Dans ce cas, expliquez au développeur que ses performances ne sont pas satisfaisantes, aussi difficile que cela puisse paraître. Il s'agit essentiellement d'un avertissement et à ce stade, j'envisagerais de laisser partir cette personne.
Je comprends que cela peut sembler dur, mais en fin de compte, chaque employé doit apporter de la valeur à la table. La valeur d'un junior au début peut être à peine au-dessus de zéro, cela peut même être un investissement dans la productivité future, sans aucun gain immédiat. Cependant, si le temps passe et qu'aucune amélioration n'est constatée, alors l'entreprise gaspille de l'argent et l'employé n'est pas la bonne personne pour vous.
Il y a cependant beaucoup de choses à essayer avant que cela ne se produise, certaines mentionnées ci-dessus . Vous devriez vous demander si vous pouvez améliorer votre communication avec cet employé et partir de là. Est-ce que vous formulez des choses qui les forcent à adopter une position défensive? Si le développeur s'avère être un atout pour l'entreprise qui n'a été entravé que par une mauvaise communication entre eux et vous, alors tout le monde y gagne une fois que cela est reconnu et résolu.
Autre note personnelle: I J'ai déjà travaillé et enseigné à des juniors de la vue dans mes dernières entreprises - principalement des étudiants en licence et en master, faisant les premières étapes du codage pour des applications du monde réel, mais aussi des codeurs autodidactes ainsi que des juniors avec un autre formation. Une chose que de nombreux étudiants apprennent après avoir franchi cette étape, c'est que les compétences techniques, aussi bonnes que vous soyez, font partie d'une équation plus large. Les compétences générales sont plus importantes et doivent être rattrapées si nécessaire.
De nos jours, nous filtrons les candidats en évaluant leur caractère plutôt que leurs compétences techniques. Ils ont une formation similaire et nous nous en remettons à ce fait. La compatibilité de la personnalité est cependant très importante, car une pomme pourrie peut empoisonner tout le panier. Jusqu'à présent, principalement en promouvant une culture d'entreprise très accueillante, nous avons pu intégrer tous nos étudiants et chacun d'entre eux est finalement devenu un atout, mais nous prenons notre temps avec eux et n'affectons pas quelqu'un qui apprend le cordes tâches géantes. Comme dit, les progrès sont progressifs.
J'espère que ce mur de texte vous aidera d'une manière ou d'une autre. Bonne chance!