Nous avons un concept selon lequel tout le code d'une demande Pull dans le maître doit être prêt pour la production. Cela a du sens et est une déclaration juste à mon avis.
L'idée ici est qu'une fois que vous avez créé le PR, vous déclarez que vous auriez mis cela dans le maître, mais que certains examinateurs `` approuvent '' simplement et repèrent tout ce que vous manquez.
Comme nous ne sommes qu'humains, nous commettons des erreurs et espérons que d'autres examinateurs pourraient trouver des éléments que les tests unitaires n'ont pas pu trouver - fautes d'orthographe, javadocs incorrects, etc.
MAIS, est une demande Pull l'endroit où nous devrions fournir un certain niveau d'assistance / formation aux développeurs et si oui, à quel niveau?
Chaque fois que vous introduisez de nouvelles modifications, les réviseurs doivent réexaminer vos modifications, ce qui prend de leur temps de développement et entraîne une nouvelle révision des modifications.
Alors, combien de formation est attendue, devrait être autorisée, dans les demandes de tirage? Une partie de moi pense que cela varie des juniors aux seniors. Cependant, je pense également que cela ne devrait pas être le lieu de trouver de grandes quantités de problèmes - même pour les juniors.
Quelqu'un d'autre a-t-il du mal à essayer de faire en sorte que les développeurs atteignent l'objectif de "Ma demande de tirage doit être prête pour la production"?
la source
Si du code qui enfreint les principes de conception ou les normes de base de l'équipe parvient à l'étape de la demande d'extraction, il doit certainement y être adressé. Et les revues de code peuvent être un bon moyen de communiquer les normes et les pratiques de conception de l'équipe.
Mais est-ce le meilleur endroit? Voici quelques raisons pour lesquelles je dirais que non:
Les revues de programmation et de conception de paires sont des lieux privilégiés pour une rétroaction à plus grande échelle.
Cela dit, il serait encore pire de laisser passer le code par crainte que son traitement lors des révisions de code ne soit «incorrect», et il peut y avoir des circonstances (par exemple des équipes distantes) où c'est le mieux que vous puissiez faire. Dans ce cas, résolvez les problèmes dans la révision du code, et résolvez également les problèmes dans votre processus de développement qui sont arrivés jusqu'ici.
Bien que la recherche du problème lors d'une demande d'extraction ne soit pas idéale, elle est certainement meilleure que lors d'un test ou d'un problème de production.
la source
Je le dirais plus car les demandes de tirage ne devraient pas être le seul endroit où vous formez des gens. De plus, les développeurs juniors ne sont pas les seuls à avoir besoin d'une formation dans une demande de tirage. Les entrepreneurs, les contributeurs open source, les développeurs d'autres départements qui ne connaissent pas le code ou les normes locales, et même les programmeurs chevronnés ont besoin de rappels occasionnels lorsqu'ils deviennent complaisants.
Il y a très peu de frais pour maintenir une demande de pull ouverte pendant un certain temps. Donnez-lui autant ou aussi peu de commentaires que vous le souhaitez, par autant de personnes que vous le souhaitez, puis laissez-le tranquille jusqu'à ce que les auteurs vous informent à nouveau qu'ils pensent qu'il est prêt pour la fusion. Une demande d'extraction est un excellent outil central pour communiquer sur les modifications de code proposées, qu'elles soient entièrement prêtes ou nécessitent beaucoup de travail.
Certains examens des demandes de tirage s'avèrent un peu plus qu'un tampon en caoutchouc, et certains qui sont des soumissions externes à une équipe peuvent prendre un mois d'avant en arrière. Le premier type est agréable quand vous pouvez l'obtenir, mais cela ne signifie pas que le second type n'a pas de valeur. Essayer de faire en sorte que les gens soumettent des demandes de tirage parfaites tout le temps va être frustrant pour tout le monde.
la source
J'ai toujours senti que l'une des caractéristiques d'un bon responsable est une personne qui fournit la formation supplémentaire nécessaire au cours de chaque cycle de développement. Pour moi, cela signifie que je ne suis pas seulement en train de me coder ou de réviser du code, mais que je suis assis avec des développeurs plus juniors, jumelez la programmation avec eux pour les aider à éviter le genre de mines terrestres sur lesquelles j'ai marché.
Surtout, je ne me fais aucune illusion que notre objectif principal est éducatif - ce n'est pas le cas. Que vous soyez senior, lead ou développeur junior, l'objectif n'est pas votre édification. L'objectif est toujours de fournir un code de qualité au client. De préférence à temps, en respectant le budget, en faisant ce qu'ils veulent. Je reconnais, cependant, qu'il m'est impossible de faire tout le travail moi-même, il m'incombe donc de diriger pour aider tout le monde à aider l'équipe à réussir. Et cela signifie reconnaître les opportunités de formation lorsqu'elles apparaissent dans la nature.
Donc, à votre question de savoir si les demandes de tirage sont l'endroit idéal pour la formation des juniors, je dois dire qu'il n'est pas rare que des moments d'apprentissage se produisent pendant ces moments. Hé, vous allez devoir gérer votre premier conflit de fusion, revoyons cela après la revue. Oh, regardez, vous n'avez inclus aucun test unitaire pour votre DAO, nous reporterons votre examen jusqu'à ce que nous ayons eu la chance de couvrir ces nouvelles méthodes. Pourquoi pensiez-vous qu'il serait préférable d'utiliser des doubles primitives dans ce calcul financier que BigDecimals? Ouais, ce n'est pas vraiment rare.
Donc, même si je dirais que cela peut certainement se produire, mais ce n'est clairement pas l'objectif principal d'une demande de retrait. Je ne pense pas non plus que l'on s'attende à ce que le code d'une demande d'extraction soit prêt pour la production. Ce n'est souvent pas le cas.
Si vous utilisez des branches de fonctionnalités et de versions dans une stratégie de branchement de style gitflow, vos demandes d'extraction deviennent quelque chose de plus comme des versions candidates. Pas prêt pour la production, mais quelque chose de plus approximatif. Vous savez que votre code se compile (à droite) et vous disposez de suffisamment de tests pour faire une déclaration décente selon laquelle il répond aux objectifs de la user story. Et puisque vous avez déjà effectué plusieurs tests d'intégration dans votre environnement de développement, vous avez une grande démo prête à l'emploi si l'on vous demande de démontrer vos modifications, ce que vous ferez, lors de la révision de votre PR.
En fin de compte, je pense que nous devrions fournir une assistance lors des révisions du PR, mais cette assistance ne concerne pas le codage général. Au lieu de cela, il est associé à la préparation du code proposé pour l'inclusion avec une base de travail de code de qualité de production. Le PR est une opportunité pour les développeurs de démontrer qu'ils ont une justification et une solide compréhension de chaque changement qu'ils ont inclus dans le PR. Et même alors - même après les avoir pesés avec des tests unitaires, des démos et des tas de questions - il n'y a toujours pas d'attente que les changements proposés soient prêts pour la production.
Le code est proche après tout ça. Mais ensuite, nous avons laissé QA le torturer.
la source
Je tiens à remercier tout le monde pour leur contribution et à m'aider à comprendre ce que les gens ont à dire sur ce sujet.
C'est ma réponse après les commentaires donnés et ma compréhension maintenant basée sur les réponses et commentaires reçus. Merci tout le monde.
Sommaire
la source
Pouvez-vous nous en dire plus sur votre culture d'entreprise en termes d'équipes techniques? Si vous avez du mal à l'idée que le code soit prêt pour la production lorsqu'un développeur souhaite fusionner avec la ligne principale, que dites-vous vraiment à vos développeurs? Vous leur dites que lorsque leur travail est "terminé", ça va si ça ne marche pas? Ça va si ça casse le système? S'ils ajoutent de la dette technique, c'est peut-être bien s'ils peuvent le justifier et sont conscients de ce qu'ils font, et montrer qu'ils peuvent revenir et refaire le refactoring plus tard. Mais s'ils ignorent pourquoi ils font quelque chose de dangereux, combien de fois allez-vous le laisser passer?
Si vous avez un développeur junior, leurs premières demandes d'extraction auront évidemment des problèmes. Finalement, ils devraient comprendre. Si vous constatez qu'ils continuent d'avoir des problèmes, vous leur attribuez peut-être un travail pour lequel ils ne sont pas encore prêts?
Ou peut-être devez-vous engager un remplaçant junior et licencier celui qui n'a pas pu le comprendre?
Tu sais ce que j'ai vu? Les gens qui ne sont pas des développeurs compétents continuent de travailler dans une entreprise pendant des années simplement à cause du népotisme. Donc, bien sûr, leurs demandes d'extraction nécessitent plusieurs examens. Dans le langage Lean, ce sont des «déchets» - un frein à l'équipe et un frein à la ligne du bas.
Vous devez donc décider par vous-même: combien de demandes de tirage faudra-t-il pour que vos juniors montrent leur compétence, et avez-vous le courage de laisser aller ceux qui ne le font pas?
la source