Avant de poser ma question, je dois expliquer la situation.
Je travaille pour une entreprise comme ingénieur logiciel junior. L'un des aînés m'arrête toujours quand j'ai terminé mon développement et que j'ai envie de commettre.
Il veut toujours que je attendais qu'il l'examine. C'est bon, car il trouve généralement des bugs et fait certaines optimisations.
Cependant, je dois commettre mon code avant la date limite. Quand j'ai fini, je l'appelle et dis que c'est fini. Il vient généralement tard. 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 problème de plus.
Je veux être libre lors de la codage. Comment pourrais-je gagner la confiance de la liberté de développement?
certaines explications : J'en ai parlé avec lui à ce sujet. Mais ça n'a pas aidé. Nous utilisons déjà un problème de suivi, mais il n'y a aucune tâche pour les critiques. Il n'y a que des tâches de développement et de test.
Donc, mon code est en retard aussi.
Non, ce n'est pas votre code, c'est le code de vous et le Senior. Vous travaillez en équipe, vous avez une responsabilité partagée et lorsque vous manquez une date limite, c'est la faute de vous deux. Alors assurez-vous que celui qui fait les délais notimes que. Si cette personne voit cela comme un problème aussi, il va sûrement parler à vous deux ensemble - cela peut aider plus qu'une seule conversation avec votre collègue.
Et à votre édition:
Je veux être libre lors de la codage. Comment pourrais-je gagner la confiance de la liberté de développement?
L'examen du code est l'un des plus importants épargnants de qualité. Il est pratiquement impossible d'écrire un excellent code sans une seconde paire d'yeux, même lorsque vous avez> 20 ans d'expérience en programmation. Donc, dans une bonne équipe, le code de tout le monde doit être constamment examiné - votre code de senior ainsi que votre code. Cela n'a rien à voir avec méfiance contre vous en personne (ou au moins, cela ne devrait pas). Tant que vous croyez que le "codage libre" sans une seconde paire d'yeux est meilleur, vous êtes toujours un programmeur junior.
Il y a plusieurs réponses possibles ici, en fonction de votre problème exactement.
Si votre principale préoccupation est "je manque des délais", non. Les deux d'entre vous manquent conjointement des délais. Pouvez-vous (avec confiance) dire "Je serai fait dans une heure, pouvons-nous faire le code de code alors"? Cela pourrait suffire. Pouvez-vous compléter le code la veille de la date limite? Cela devrait être un tampon abondant. Vous complétez votre code, avec beaucoup de mémoire tampon entre "Veuillez noter" et la date limite? Si ce dernier, ce n'est même pas une faute conjointe, je dirais.
Le code doit toujours être examiné. Je ne peux rien vérifier sans (au moins) un deuxième ensemble d'yeux et un autre humain qui va "ça va". Cela va pour des projets où je suis le programmeur principal ainsi que pour les projets où je ne contributions pas normalement (mais ont réussi à trouver un virus qui me touche que je veux fixe). Cependant, la rigueur d'un examen est très basée sur la confiance. Si j'espère que la personne qui souhaite soumettre le code connaît bien le code de la base, je ne serai pas aussi strict que si je ne sais pas à quel point la personne connaît la base du code.
Ma question est, que dois-je faire? Devrais-je l'attendre pour un examen?
Non, vous ne devriez pas vous asseoir de rester au ralenti. Il y a toujours quelquechose à faire. comme suggéré de gnat , il devrait y avoir une file d'attente de tâches. Ou, d'une manière agile de développement, liste des tâches qui vous sont assignées pour l'itération actuelle. Si vous êtes assis oisif, 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 superviseur senior en vérifie vraiment chaque morceau de code que vous faites? Si oui, vous pouvez également faire une programmation par paire.
Je veux être libre lors de la codage. Comment pourrais-je gagner la confiance de la liberté de développement?
Il y a des réglementations qui exigent que Senior Chèques le travail de Junior (je pense que Medical ISO 62304 l'exige). Si c'est le cas, vous ne pouvez rien faire.
Ce que vous pouvez changer, c'est demander à la senior de ne pas vérifier littéralement tout. Vous pouvez définir le processus de révision de code et vérifier les choses importantes.
Utilisez GIT localement, intègrez vos modifications à une succursale et commencez sur la tâche 2 pendant que vous attendez. Ensuite, quand il est fait, vous pouvez fusionner ses changements dans votre nouveau travail et vous êtes déjà en avance sur la courbe de la tâche suivante.
Faites cela assez long et assez bientôt, il peut examiner 2 choses ou plus à une seule séance. Choisissez des choses où les lignes sont peu susceptibles de se chevaucher pour minimiser les conflits.
Pas une réponse complète à elle seule, juste un ajout aux excellentes réponses ci-dessus ...
Avez-vous consulté votre propre code avant de le vérifier? Je sais que ce n'est pas le plus amusant, mais j'essaie de me faire faire la plupart du temps. J'ai programmé des programmes professionnels pendant 20 ans (34 ans au total), mais je trouve généralement au moins un bug et/ou une chose que j'ai oubliée, ou pourriez au moins mieux faire mieux. Je suis d'accord avec le sentiment que votre code doit toujours être revu et qu'un deuxième ensemble d'yeux vaut mieux qu'une paire. Mais même la même paire qui passe sur le code deux fois mieux est meilleure qu'une fois.
Écrivez-vous des tests d'unité 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. Certains sont la grammaire anglaise et l'orthographe, certaines sont des problèmes de codage que le compilateur ne s'approche pas. Je l'exécute avant de vérifier de gros changements comme une courtoisie à tout le monde en aval.
Je laisse normalement que les gens écrivent leur code et se plaignent parfois de cela plus tard, mais je ne passe pas en revue tous les enregistrements. Une fois, j'ai travaillé avec un programmeur très junior dont le code que je devais examiner et d'annuler habituellement parce qu'ils ont fait autant d'erreurs. Cela n'a pas bien fini bien. Vous êtes dans une profession où il est souvent plus important de le faire correctement que de faire à temps. Si vous apprenez de vos erreurs, vous allez aller loin.
Si vous pouvez minimiser le nombre de modifications dont votre critique doit apporter à votre code, vous maximisez la chance de vous faire confiance pour écrire du code qui n'a pas toujours besoin d'être examiné avec précaution. Si vous voulez la liberté d'examens, prenez la responsabilité maximale de la qualité de votre propre production.
Certaines ou toutes ces suggestions pourraient être effectuées en attendant que quelqu'un d'autre examine votre code.
Une solution à cela pourrait être d'obtenir le développeur principal impliqué beaucoup plus tôt par Paire Programmation sur votre travail.
page wikipedia sur la programmation par paire
L'avantage le plus évident pour vous serait que l'examen se produise beaucoup plus tôt dans le processus afin que vous n'ayez plus besoin d'attendre le développeur principal.
En plus de cela, vous seriez capable de voir les processus de pensée et les techniques du développeur senior lorsqu'il écrit le code et apprennent de cela.
Vous pourriez avoir le problème du développeur principal peut ne pas vouloir pair avec vous. Cela peut être difficile, mais ma propre expérience est que les développeurs seniors et juniors obtiennent une grande expérience de la programmation de paires.
Il y a aussi souvent la préoccupation que vous ferez la moitié de la productivité en ayant 2 développeurs travaillant sur le même travail. Il est difficile de mesurer ce que l'incidence sur la productivité est avec la programmation de paires, la réponse la plus courante que j'ai entendue est que la productivité des équipes qui font pair et ceux qui ne concernent pas la même chose. (Si quelqu'un connaît une bonne recherche sur ce que j'aimerais en entendre parler)
Je pense que l'exécution des critiques de code manuel est ... Eh bien ... des années 80. Eh bien, peut-être des années 90.
Dans cette ère moderne d'intégration continue et de systèmes de critiques de code en ligne, vous ne voulez vraiment pas retenir que le code s'engage simplement parce que vous avez peur que "cela puisse casser la commande de source".
Allez. C'est ce que font les changes (ou les listes de changement). Vous faites de vos programmeurs alimentant les matières affamées de votre système de contrôle source. Ensuite, votre serveur d'intégration continue frappe avec une litanie de constructions ciblées (bien, espérons-le, juste la construction quotidienne, mais certaines d'entre nous sont emportées). Si quelque chose se casse, vous mettez le trophée de singe de code (généralement un jouet en plastique que quelqu'un a trouvé dans une boîte de céréales de charmes chanceux) sur le bureau de l'auteur et roulez la liste de changement de rupture. Eh bien, certains systèmes d'intégration continue explosent automatiquement les notifications e-mail/IM/IM/Desktop à tous ceux de l'équipe/du département/organisation que la construction est cassée, avec un lien hypertexte Nifty pour montrer à tous ceux qui ont vraiment cassé la construction dans laquelle le fichier ou le test. C'est maintenant le travail du programmeur malheureux de résoudre tout ce qui a éclaté le test de compilation/de test/d'intégration de l'unité/etc.
Comme ce processus s'exécute, le système de revue de code commence (à nouveau, déclenché par l'enregistrement). Une liste de membres de l'équipe qualifiée sont informés de la liste de modifications engagée dans le contrôle de la source, un examen est lancé dans le système de révision et tout le monde commence à faire des annotations aux modifications de la liste de modifications. J'espère que tout le monde dira "LGTM". Si le programmeur est intelligent, il se souviendra de prier/de désactiver/cacher. S'il existe de sérieux problèmes, les examinateurs peuvent créer un défaut (qui peut être connecté au système de suivi des bogues), voire même que la modification de la changelle soit renvoyée. Oui, soutenu des changements blessés non seulement l'ego, mais l'esprit, c'est vrai. C'est une bonne assaisonnement sur les développeurs junior, de réintégrer des listes de changement rejetées.
Si votre environnement de développement manque de CI ou d'un système de révision de code, vous devez les enquêter sérieusement. Quelques liens pourraient vous aider:
Crucible Atlassien
[.____] JetBrains TeamCity
[.____] Reitveld
[.____] Contrôle de la croisière
Si vous obtenez un serveur CI, vous devez également penser sérieusement aux cadres de test unitaire. Si vous êtes un développement C #, regardez quelque chose comme - Nunit pour commencer.