Les environnements de développement hétérogènes présentent-ils un avantage?

10

Je travaille avec une équipe de développeurs qui ont le choix quant au matériel et aux logiciels qu'ils exécutent. Notre sentiment est que ce scénario nous permet de voir une grande variété de systèmes cibles avant de tester le test. D'après notre expérience, nous trouvons un certain nombre de problèmes étranges dans différents navigateurs et systèmes d'exploitation peu de temps après l'introduction du problème. Mais ce n'est qu'une expérience d'un groupe.

Cette variété de systèmes est difficile pour nos équipes d'infrastructure et de sécurité, elle apparaît donc souvent comme un problème.

Est-il plus avantageux d'avoir des environnements de développement homogènes ou hétérogènes au sein d'une équipe de développeurs?

Ben
la source
1
La plupart des problèmes de développement de logiciels comme celui-ci ne font pas l'objet de recherches faisant autorité. Si vous cherchez un moyen de convaincre vos supérieurs ou vos collègues, vous devez trouver un autre moyen de le faire. Cela dit, jetez un œil ici: netlib.org/utk/papers/practical-hetro/node2.html
Robert Harvey
Je pense que cela vaut la peine de tester votre groupe par vous-même De cette façon, vous pouvez voir si vous maintenez les avantages pour le développeur lorsqu'il est nécessaire d'utiliser un environnement homogène et déterminer si vous bénéficiez des avantages en matière de sécurité et d'infrastructure que ces équipes prétendent obtenir. Non pas que ces choses soient simples, mais trouver de bons programmeurs est difficile et coûteux, donc je ne sais pas si ces autres équipes qui veulent améliorer leurs domaines ne sont vraiment que la queue qui remue le chien.
JeffO
1
Une excellente question à laquelle il faut finalement répondre par des exigences produit / service et une gestion familiarisée avec les avantages et les coûts de l'hétérogénéité que vous avez décrite. D'après mon expérience, la diversité inutile a tendance à augmenter les coûts, en particulier lorsqu'il s'agit de la distraction intéressante des exigences autrement ennuyeuses. Et il y a le coût du maintien de la diversité technologique une fois que ses créateurs partent pour un autre défi. Je m'intéresse également aux études de cas connexes. +1
bvj
6
De nombreux magasins à succès laissent la sécurité et l'infrastructure de développement aux développeurs. Vous soumettez du code évalué par des pairs à un référentiel et cela n'a aucune importance si votre ordinateur portable est piraté car nous savons que votre source est propre. Nous pouvons le faire parce que nous ne vous faisons pas plus confiance que celui qui a piraté votre ordinateur portable. Mais parce que nous travaillons de cette façon, vous pouvez avoir root. J'ai travaillé dans les deux sens. Je préfère avoir racine. L'avantage d'un développement hétérogène est donc que c'est un point douloureux pour les gens qui essaient de prendre ma racine.
candied_orange
2
Je dirais que le fait même que votre équipe semble préférer pouvoir choisir ses propres environnements est un avantage dans une certaine mesure

Réponses:

3

L'un des avantages est que vous rencontrez et devez résoudre les problèmes de compatibilité et de divergence entre plates-formes au début du processus de développement. Tout le monde est habitué à faire face à ces clés à molette et à ces obstacles.

Vous voyez également l'inconvénient d'une telle divergence: l'environnement est plus difficile à configurer, à maintenir, à sécuriser et à développer en raison de ces divergences. Tout le monde doit travailler tôt et souvent sur des questions de divergence. Lâcher le Chaos Monkey au départ peut être une distraction considérable pour faire des progrès.

D'après mon expérience, les problèmes de divergence ne valent pas l'effort, sauf si vous travaillez très spécifiquement sur un produit qui doit être éminemment multiplateforme. Mais, c'est un jugement qui doit être fait par différentes équipes. Je préfère avoir au moins un minimum de similitude au sein de mes équipes de projet, mais la réalité est que c'est un désir plutôt que quelque chose que je peux imposer. Certaines personnes ont et utilisent Windows, d'autres macOS, d'autres un peu de Linux. Multipliez cette fois tous les outils que les développeurs pourraient vouloir utiliser.

Vous pouvez définir certaines normes de projet de base comme Python 3.5, PostgreSQL 9.5+, le pipeline d'actifs basé sur gulp, git, Github, les branches rebasées, ... auxquelles tout le monde doit se conformer. Cela permet de réduire la divergence, donc le temps / l'effort requis pour l'adapter et la brouiller. Plus votre entreprise est structurée et verrouillée, plus vous pouvez insister sur la normalisation et la similitude. Les développeurs, cependant, ont tendance à être les chats métaphoriques inséparables. Donc, garder la divergence "jusqu'à un rugissement sourd" est souvent le mieux que vous puissiez faire.

Jonathan Eunice
la source
Je ne pense pas que ce soit une bonne réponse, car le PO a explicitement posé des questions sur certaines recherches et documents, et non sur une opinion personnelle.
KjMag
1
@KjMag Vous êtes le bienvenu à votre avis. C'est une question qui m'a été posée à titre professionnel à plusieurs reprises au fil des ans, y compris par des équipes d'entreprises et gouvernementales qui payaient bien pour entendre une réponse. Les sites Stack Exchange sont fondamentalement configurés pour collecter et partager des expériences issues de la foule. C'est à moi. Si vous voulez faire une recherche de rapport de recherche complète et publier votre bibliographie, rendez-vous sur.
Jonathan Eunice
@KjMag demander des recherches et des articles est hors sujet ici et je l'ai édité hors de question. Cette réponse bénéficierait de certains liens externes, mais est autosuffisante et «utile».