web-dev-qa-db-fra.com

Comment puis-je aborder un collègue sur sa qualité de code?

Je travaille sur une nouvelle entreprise dans une grande entreprise de logiciels d'entreprise (plus de 3000 programmeurs). Dans mon groupe, nous avons un tas de projets et des personnes travaillent généralement sur plusieurs projets au cours d'une année.

Je viens de commencer à travailler sur un projet qui a déjà été maintenu par un copain de mien (consultant qui a été avec nous depuis plus de 3 ans) pour ajouter des fonctionnalités. Je suis entré dans le code et la qualité était vraiment assez mauvaise. Que ce soit sur l'interface utilisateur ou le backend des services, le code n'était tout simplement pas en retrait, il y avait des centaines de lignes commentées sans raison apparente, la documentation était essentiellement inexistante, les normes de codage n'étaient pas appliquées de manière cohérente (par exemple, mélange camelCase et under_scored_variables), les noms de variables étaient inintelligibles, des choix de données de type DataType étaient faux, etc., etc.

Je suis vraiment une personne non conflictuelle, je ne veux donc pas attaquer mon collègue, mais je ne veux pas seulement que je ne veux pas aller chez mon patron et me plaindre de sa performance. Quels sont les types de choses que je pouvais dire à mentionner poliment que le code est mal structuré?

Edit :

Je tiens à préciser que pendant que je comprends, il y a un élément de "Le code de tous les autres" à tous les programmeurs, quand je vois quelque chose comme ça (les noms sont choisis exposés exprès et certains détails laissés/modifiés dans cet exemple):

public void doCalculate(Object argument) {
  if (argument instanceof String) {
    String argument2 = (String) argument;
    if (argument2 == "DataBase") {
      // do something
    } else {
      long argument3;
      try {
        argument3 = Long.parseLong(argument2);
      } catch (Exception e) {
        argument3 = -1;
      }
      // do something completely unrelated
    }
  }
}

Je pense que c'est objectivement juste de dire que ceci est pas une bonne idée. En outre, je ne traite pas d'un débutant ici (je suis codant 3 ans maintenant). Il a peut-être 20 ans d'expérience sur moi. Le conseil que vous avez donné jusqu'à présent est génial; Voulez-vous juste vous assurer que nous ne parlons pas d'une "ligne fine" ici.

47
daveslab

Demandez-lui de vous expliquer son code

Dites-lui que vous n'avez jamais vu X programmé de cette façon avant, et demandez-lui pourquoi il le codie de cette façon. Montrez-lui comme vous le codez et dites pourquoi vous le faites de cette façon (meilleures pratiques, de meilleures performances, moins de chances d'erreurs, plus facile pour les autres programmeurs de lire/de maintenir, etc.).

Assurez-vous de préparer tous vos arguments à l'avance et concentrez-vous sur la raison pour laquelle votre méthode est préférable au lieu de la raison pour laquelle sa méthode est pire. Ensuite, voyez s'il soutient toujours sa méthode sur la tienne.

S'il est ouvert à l'amélioration, il changera probablement son mode de codage. S'il préfère toujours utiliser son style de codage sur le vôtre, vous n'êtes pas susceptible de changer d'avis.


C'est la même réponse que j'ai donnée pour la question Comment dire à votre patron que son style de programmation est vraiment mauvais? . J'ai initialement voté pour fermer cette question en tant que duplicata, mais suffisamment de personnes ont jugé que c'était suffisamment différent pour la ré-ouvrite de la Guerre. Ma réponse est toujours la même si, peu importe si vous parlez à un patron ou à un collègue.

45
Rachel

Et si au lieu de l'approcher personnellement, vous abordez l'équipe et de manière totalement neutre propose de "l'équipe" à proposer une norme/des directives de codage pour différents membres de l'équipe de travailler plus efficacement avec le code de chacun.

Une fois que c'est en place, je pense que le code que vous avez des préoccupations avec la bulle va au sommet de tout seul.

Les revues de code des pairs aident également dans ce domaine. Les normes de codage n'ont pas beaucoup d'avantage si personne ne regarde jamais le code. Mais les critiques de code des pairs ont de nombreux autres avantages, un transfert de connaissances primaire, de sorte que vous devriez pousser à les introduire dans les deux cas.

Je suppose que même si vous avez 3000 ingénieurs, vous avez des plus petites équipes de sous-équipes qui travaillent ensemble comme unité

14
DXM

Tout d'abord, tout le monde pense que le code des autres est nul.

Deuxièmement, il a peut-être hérité du code de quelqu'un/quelque part d'autre OR C'était un prototype jamais destiné à être le code utilisé pour le projet réel, mais bien sûr, c'est ce qui a fini d'être utilisé.

