Vous savez comment cela se passe: il existe une petite tâche répétitive pour laquelle vous avez trouvé un moyen d'automatiser rapidement 95% du travail. Vous créez un script, exécutez-le, corrige manuellement la sortie et vous avez terminé. Bien sûr, vous ne validez pas le script, car il ne correspond pas aux exigences de la qualité de l'entreprise (il n'a pas de documentation, ni de tests).
Quelque temps plus tard, vous voyez un collègue travaillant sur une tâche similaire. Tu vas "Hey! J'ai fait un script pour ça. Laissez-moi regarder ça. [Looks] Oh, il fut stocké sur mon ordinateur portable précédent, donc je ne l'ai plus. Dommage."
Ces scripts peuvent souvent économiser beaucoup de temps et, comme leader de l'équipe, je voudrais qu'ils soient stockés dans la version de la version. Cependant, si j'impose les mêmes normes rigoureuses que le reste de la base de code à ces scripts, j'ai bien peur que la plupart des développeurs ne les empêcheront.
La seule autre option que je peux trouver est de laisser les développeurs stocker les scripts dans une partie particulière du contrôle de la version, dans lequel il n'y a pas de contrôle de qualité (beaucoup comme GitHub Gists). Le risque est que d'autres ne pourront pas utiliser le code car ils ne peuvent ni trouver ni comprendre.
Comment ce problème pourrait-il être résolu? Ou ne devrait-il pas être résolu?
Je ressens ta douleur. Je dirais avoir une partie distincte de votre repo est probablement la possibilité de stocker ces scripts. Cependant, cela ne résout que une partie du problème. Vous les avez maintenant stockés quelque part, mais aucun bon moyen pour vos collègues de savoir qu'ils sont là.
Dans mon expérience en tant que consultant pour une entreprise où les scripts sont abondants et écrits pour différents clients et généralement sur place, découvrez ce qui est déjà là!
Vous devriez trouver un moyen de partager ce que vous avez construit.
Dans notre société, comme nous ne sommes pas si gros, nous vérifions des choses comme des scripts dans notre repo, mais envoyez également un courrier électronique à l'échelle de la société pour informer nos collègues d'une nouvelle solution. De cette façon, au moins tout le monde sait ce qui est déjà là-bas et à qui contacter doit en avoir besoin.
Je commencerais d'abord en disant que si vos développeurs hésitent à contribuer au code en raison de vos normes, vos normes sont trop rigoureuses ou que vous devriez améliorer l'éthique de qualité et de travail de vos développeurs. Si ce sont de petits scripts, il ne devrait pas y avoir beaucoup d'effort supplémentaire nécessaire pour mettre quelques commentaires dans. Les développeurs doivent écrire du code lisible par défaut, et s'ils ne sont pas, votre vrai problème réside dans votre dotation.
Pour répondre à votre question, vous avez quelques options:
cli/
répertoire contenant une poignée de scripts de ligne de commande, généralement destiné à exécuter un seul éteint pour initialiser les environnements, importer certaines pièces de données, etc.Avec l'une des deux premières options, vous pouvez choisir d'adopter plus de normes de codage laxyse sur l'autre référentiel ou dans le répertoire.
Commencez à formaliser vos processus.
Vous ne donnez pas de nombreuses indices à ce que ces scripts sont utilisés, mais je suppose que vous avez diverses tâches de déploiement et de maintenance, ou des corrections de données communes qui sont remises aux développeurs à faire parce qu'elles sont celles avec suffisamment de connaissances pour réparer des choses?
Vous devriez essayer de devenir plus professionnel à ce sujet.
L'objectif est de rendre le processus purement une fonction Rote que quiconque peut faire en suivant le document ou en exécutant l'outil.
Ensuite, vous pouvez déplacer vos développeurs sur des fonctionnalités d'écriture pour votre produit et embaucher du personnel de soutien pour traiter des problèmes quotidiens
Presque tout script peut avoir un potentiel de réutilisation d'une manière ou d'une autre. Mais ce potentiel ne sera pas apparent initialement - ce qui est exactement pourquoi il est considéré comme jetable à l'époque.
Offrez à votre équipe la solution de référentialité GITUB GIST - sans contrôle de qualité, pour encourager son utilisation et prévenir la perte de ce potentiel.
Mais aussi avoir un ou plusieurs référentiels pour des outils/utilitaires partagés, avec un contrôle de la qualité approprié en place.
Ce n'est que lorsque les scripts stockés dans ce référentiel de jeton sont référencés leur potentiel de réutilisation commence à démêler. C'est à ce moment que la réutilisation formalisée devrait lancer un coup d'œil, soit par des développeurs individuels reconnaissant ce potentiel ou par vous si les références se produisent dans un contexte d'équipe. Cela peut arriver à la toute première référence, ou peut-être à la suite des suivantes (c'est-à-dire lorsque le potentiel de réutilisation est confirmé pour être plus élevé), en fonction de la capacité, du calendrier, de la charge, etc. de l'équipe,.
Le risque est que d'autres ne pourront pas utiliser le code car ils ne peuvent ni trouver ni comprendre.
La référence elle-même prend soin du problème find
. L'auteur du script et/ou de la personne qui effectue la référence pourrait être capable d'aider avec le problème understand
problème. Sinon, le potentiel de réutilisation n'est pas vraiment là ou de la compréhension, le code ne ferait que partie de l'effort/coût de réutilisation formalisé.
Une fois partagé, l'effort de réutilisation formalisé devrait aller sur l'écran radar de l'équipe et le résultat devrait éventuellement atterrir dans le référentiel d'outils/utilitaires partagés. C'est à ce moment-là le (s) script de jet d'équivalent à partir duquel l'origine de la réutilisation peut être supprimée (si leur potentiel était épuisé).
Se concentrer spécifiquement sur le code mal écrit mais fonctionnel; Il existe un argument très fort pour ne pas les mettre dans un référentiel.
J'ai une collection d'extraits dans mon dossier Dropbox personnel. Il contient des choses que je trouve utiles:
Pourtant:
Pendant que j'utilise toujours ces extraits régulièrement lorsque j'ai besoin de mettre en œuvre rapidement quelque chose, ils ne sont nullement réutilisables ni bien construits. Il y a de nombreuses raisons pour lesquelles cela ne peut pas être mis dans le contrôle de la version de notre société:
Mais le trait le plus communément partagé de tous ces extraits:
Ces extraits sont bons pour moi à utiliser, car je me souviens personnellement de ce qu'ils ont été utilisés, comment les utiliser et tous les pièges que j'ai rencontrés.
[.
Les extraits ne sont qu'une extension de mon expérience en tant que développeur. Sans moi, ces extraits sont des ordures. Je n'utilise que les extraits parce que je ne suis pas capable de me souvenir d'une syntaxe de classe entière jusqu'au dernier caractère. Mais je me souviens de l'intention et des pièges, même longtemps après avoir utilisé la dernière fois l'extrait.
Pensez-y de cette façon:
Le ruban adhésif est incroyablement polyvalent, il peut résoudre de nombreux problèmes. Cependant, les choses qui ont été résolues en utilisant du ruban adhésif sont généralement considérées comme disgracieuses. Si Ikea devait inclure du ruban adhésif dans tous ses paquets plats, alors qu'il peut aider certaines personnes qui en ont besoin, cela ferait également une déclaration forte sur la confiance de l'IKEA dans la qualité des meubles qu'ils vous ont vendus.
Pour la même raison, les entreprises ne doivent pas permettre des extraits de hacky dans leur contrôle de version, car il appelle la qualité du produit global en question.