Que dois-je faire en attendant une critique?

32

Avant de poser ma question, je dois expliquer la situation.

Je travaille pour une entreprise en tant qu'ingénieur logiciel junior. L'une des personnes âgées m'arrête toujours lorsque j'ai terminé mon développement et que je veux m'engager.

Il veut toujours que j'attende qu'il le passe en revue. C'est bon, car généralement il trouve des bogues et optimise certaines choses.

Cependant, je dois valider mon code avant la date limite. Quand j'ai fini, je l'appelle et dis que c'est fini. Il vient généralement en retard. Donc, mon code est en retard aussi.

Ma question est, que dois-je faire? Devrais-je l'attendre pour un examen?

EDIT: Ajout à la question. Je suis curieux d'un autre problème.

Je veux être libre lors du codage. Comment pourrais-je gagner la confiance pour la liberté de développement?

Quelques explications: je lui en ai parlé. Mais ça n'a pas aidé. Nous utilisons déjà un outil de suivi des problèmes, mais aucune tâche de révision n'est requise. Il n'y a que des tâches de développement et de test.

Yfklon
la source
10
Parlez avec lui à ce sujet.
Florian Margaine
18
lui envoyer un email pour lui dire que c'est fait et que vous attendez son avis. Ensuite, vous pouvez toujours vous référer à cet e-mail si quelqu'un vous demande pourquoi vous avez manqué un délai.
dreza
5
Un suivi des problèmes n’est qu’un outil pour vous rappeler les étapes importantes que l’équipe ne veut pas oublier. Si votre équipe considère les révisions comme l'une de ces étapes, vous devrez probablement les ajouter en tant que tâches distinctes. Si votre équipe peut gérer les parties du code qui doivent être révisées sans entrer explicitement cela dans le suivi des problèmes, il n’est pas nécessaire d’ajouter de telles tâches. C'est quelque chose que vous devriez discuter avec votre équipe.
Doc Brown
3
Soyez patient, vous ne savez pas à quel point il est bénéfique de faire examiner votre code par une seconde paire d'yeux (surtout un senior).
JeffO

Réponses:

70

Donc, mon code est en retard aussi.

Non, ce n'est pas votre code, c'est le code de vous et de la personne âgée. Vous travaillez en équipe, vous avez une responsabilité partagée et lorsque vous manquez une échéance, c'est la faute de vous deux. Alors, assurez-vous que celui qui fixe les délais le remarque. Si cette personne voit cela aussi comme un problème, elle vous parlera sûrement à tous les deux - cela peut aider plus d'une conversation avec votre collègue.

Et à votre rédaction:

Je veux être libre lors du codage. Comment pourrais-je gagner la confiance pour la liberté de développement?

La révision du code est l’un des principaux économiseurs de qualité. Il est pratiquement impossible d'écrire un code excellent sans une deuxième paire d'yeux, même avec plus de 20 ans d'expérience en programmation. Donc, dans une bonne équipe, le code de Everyones doit être constamment révisé - le code de votre senior ainsi que votre code. Cela n'a rien à voir avec la méfiance envers vous en personne (ou du moins, cela ne devrait pas). Tant que vous croyez qu'il est préférable de "coder gratuitement" sans une deuxième paire d'yeux, vous êtes toujours un programmeur débutant.

Doc Brown
la source
4
@blank: vous avez manqué mon point - je parle de responsabilités et de votre point de vue à ce sujet. Vous pensez que vous êtes le seul responsable du respect du délai - c'est faux, et vous devez vous assurer que tous les autres membres de votre équipe le savent aussi.
Doc Brown
Vous avez raison à ce sujet. Mais il n'y a pas de responsabilité pour le senior. Il n'a pas pour tâche d'examiner le code. Mais il le fait toujours.
Yfklon
27
@blank: c'est exactement ce que je veux dire. Si le doyen vous dit d'attendre, il prend la responsabilité. Faites en sorte que cela soit transparent pour celui qui définit les délais.
Doc Brown
27

Dans une bonne équipe, une file de tâches de développement doit vous être affectée dans un suivi des problèmes .

De cette façon, pendant que vous attendez un relecteur, vous pouvez ( devriez ) travailler sur la prochaine tâche en attente dans cette file d'attente. Une fois que vous vous êtes habitué à travailler de cette manière, vous aurez l’occasion de revoir vos modifications par «lots», ce qui réduira les délais.

  • Si vous ne disposez pas d'une telle "file d'attente", discutez-en avec votre responsable ou, mieux encore, avec votre relecteur. Si votre équipe ne dispose pas d'un système de suivi des problèmes raisonnablement pratique pour ce genre de choses, envisagez d'étudier les offres d'emploi ou les offres d'emploi internes à l'entreprise pour trouver une meilleure équipe (vous pouvez également en discuter avec le responsable / réviseur, mais ne vous attendez pas à ce que cela vous aide - manque suivi d’un problème est souvent le symptôme d’une défaillance grave dans une équipe).