Troisièmement, son code suce peut-être, mais est-ce votre travail avec les développeurs précédents de Badmouth? Sauf si vous avez construit une réputation qui commande le respect autour de la société, je suppose que si vous vous gémissez sur le code de l'autre personne, c'est vous qui finira par avoir l'air mauvais et non votre ami. Le temps de donner aux gens le chagrin sur leur code est lorsque des critiques sont organisées. Au moins, cela fait partie de vos responsabilités d'emploi.

Je recommande que si vous n'aimez pas son code, corrigez-le à votre goût. Ensuite, le prochain développeur viendra et se plaindre de votre code et le changera probablement pour être plus comme ce que votre ami a fait.

11
Dunk

Votre collègue n'est probablement pas la cause première du problème dans votre entreprise. La raison pour laquelle le faible code de qualité est en production est l'absence de normes de codage mesurables automatiquement dans votre entreprise. Dans ce cas, la lumière du soleil est le meilleur remède.

Vous devez parler à votre responsable technique sur la mise en œuvre des métriques de qualité de code source automatisées de votre groupe. Le système doit fonctionner au moins hebdomadaire, envoyez-vous un courrier électronique à tous à l'équipe une liste de fichiers par fichier de codage de violations standard et d'envoyer un résumé de la direction à votre patron. Le résumé devrait contenir le nombre de violations par projet.

Dans mon expérience, tout ce qui est mesuré et signalé à un patron s'améliore au fil du temps.

11
dasblinkenlight

... Le code n'était tout simplement pas en retrait, il y avait des centaines de lignes commentées sans raison apparente, la documentation était essentiellement inexistante, les normes de codage n'étaient pas appliquées de manière cohérente (par exemple, mélange de camelase et sous_scored_variables), variable Les noms étaient inintelligibles, les choix de données de données étaient faux ...

Autant que je puisse dire, au-dessus des correspondances n ° 12, n ° 9, n ° 5, n ° 2 et probablement # 7 de Top 12 des choses susceptibles d'être entendues si vous aviez un programmateur de Klingon (Archive) [ Lien d'origine ]:

12. Les spécifications sont pour les faibles et timides!
[.____] 11. Cette machine est un morceau de Gagh! J'ai besoin de Dual Pentium processeurs si je suis à faire de la bataille avec ce code!
dix. Vous ne pouvez pas vraiment apprécier Dilbert sauf si vous ne l'avez pas lu dans le Klingon d'origine.
[.____] 9. Échancrure?! - Je vais vous montrer comment dérimer quand je tire votre crâne!
[.____] 8. Qu'est-ce que cette discussion de "libération"? Les Klingons ne font pas de "libellés de logiciels". Notre logiciel 's'échappe, "laissant une traînée sanglante de designers et d'assurance qualité dans son sillage.
7. Les appels de fonction Klingon n'ont pas de "paramètres" - ils ont des "arguments" - et ils les gagnent toujours.
[.____] 6. Débogage? Les klingons ne débèvent pas. Notre logiciel ne code pas le faible.
[.____] 5. J'ai contesté toute l'équipe d'assurance qualité à un concours Bat-Leth. Ils ne nous préoccuperont plus.
[.____] 4. Un vrai Klingon Warrior ne commère pas son code!
3. En clôturant ce PTR, vous avez contesté l'honneur de ma famille. Préparez-vous à mourir!
[.____] 2. Vous interrogez la valeur de mon code? Je devrais te tuer où tu te tiens!
1. Nos utilisateurs connaîtront la peur et le tracteur avant notre logiciel! Expédier! Expédiez-le et laissez-les fuir comme les chiens qu'ils sont!

http://i.stack.imgur.com/16MVS.png

Il est fort probable que le seul moyen d'éviter la confrontation est un chaîne de chaîne dans un autre quadrant spatial.

11
gnat

Obtenez des antécédents sur ce qui se passait au sein de la société et de l'équipe lorsque ce projet a été écrit. Demandez à ce device pour obtenir des commentaires sur la façon dont il pensait que le projet est allé. Son style a-t-il changé? Si cela est donné l'occasion, que ferait-il différemment?

Il peut être d'accord avec vos normes, mais je n'avais tout simplement pas le luxe de les appliquer lors de la création de cette application ou de ne pas savoir à leur sujet.

Soit votre groupe n'a aucune politique de révision des normes ni de code ni un grave problème de mise en œuvre. Vous pouvez peut-être tenir une opinion d'un.

3
JeffO

