Gibt es einen Vorteil für heterogene Entwicklungsumgebungen?

10

Ich arbeite mit einem Team von Entwicklern zusammen, die die Wahl haben, welche Hardware und Software sie ausführen. Wir sind der Meinung, dass wir in diesem Szenario eine Vielzahl von Zielsystemen sehen können, bevor wir jemals einen Test durchführen. Wir haben die Erfahrung gemacht, dass wir kurz nach Einführung des Problems eine Reihe seltsamer Probleme in verschiedenen Browsern und Betriebssystemen feststellen. Aber das ist nur die Erfahrung einer Gruppe.

Diese Vielzahl von Systemen ist für unsere Infrastruktur- und Sicherheitsteams schwierig, daher tritt sie häufig als Problem auf.

Ist es vorteilhafter, in einem Entwicklerteam homogene oder heterogene Entwicklungsumgebungen zu haben?

Ben
quelle
1
Die meisten Softwareentwicklungsprobleme wie dieses werden nicht autoritativ untersucht. Wenn Sie nach einer Möglichkeit suchen, Ihre Vorgesetzten oder Mitarbeiter zu überzeugen, müssen Sie einen anderen Weg finden, dies zu tun. Das heißt, schauen Sie hier: netlib.org/utk/papers/practical-hetro/node2.html
Robert Harvey
Ich denke, es lohnt sich, Ihre Gruppe alleine zu testen. Auf diese Weise können Sie feststellen, ob Sie die Vorteile für den Entwickler beibehalten, wenn eine homogene Umgebung verwendet werden muss, und feststellen, ob Sie die Sicherheits- und Infrastrukturvorteile erzielen, die diese Teams für sich beanspruchen. Nicht, dass diese Dinge einfach sind, aber gute Programmierer zu finden ist schwierig und kostspielig. Ich bin mir nicht sicher, ob diese anderen Teams, die ihre Bereiche verbessern wollen, wirklich nur der Schwanz sind, mit dem der Hund wedelt.
JeffO
1
Eine ausgezeichnete Frage, die letztendlich von den Produkt- / Serviceanforderungen und dem Management beantwortet werden sollte, die mit den Vorteilen und Kosten der von Ihnen beschriebenen Heterogenität vertraut sind. Nach meiner Erfahrung erhöht die unnötige Vielfalt tendenziell die Kosten, insbesondere wenn es sich um die interessante Ablenkung von den ansonsten langweiligen Anforderungen handelt. Und es gibt die Kosten für die Aufrechterhaltung der technologischen Vielfalt, sobald die Entwickler sich einer weiteren Herausforderung stellen. Ich interessiere mich auch für verwandte Fallstudien. +1
bvj
6
Viele erfolgreiche Shops überlassen die Entwicklungssicherheit und -infrastruktur den Entwicklern. Sie senden Peer-Review-Code an ein Repository und es spielt keine Rolle, ob Ihr Laptop gehackt wird, da wir wissen, dass Ihre Quelle sauber ist. Wir können dies tun, weil wir Ihnen nicht mehr vertrauen als dem, der Ihren Laptop gehackt hat. Aber weil wir so arbeiten, können Sie root haben. Ich habe in beide Richtungen gearbeitet. Ich hätte lieber Wurzel. Der Vorteil einer heterogenen Entwicklung ist also, dass es ein Schmerzpunkt für die Menschen ist, die versuchen, meine Wurzeln zu schlagen.
candied_orange
2
Ich würde vorschlagen, dass die Tatsache, dass Ihr Team es vorzuziehen scheint, seine eigenen Umgebungen auswählen zu können, in gewissem Maße von Vorteil ist

Antworten:

3

Ein Vorteil besteht darin, dass Sie frühzeitig im Entwicklungsprozess auf plattformübergreifende Kompatibilitäts- und Divergenzprobleme stoßen und diese lösen müssen. Jeder ist es gewohnt, mit solchen Schraubenschlüsseln und Hindernissen umzugehen.

Sie sehen auch den Nachteil einer solchen Divergenz: Die Umgebung ist aufgrund dieser Divergenzen schwieriger einzurichten, zu warten, zu sichern und zu entwickeln. Jeder muss früh und häufig an Divergenzproblemen arbeiten. Das Loslassen des Chaos-Affen zu Beginn kann eine erhebliche Ablenkung von Fortschritten sein.

Nach meiner Erfahrung sind Divergenzprobleme die Mühe nicht wert, es sei denn, Sie arbeiten ganz spezifisch an einem Produkt, das unbedingt plattformübergreifend sein muss. Aber das ist ein Urteil, das verschiedene Teams für sich selbst fällen müssen. Ich bevorzuge es, in meinen Projektteams zumindest ein Minimum an Gleichheit zu haben - aber die Realität ist, dass dies eher ein Wunsch ist als etwas, das ich durchsetzen kann. Einige Leute haben und benutzen Windows, andere MacOS, andere Linux. Multiplizieren Sie diese Zeiten mit allen Tools, die Entwickler möglicherweise verwenden möchten.

Sie können einige Kernprojektstandards wie Python 3.5, PostgreSQL 9.5+, gulp-basierte Asset-Pipeline, Git, Github, neu basierte Zweige usw. festlegen, an die sich jeder anpassen muss. Dies hilft, die Divergenz zu verringern, und somit die Zeit / Mühe, die erforderlich ist, um sie aufzunehmen und zu streiten. Je mehr Unternehmen und Lock-Step Ihre Organisation ist, desto mehr Standardisierung und Gemeinsamkeit können Sie bestehen. Entwickler neigen jedoch dazu, die metaphorischen, nicht hassbaren Katzen zu sein. Daher ist es oft das Beste, was Sie praktisch tun können, wenn Sie die Divergenz "auf ein langweiliges Brüllen beschränken".

Jonathan Eunice
quelle
Ich denke nicht, dass dies eine gute Antwort ist, da das OP ausdrücklich nach einigen Forschungsergebnissen und Veröffentlichungen gefragt hat und nicht nach einer persönlichen Meinung.
KjMag
1
@KjMag Gern geschehen zu Ihrer Meinung. Dies ist eine Frage, die mir im Laufe der Jahre viele Male beruflich gestellt wurde, auch von Unternehmens- und Regierungsteams, die gut bezahlt haben, um eine Antwort zu hören. Stack Exchange-Sites sind grundsätzlich so eingerichtet, dass sie Crowd-Sourcing-Erfahrungen sammeln und austauschen. Das ist meins. Wenn Sie einen vollständigen Forschungsbericht suchen und Ihre Bibliographie veröffentlichen möchten, haben Sie unter.
Jonathan Eunice
@KjMag nach Forschung und Papieren zu fragen ist hier nicht zum Thema und ich habe das außer Frage gestellt. Diese Antwort würde von einigen externen Links profitieren, ist jedoch autark und "nützlich".