Je veux être libre lors du codage. Comment pourrais-je gagner la confiance pour la liberté de développement?

Pour le savoir, vous devez d'abord comprendre le but des révisions de code. Vous avez parlé de confiance - c'est une bonne "approximation", mais pas tout à fait exacte.

  • Par exemple, dans l'un de mes projets récents, le développement a été réalisé par une mini-équipe composée de moi-même et de mon collègue. Nous nous respectons mutuellement et nous nous respectons mutuellement. Malgré cela, nous avons examiné 100% du code. Nous le faisions parce que cela nous permettait de trouver et de corriger rapidement certains bugs et, ce qui est également très important, car les critiques ne prenaient pas beaucoup de temps et ne bloquaient pas notre travail.

Vous voyez, il serait plus juste de penser à la révision de code en termes d’ efforts déployés pour prévenir certains risques . Dans une bonne équipe, vous pouvez vous attendre à une sorte de compréhension partagée de la manière de "bien équilibrer" cela. Notez qu'il n'existe pas d'équilibre unique, il dépend fortement du projet. Les risques et les impacts des bogues d'un logiciel essentiel à la mission diffèrent naturellement de ceux d'une application non critique.

En utilisant votre exemple, vous pouvez vous attendre à "bloquer les révisions" tant que les efforts investis par votre relecteur sont justifiés par la recherche de bogues et l'amélioration des améliorations à corriger avant de valider votre code.

Ils s'attendent probablement à ce qu'avec la pratique et les conseils reçus lors des examens, vous amélioriez votre codage, de sorte qu'ils trouveront de moins en moins de problèmes qu'il vaut la peine de résoudre avant de les engager. Dès qu'ils découvrent que votre code est "suffisamment sûr" pour permettre des "mesures de prévention des risques" moins lourdes, vous pouvez vous attendre à ce que le processus change, par exemple en révisions après validation .

En fonction du projet, votre code peut même être considéré comme suffisamment sûr pour ignorer les révisions, laissant la découverte des bogues aux testeurs (mais cela ne se produira pas nécessairement, voir mon exemple ci-dessus).

moucheron
la source
1
On dirait que vous suggérez une solution technique à un problème d’organisation. À mon expérience, cela fonctionne rarement.
Doc Brown
5
@ DocBrown Je ne pense pas que cette réponse se concentre vraiment sur une solution technique. Le cœur de la solution est "vous devriez avoir une file d'attente de tâches qui vous est assignée". C'est une solution organisationnelle à un problème d'organisation. Que cette file d'attente soit conservée dans un suivi des problèmes, des courriers électroniques, une feuille de calcul, un tableau blanc ou une pile de notes postales, ce n'est qu'un détail.
Carson63000
@ Carson63000 exactement ainsi. Je voudrais aussi ajouter que d' avoir des tâches dans un dispositif de suivi d'émission afin que l' on n'a pas besoin de courir au directeur / principal pour demander une nouvelle tâche est aussi un détail d' organisation (et pas tout à fait mineur dans mon expérience)
moucheron
1
@gnat: eh bien, vous auriez pu écrire "par exemple dans un outil de suivi des problèmes" pour que cela soit plus clair. Mais je ne suis pas sûr si la question à laquelle vous répondez (celle du titre) est le point central de la question des PO écrite dans le texte ci-dessous (qui est différente).
Doc Brown
@ DocBrown Je ne l'ai pas fait intentionnellement, car j'estime qu'il est trop important de préciser l' organisation, par exemple, comme "par exemple" (l'idée même que des coéquipiers juniors viennent me demander la prochaine tâche lorsqu'ils auront terminé avec des envois actuels, des frissons dans le dos. )
moucheron
9

Il y a plusieurs réponses possibles ici, en fonction de votre problème.

  • Si votre principale préoccupation est "il me manque des délais", non. Vous manquez tous les deux aux dates limites. Pouvez-vous (avec confiance) dire "Je vais avoir fini dans une heure, pouvons-nous alors réviser le code"? Cela pourrait suffire. Pouvez-vous compléter le code la veille de la date limite? Cela devrait être un tampon abondant. Complétez-vous votre code, avec beaucoup de tampon entre "merci de revoir" et la date limite? Si ce dernier, ce n'est même pas une faute commune, je dirais.

  • Le code doit toujours être revu. Je ne peux rien enregistrer sans (au moins) une deuxième paire d'yeux et un autre humain qui passe "c'est bon". Cela vaut pour les projets pour lesquels je suis le programmeur principal ainsi que pour les projets pour lesquels je ne contribue pas normalement (mais qui ont réussi à trouver un bogue qui me concerne que je veux réparer). Cependant, la rigueur d'un examen repose en grande partie sur la confiance. Si j'espère que la personne qui souhaite soumettre du code connaît bien la base de code, je ne serai pas aussi stricte que si je ne savais pas à quel point la personne connaissait la base de code.