Je vais l'admettre, je suis parfois ce gars. Quand je serai, j'aurai mes raisons, généralement des contraintes de temps, des projets de mort-mars, des instructions telles que "maintenant, pas parfaite", etc. Très rarement, c'est à cause d'une mauvaise journée. Je suis heureux de me demander des problèmes, cela me donne une chance de devenir un meilleur développeur. Fourni a) Vous êtes raisonnable sur ce qui sera changé (n'est pas si mal cassé, d'accepter de ne pas corriger), et b) votre dictateur de tâche de noix qui estime que votre chemin est le seul moyen.

Pour m'approcher de moi, ne demandez pas "pourquoi". Pourquoi un mot de combat, un défi et est finalement destructeur. Si vous vous trouvez avec trop, changez-le à I. "Pourquoi avez-vous appelé ceci x" devient ", j'aurais utilisé index, c'est plus descriptif que x."

Le meilleur moyen est d'indiquer ce que vous auriez fait ou aurait préféré. Expliquez que ce que vous voyez ne répond pas à certaines normes et que vous voudriez le voir améliorer. Je suppose que 99% du temps, la réponse sera "alors je le ferais, mais ........"

3
mattnz

Il est peu probable que l'auteur du code revienne réparer son code à partir de votre propre volonté pure ou que votre employeur lui paiera de le faire. Donc, de toute façon, vous êtes SCR * WED.

Si vous croyez que le désordre, le code est intégré aura un effet néfaste grave sur votre performance tout en travaillant dessus, assurez-vous de sauvegarder une sauvegarde du code d'origine quelque part afin de pouvoir prouver que c'était un gâchis quand il a été livré à tu. Donc, si votre employeur vous confronte plus tard de vos mauvaises performances, vous pouvez couvrir votre cul.

Néanmoins, il peut regarder à votre employeur comme une excuse, alors essayez d'éviter même cela se produisant si vous le pouvez.

1
Mike Nakis

Pensez à ce qui le mentionnait bien qu'il a un mauvais style de codage le ferait ou lui?

C'est peut-être préférable d'essayer d'améliorer les procédures d'assurance qualité de votre entreprise.

1
Kasper van den Berg

Vous devez trouver deux choses: quel est votre objectif? Comment voudriez-vous être approché vous-même?

Si votre collègue, avec plus de 20 ans de programmation derrière lui, est vraiment très ouvert d'esprit, vous pouvez simplement parler à lui et signaler des exemples spécifiques, dis-lui pourquoi ils vous avaient semblé mal et discute des alternatives. Parce qu'il est vraiment, vraiment ouvert d'esprit et désireux d'apprendre, il va écouter, une discussion s'ensuivra, et il comprendra vos points et vous allez tous les deux vivre heureux pour toujours.

Dans mon expérience, cependant, le collègue est probablement une programmation probablement comme celle-ci, car il ne se soucie pas du style. Ce pourrait être parce qu'il est vraiment dans le mauvais travail, sinon cela pourrait être parce que, dans 20 ans de programmation, il n'a jamais trouvé de raison de s'inquiéter à ce sujet - peut-être que son code fonctionne simplement et il passe.

Si ce dernier est le cas, vous allez simplement gaspiller votre temps et votre temps, et vous pouvez faire une dent dans votre relation s'il se transforme en argument. Alors, quel est votre objectif ici?

Voulez-vous qu'il nettoie son code afin que vous puissiez travailler sur un code plus agréable? Voulez-vous qu'il apprenne et s'améliore? Voulez-vous vous sentir bien d'être un meilleur codeur? Voulez-vous que votre patron sache que vous êtes un meilleur codeur que lui?

Le premier ne va pas arriver et le troisième est déjà établi, bien que vous souhaitiez probablement qu'il le reconnaisse aussi - bon ami, figure paternelle?

Si vous voulez vraiment qu'il apprenne et s'améliore, alors déterminez comment vous aimeriez être abordé dans la situation inverse et faites de même. Et déterminez ce qui vous dérangerait et assurez-vous de ne pas le faire.

Le quatrice est facile: soit vous voulez un meilleur salaire, puis vous venez de la demander pendant la prochaine réunion de commentaires (ce n'est pas vraiment important de la qualité que vous êtes dans cette industrie) ou que vous souhaitez plus de responsabilité et vous ne voulez que de faire Un bon travail jusqu'à ce que vous l'obtenez.

1
Carl Seleborg

Suggérez votre patron que vous voyiez un code fou et demandez-lui de mettre tout le personnel possible sur certains cours de programmation. Je pense qu'il devrait savoir que ses applications sont remplies de code de merde.

0
H27studio