Wie ist es, in einem großen Programmierteam zu arbeiten?

16

Ich hatte immer das Glück, in einem kleinen Programmierteam zu arbeiten. Ich denke, mit 11 Programmierern habe ich am meisten gearbeitet. Wie ist es, mit Hunderten von Entwicklern an einem Projekt zu arbeiten? Tausende? Was skaliert und was nicht?

EDIT: Danke für alle Antworten! Es scheint sehr wenige positive Aspekte zu geben:

  • möglich, auf mega-großen Codebasen zu arbeiten
  • bessere interne Karriereentwicklung
  • Schutz der Mitarbeiter vor missbräuchlichem Management

Gibt es noch andere Vorteile für große Teams?

Colin Pickard
quelle
1
Es nervt. Vermeiden Sie es um jeden Preis.
Paul Tomblin
4
Ich würde 11 als ein großes Team betrachten ... Das größte, mit dem ich je gearbeitet habe, war 3! :-)
Brian Knoblauch
Lesen Sie 'Der Monat des mythischen Mannes', um eine Perspektive zu gewinnen ... es hat mich jedoch nicht angesprochen (das meiste, mit dem ich je zusammengearbeitet habe, sind 4 andere Entwickler, plus 3 Tester und eine Uhr). Größere Teams klingen wie Treffen nach Treffen nach Treffen :(
workmad3
Genau. 11 ist ein großes Team. IMHO 3 ist das Beste.
Joshua Partogi

Antworten:

11

Ich finde Bürokratiewaagen wirklich gut.

Davon abgesehen nicht viel. Große Projekte haben große Teams, weil es keinen anderen Weg gibt, nicht weil es effizienter ist (pro Entwickler). Sie zahlen eine Gebühr, sobald Sie eine zweite Person in Bezug auf Ineffizienz (dh Wissenstransfer und Kommunikation) zum Mix hinzufügen.

Das größte Projekt, an dem ich gearbeitet habe, hatte ungefähr 70 Entwickler an 5 verschiedenen Standorten. Selbst ein Zeilenwechsel dauerte mindestens einen Tag, obwohl dies teilweise darauf zurückzuführen war, dass der Bau über eine Netzwerkverbindung von Zürich nach London mehr als 45 Minuten dauerte und das Starten der App weitere 45 Minuten dauerte. Das Einchecken dauerte ca. 5 Minuten pro Datei. Ich scherze nicht. Die Londoner Entwickler konnten dies in einem Bruchteil der Zeit tun.

Was Sie jedoch eher finden, ist, dass Sie bei großen Projekten eine Reihe von Teammitgliedern haben, mit denen Sie nicht so viel zu tun haben. Es ist eher eine lose verbundene Sammlung von Mini-Projekten. Ich habe einmal gelesen, dass die Microsoft-Entwicklung dazu tendiert, Projekte in Teams von 5 bis 7 Entwicklern aufzuteilen, selbst bei großen Projekten wie Microsoft Office.

Ein Teil des Unterschieds ist auch der Unterschied zwischen kleinen und großen Unternehmen: Größere Unternehmen haben in der Regel mehr Prozesse, mehr Regeln, weniger Flexibilität und so weiter. Das ist aber keineswegs garantiert.

Es kann jedoch gut für die berufliche Entwicklung sein. In einem kleinen Unternehmen muss jemand gehen oder sterben, bevor Sie befördert werden können (oder das Unternehmen muss so wachsen, dass das Team wächst und Sie aufsteigen), während Sie in größeren Entwicklungsabteilungen zwischen Teams usw. wechseln können.

Außerdem finden Sie manchmal einige wirklich kluge Leute, an die Sie sich binden und von denen Sie lernen können. In kleinen Unternehmen kann eine solche Isolation und Eigenständigkeit Programmierern helfen, ein bisschen "seltsam" zu werden, ein bisschen wie ein Einsiedler.


quelle
Ich habe einige dieser Strangies in meiner Zeit gesehen
Binary Worrier
2
Manchmal mache ich mir Sorgen, ich könnte einer von ihnen sein
Yisroel
1
"Ich finde Bürokratiewaagen wirklich gut." Lieben Sie diese Aussage!
HLGEM
5

Kommunikation ist das, was ich als das Größte empfunden habe, das sich mit zunehmender Größe des Teams zu verschlechtern beginnt. Es wird schwieriger, die Kommunikation zu fördern, und es wird schwieriger, sicherzustellen, dass sich immer noch alle auf derselben Seite befinden. Ich arbeite indirekt in einem Team von ungefähr 75 Entwicklern, wir verwenden eine gemeinsame Codebasis, aber viele der 75 teilen sich für einzelne "Aktivitäten" in kleinere Gruppen auf. Für uns ist die Kommunikation nur ein Albtraum.

Das Management größerer Gruppen ist auch schwieriger, da in den meisten Umgebungen nach 8-12 Teilnehmern zusätzliche Mitglieder des Managements involviert werden. Leider wird dadurch das Kommunikationsproblem nur übertrieben, da in der Regel eine Umgebung vom Typ "Silo" erstellt wird, in der die einzelnen Untergruppen abbrechen große Gruppe und versuchen, Wissen in ihrer Gruppe zu halten.

Mitchel Sellers
quelle
5

Als ich Software für Waffensysteme machte, hatten wir GROSSE Teams von Softwareentwicklern. Da sich niemand mit den Anforderungen befassen kann (von denen einige klassifiziert wurden), drehte sich alles um Teams und wie die Teams miteinander umgingen.

  1. Das Konfigurationsmanagement - der nächtliche Erstellungsprozess - war eine sehr große Sache. Damals brauchte es einen großen verteilten Computercluster, um die Welt jede Nacht neu zu kompilieren.

  2. Arbeitsgenehmigungen - und das Aufladen Ihrer Zeit auf die richtige Position im Gesamtprojektzeitplan - waren ein großes Problem. Bis zu den 0,1 Std. Schritte.

Das größte Problem war jedoch die Benachrichtigung über Änderungen. Insbesondere Schnittstellenänderungen.

Das war so wichtig, dass sie diesen verrückten zweischichtigen Prozess erfanden. Der größte Teil der Anstrengungen wurde unternommen, um sicherzustellen, dass die Anforderung der Schnittstellenänderungsbenachrichtigung (nicht die Benachrichtigung selbst, sondern die Anforderung der Benachrichtigung) eine ausgefeilte Support-Software mit einer Datenbank und Berichten und was-nicht hatte.

Sobald die Anfrage genehmigt wurde, war die eigentliche Benachrichtigung mehr oder weniger selbstverständlich. Das bedeutet, dass es sich wirklich um einen einschichtigen Prozess handelte und die Anfrage effektiv die Benachrichtigung war. Bei der Entwicklung von Wasserfällen muss jedoch lange überlegt werden, bis Entwickler auftauchen.

Bei so vielen Menschen, die parallel arbeiteten, gab es eine Konfigurationssteuerkarte. Alle verschiedenen Teammanager und eine Gruppe von Leuten, deren Aufgabe es war, Veränderungen einfach zu koordinieren.

S.Lott
quelle
4

Mein erster "richtiger" Programmierjob bestand darin, mit einer anderen Armee zusammenzuarbeiten, um internationale Flugsicherungssysteme zu entwickeln. Es war ein sehr erfolgreiches Unterfangen und wir wurden als Capability Maturity Model Level 5-Umgebung angesehen. Seitdem bin ich in mittelgroßen und kleinen Läden. Also, welcher ist der beste Ort? Persönlich würde ich jeden Tag ein kleineres Geschäft über s riesige nehmen. Während manche Level 5 als den Heiligen Gral betrachten, war es für mich erstickend. Alles muss dokumentiert, genehmigt, abgezeichnet usw. werden. Verstehen Sie mich nicht falsch, ich sehe auf jeden Fall den Wert darin, insbesondere für Systeme, die so kritisch sind wie die Flugsicherung, aber die Frage ist, wie Sie Ihr Geld ausgeben möchten Tag? Möchten Sie die Freiheit haben, sich Dinge auszudenken und sie dann umzusetzen, oder möchtest du an die anforderungen schreiben? Wäre ich länger beim ATC-System geblieben, hätte ich vielleicht das Niveau erreicht, in dem ich sowohl entwerfen als auch entwickeln konnte, aber selbst das erforderte X Jahre, Y Zulassungen, Z Promotionen - alles genau vorgeschrieben ohne die Möglichkeit einer Abweichung. Es war erstickend.

Eine letzte Sache, im Allgemeinen finde ich, dass die Qualität der Entwickler in kleineren Unternehmen viel höher ist, nur weil sie sich nicht verstecken können. Es ist nicht schwer, in einem sehr großen Unternehmen mittelmäßig zu sein, aber es wird in einem kleinen Unternehmen schmerzhaft offensichtlich und sie halten oft nicht lange an.


quelle
2

Ich habe (kurz) in einer Organisation mit mindestens Hunderten von Entwicklern gearbeitet. Aber natürlich (?) Ist die Organisation intern so aufgeteilt, dass Sie als einzelner Mitarbeiter keinen direkten Kontakt zu allen anderen haben, was sehr schwer zu bewältigen wäre.

An diesem bestimmten Ort wurde die Software in Komponenten aufgeteilt, wobei sich Teams um Komponenten bildeten. Einige Teams arbeiteten nur mit einer einzigen (großen) Komponente, während viele Teams für eine Reihe von (kleineren) Komponenten verantwortlich waren.

Dies impliziert natürlich alles, was das Arbeiten mit einer sehr großen Codebasis bewirkt. Dinge wie Konfigurationsmanagement, Erstellung, Integration usw. werden zu wichtigen, großen Dingen, die wiederum von spezialisierten Fachabteilungen erstellt werden. Und Sie bewundern sie, dass sie in der Lage sind, die Ergebnisse aller Entwicklerabteilungen zu erfassen und regelmäßig (einmal pro Woche, wo ich gearbeitet habe) alles in ein zusammenhängendes Ganzes zu integrieren, das tatsächlich funktioniert hat.

abwickeln
quelle
2

Ich habe noch nie für ein großes Team von Programmierern gearbeitet , aber das Ergebnis einer wachsenden Organisation sind normalerweise mehr Regeln. Das muss nicht immer schlecht sein! Zusätzlich zu den Regeln, die jedem das Leben schwer machen, gibt es auch weitere Regeln zum Schutz der Mitarbeiter und zur Gewährleistung eines guten Prozesses.

Ich habe gesehen, wie Manager in kleinen Organisationen mit Dingen davongekommen sind, die sie sofort von einer HR-Abteilung eines Unternehmens gekündigt hätten.

Jason Baker
quelle
2

Der einzige Unterschied, den ich bei großen Projekten festgestellt habe, ist die Büropolitik. Je größer die Projekte sind, desto dominanter ist die Politik.

Mein erstes Projekt außerhalb der Schule waren ein paar hundert Entwickler. Als übermütiger und naiver Entwickler war ich dafür wirklich nicht bereit. Das einzige, was mich gerettet hat (und es ist das einzige, was dich jemals wirklich beschützen wird), war die Menge an Freunden, die ich gemacht habe.

Das ist die größte Lektion, die ich daraus gelernt habe. Versuchen Sie, sich mit allen anzufreunden . Sogar die Idioten. Insbesondere, wenn Sie die Möglichkeit haben, für eine Minute die Arbeit zu unterbrechen und sich mit jemandem zu unterhalten, mit dem Sie noch nie zuvor gesprochen haben, tun Sie es.

TED
quelle
1

Ich habe einmal ein Jahr in einem Team mit über 500 Mitarbeitern gearbeitet, davon waren etwa 200 Entwickler. Wir haben einen EOA geliefert, der mehrere verschiedene SOA-Lösungen integriert.

In der Praxis gab es zwischen 30 und 50 Teams mit jeweils unterschiedlicher Anzahl von Programmierern (3 in unserem Team), die jeweils für einen anderen Aspekt des Gesamtergebnisses verantwortlich waren.

Das größte Team, in dem ich je gearbeitet habe, bestand aus ungefähr 15 Personen (dies war nur für 3 oder 4 Monate in einer anderen Firma). Ich war technischer Leiter des Teams und begann um 7 Uhr morgens mit der Arbeit. Ich hatte zwei Stunden Zeit, bevor alle anderen eintraten. Nur so konnte ich meine eigenen Aufgaben erledigen.

Ich würde nicht gerne in einem Team mit mehr als 8 oder 10 Entwicklern arbeiten, 15 waren viel zu viele für ein einzelnes Team (das Team hätte leicht in zwei geteilt werden können, nicht mein Aufruf, leider), 3 oder 4 Entwickler sind a IMHO schöne bequeme Größe

Binary Worrier
quelle