Vatine
la source
5

Ma question est, que dois-je faire? Devrais-je l'attendre pour un examen?

Non, vous ne devriez pas rester les bras croisés. Il y a toujours quelquechose à faire. Comme Gnat l'a suggéré , il devrait y avoir une file d'attente de tâches. Ou, de manière agile, développez la liste des tâches qui vous sont assignées pour l’itération en cours. Si vous restez inactif, il y a quelque chose qui ne va pas dans l'organisation de votre entreprise ou de votre équipe.

Une autre chose est la suivante: votre supérieur hiérarchique vérifie-t-il vraiment chaque élément de code que vous utilisez? Si oui, vous pouvez aussi faire de la programmation par paire.


Je veux être libre lors du codage. Comment pourrais-je gagner la confiance pour la liberté de développement?

Il existe certaines réglementations qui exigent que senior vérifie le travail de junior (je pense que l'iso médical 62304 l'exige). Si c'est le cas, vous ne pouvez rien faire.

Ce que vous pouvez changer, c'est de demander à senior de ne pas vérifier littéralement tout. Vous pouvez définir le processus de révision du code et vérifier les choses importantes.

BЈовић
la source
3

Utilisez git localement, validez vos modifications dans une branche et démarrez la tâche 2 pendant que vous attendez. Ensuite, une fois terminé, vous pourrez fusionner ses modifications dans votre nouveau travail et vous êtes déjà en avance sur la courbe pour la tâche suivante.

Faites-le assez longtemps et très bientôt, il peut examiner 2 choses ou plus en une seule fois. Choisissez des éléments où les lignes ne risquent pas de se chevaucher pour minimiser les conflits.

codeur de bateau
la source
2

Une solution à ce problème pourrait être d'impliquer le développeur senior beaucoup plus tôt par Pair Programming dans votre travail.

Page Wikipedia sur la programmation en binôme

L'avantage le plus évident pour vous serait que l'examen se produise beaucoup plus tôt dans le processus, vous évitant ainsi d'attendre le développeur principal.

En plus de cela, vous serez en mesure de voir les processus de pensée et les techniques du développeur principal au moment où il écrit le code, et d'apprendre de cela.

Vous pouvez avoir le problème du développeur principal peut ne pas vouloir jumeler avec vous. Cela peut être difficile, mais ma propre expérience est que les développeurs seniors et juniors gagnent beaucoup d’expérience grâce à la programmation en binôme.

Il est également souvent inquiétant de voir deux développeurs travailler sur le même travail et réduire de moitié leur productivité. Il est difficile de mesurer l'incidence de la programmation par paire sur la productivité. La réponse la plus courante que j'ai entendue est que la productivité des équipes qui travaillent en paire et de celles qui ne le font pas est à peu près la même. (Si quelqu'un a de bonnes recherches à ce sujet, j'aimerais en entendre parler)

Andy Lowry
la source
2

Pas une réponse complète en soi, juste un ajout aux excellentes réponses ci-dessus ...

Passez-vous en revue votre propre code avant de l'enregistrer? Je sais que ce n'est pas le plus amusant, mais j'essaie de me faire faire la plupart du temps. Je fais de la programmation professionnelle depuis 20 ans (34 ans au total), mais je trouve généralement au moins un bogue et / ou une chose que j'ai oubliée ou que du moins je pourrais améliorer. Je suis d'accord avec le sentiment que votre code doit toujours être révisé et qu'un deuxième jeu d'yeux vaut mieux qu'une paire. Mais même la même paire qui passe deux fois sur le code est préférable à une fois.

Est-ce que vous écrivez des tests unitaires pour votre code? En plus des tests unitaires, j'ai également un petit script shell qui recherche les erreurs les plus courantes que je fais personnellement. La grammaire anglaise et l’orthographe sont au nombre des problèmes de codage que le compilateur ne comprend pas. Je le lance avant de vérifier les gros changements par courtoisie envers tout le monde en aval.

Normalement, je laisse les gens écrire leur code et parfois m'en plaindre plus tard, mais je ne vérifie pas chaque enregistrement. Une fois, j'ai travaillé avec un programmeur très junior dont le code devait être révisé et annulé en général parce qu'il faisait beaucoup d'erreurs. Cela n'a pas bien fini. Vous travaillez dans une profession où il est souvent plus important de bien faire les choses que de le faire à temps. Si vous apprenez de vos erreurs, vous irez loin.

Si vous pouvez réduire le nombre de modifications que votre relecteur doit apporter à votre code, vous maximisez les chances qu'il vous fasse confiance pour écrire du code qui n'a pas toujours besoin d'être révisé avec autant de soin. Si vous voulez éviter les critiques, prenez la responsabilité maximale de la qualité de votre propre production.

Certaines ou toutes ces suggestions pourraient être faites en attendant que quelqu'un d'autre examine votre code.

GlenPeterson
la source
1

Je pense que passer en revue les codes manuels est ... bien ... un peu plus de 80 ans. Eh bien, peut-être 90.

En cette ère moderne d'intégration continue et de systèmes de révision de code en ligne, vous ne voulez vraiment pas retenir les validations de code simplement parce que vous craignez que "cela ne casse le contrôle de source".

Allez. C'est à quoi servent les changeset (ou les listes de modifications). Vous faites que vos programmeurs nourrissent les gueux affamés de votre système de contrôle de source. Ensuite, votre serveur d’intégration continue s’engage dans une litanie de builds ciblés (enfin, espérons-le, juste le build quotidien, mais certains d’entre nous s’emportent). Si quelque chose se brise, placez le trophée de code-singe (généralement un jouet en plastique trouvé dans une boîte de céréales Lucky Charms) sur le bureau de l'auteur du crime et annulez la liste des changements brusques. Certains systèmes d’intégration continue diffusent automatiquement les notifications par courrier électronique / messagerie instantanée / poste de travail à tous les membres de l’équipe / du service / de l’organisation signalant la rupture de la construction, ainsi qu’un hyperlien astucieux pour montrer à tous ceux qui ont cassé exactement la construction dans quel fichier ou test. C'est maintenant le malheureux programmeur '

À mesure que ce processus s'exécute, le système de révision de code se déclenche (à nouveau, à la suite de l'enregistrement). Une liste de membres qualifiés de l'équipe est informée de la validation de la liste de modifications dans le contrôle de source, une révision est lancée dans le système de révision et tout le monde commence à annoter les modifications apportées à la liste de modifications. Espérons que tout le monde dira "LGTM". Si le programmeur est intelligent, il se souviendra de prier / soudoyer / cacher. En cas de problème grave, les réviseurs peuvent créer un défaut (qui peut être connecté au système de suivi des bogues) ou même exiger que la liste de modifications soit supprimée. Oui, les changements annulés blessent non seulement l'ego, mais l'esprit, c'est vrai. Il est bon pour les développeurs débutants de réintégrer les listes de modifications rejetées.

Si votre environnement de développement manque d'un CI ou d'un système de révision de code, vous devez les étudier sérieusement. Quelques liens pourraient vous aider:

Atlassian Crucible
JetBrains TeamCity
Contrôle de croisière reitveld

Si vous souhaitez obtenir un serveur CI, vous devriez également réfléchir sérieusement aux frameworks de test unitaire. Si vous êtes un développeur C #, cherchez quelque chose comme NUnit pour commencer.

code4life
la source
Je ne sais pas qui a voté contre cette réponse, mais je ne suis pas d'accord avec lui. Je suis tout à fait d'accord avec code4life sur le fait que la révision du code doit être effectuée à partir du contrôle de code source, et non à partir d'une copie locale. Un changement qui prend un jour à compléter doit être validé tous les jours, peut-être dans une succursale, mais toujours au quotidien. À partir de là, la révision de code peut être effectuée sur les modifications partielles et les tests CI, quotidiens de construction et d'intégration peuvent être appliqués à cette branche lorsqu'elle devient suffisamment stable.
Jfg956
Ouaip. Et les critiques de code sont effectuées contre une liste de modifications ces jours-ci. Les listes de modifications rejetées sont supprimées (c'est l'option nucléaire) ou des défauts sont signalés. Nous voulons lancer les commits contre les CI le plus tôt possible, selon le code complet de McConnell.
code4life
Je suppose que celui qui a voté contre la réponse n'a pas lu la première ligne. Je pense que la première ligne est un peu trompeuse.
Vitalik
LOL, eh bien, les années 2010 ... c'est l'ère du TDAH-ism ...!
code4life
Premièrement: pourquoi introduisez-vous un nouveau mot " révision manuelle du code"? À quoi ressemblerait une révision de code automatisée? À ma connaissance, la révision du code est manuelle. Une personne lit en code pour confirmer qu’elle fait exactement ce qu’elle est censée faire (rien de moins et rien de plus). Toute automatisation telle que les peluches ou les tests automatisés ne constitue pas une révision de code. (à suivre ...)
essayer-rattraper-finalement
-1

Vous lui dites à l'avance quand votre code sera prêt, pas au moment où c'est fait. Vous devriez pouvoir déterminer que ca. une semaine à venir. Cela lui donne le temps de préparer et de planifier l’examen de manière à ce qu’il s’intègre à la fois dans votre planification.

Jan Doggen
la source