Wie sollten Fähigkeiten über Teams verteilt werden?


9

Nach der Lektüre diesesIch habe gesehen, dass es offenbar viele Meinungsverschiedenheiten darüber gibt, wie agile Teams innerhalb einer Gruppe von Entwicklern mit unterschiedlichen Fähigkeiten (auch bekannt als fast alle Teams) strukturiert werden sollten. Sollten die besten Entwickler in ihre eigenen Teams aufgenommen werden und die Arbeit mit der höchsten Priorität erhalten? Dies wird so ziemlich sicherstellen, dass die wichtigsten Aufgaben erledigt werden. Gleichzeitig bleiben Ihnen dann die "weniger als perfekten" Teams übrig, die an anderer Stelle technische Schulden machen, selbst wenn es sich nur um Aufgaben mit niedriger Priorität handelt. Auf der anderen Seite könnten gleichmäßig verteilte Teams den Vorteil haben, dass Ihre nacheilenden Entwickler ein bisschen besser werden, aber das Potenzial haben, Ihre schwersten Spieler zu demotivieren. Wenn Sie eine Reihe guter Designmuster mit einer Reihe schrecklicher Anti-Muster mischen, können Sie auch wirklich etwas finden, das genauso gut eine Reihe von Anti-Mustern sein kann.



@Lott Ähnlich, aber das bezieht sich darauf, einen übermäßig dominanten Entwickler in Schach zu halten, wenn ich mich richtig erinnere.
Morgan Herlocker

2
Mit den meisten anständigen Charaktersystemen können Sie Talentpunkte regelmäßig neu verteilen.
FrustratedWithFormsDesigner

1
Entschuldigung, heutzutage zu viel Mass Effect 2 (und andere Spiele). : P
FrustratedWithFormsDesigner

Antworten:


11

Es gibt einige bekannte Risiken bei A-Teams, aber wenn die Dynamik stimmt, denke ich, würde ich meine stärksten Mitarbeiter zusammen mit den Junior-Entwicklern mit dem größten Potenzial für die wichtigsten Projekte einsetzen. Für Ihre Projekte mit niedrigerer Priorität benötigen Sie einen guten Teamleiter, wenn dies überhaupt möglich ist, damit sie nicht zu weit von den Schienen geraten. Technische Schulden werden passieren, egal was passiert. Nicht alle technischen Schulden sind gleich; Die Kosten / Haftung für technische Schulden stehen in erster Linie im Verhältnis zum Geschäftswert des Projekts. Während Ihre Projekte mit niedrigerer Priorität möglicherweise mehr Warzen aufweisen, sind die Kosten für diese Projekte wahrscheinlich immer noch viel geringer als bei erheblichen Problemen bei Projekten mit hoher Priorität Sein.


7

Ich erinnere mich, als ich an der Uni war, erzählte uns einer unserer Professoren eine Anekdote über Teamstrukturen (ich habe nach dem Artikel gesucht, über den er gerade sprach, aber ich kann ihn scheinbar nicht finden).

Grundsätzlich ging die Geschichte wie folgt:

Eine Gruppe von Programmierern wurde je nach Fähigkeit in Gruppen aufgeteilt, wobei die schlechtesten x Programmierer zusammen gruppiert, die nächsten x zusammen gruppiert usw. und die allerbesten zusammen gruppiert wurden.

Ihnen wurde alle dieselbe Aufgabe zugewiesen und sie erhielten einen festgelegten Zeitrahmen, um sie zu erledigen.

Am Ende des Zeitrahmens untersuchten die Organisatoren die Lösungen für die Aufgaben und stellten zu ihrer Überraschung fest, dass die leistungsstärkste Lösung von einem Team aus Durchschnittsbürgern stammte. Im Gegensatz dazu hat das Team aus den A * -Programmierern eine der schlechtesten Lösungen entwickelt, weil sie ihre ganze Zeit damit verbracht haben, über die beste Lösung zu streiten .

Wenn Sie ein Team brauchen, das Dinge erledigt, bekommen Sie ein paar durchschnittliche Leute und einen dominanten Mann, der führen kann, war das Ergebnis der Studie (wenn ich mich richtig erinnere), sonst verbringen die dominanteren Mitglieder mehr Zeit mit Kämpfen als mit dem Erhalten Sachen gemacht!


1
Ja, dies ist eines der Hauptprobleme des A-Teams, aber die Schlussfolgerung, dass es allgemein für alle auf dieser Studie basierenden Teams gilt, wäre ein Fehler.
Jeremy

Einverstanden: Nicht jeder ist gleich, und gleichwertige Gruppen haben nicht die gleiche Dynamik, aber es ist trotzdem eine gute Anekdote!
Ed James

1
Nun, stellen Sie eine Reihe von Entwicklern zusammen, die alle nur Pfadfindungsalgorithmen schreiben, und das bekommen Sie ...
Steven Evers

lol - Sie können das Papier höchstwahrscheinlich nicht finden, weil der Professor die Geschichte gerade vor Ort erfunden hat. ;-)
Steven A. Lowe

Das würde mich nicht überraschen: D
Ed James

3

Die überwiegende Mehrheit der unerfahrenen Entwickler ist möglicherweise nicht in der Lage, selbst robuste, elegante Designs zu entwickeln, aber sie können diese erkennen und verstehen, wenn sie eines sehen. Wenn sie nicht können, fehlt ihnen normalerweise entweder die Fähigkeit oder die Vorbereitung, überhaupt eingestellt worden zu sein.

Es gibt auch einige erfahrene Entwickler, die in der Lage sind, sehr komplexe Software-Designs zu verstehen, aber nicht die Diskretion haben, zu wissen, wann etwas Einfacheres besser wäre.

Nach meiner Erfahrung haben Sie normalerweise nur dauerhafte Probleme mit gemischten Teams, wenn sie unvorbereitete Mitglieder, unnötig komplexe Mitglieder oder beides enthalten. Andernfalls können Probleme Ihres Teams in der Regel durch eine bessere Kommunikation oder die Zuweisung geeigneter Rollen behoben werden.


Ich kann nur aus Ihrem ersten Absatz annehmen, dass Sie nicht in einer Umgebung arbeiten, in der die Nachfrage nach Entwicklern das Angebot übersteigt. Viele von uns tun es. :-)
Carson63000

3

Die Gruppierung der besten Mitarbeiter zu einem einzigen Team kann wie eine großartige kurzfristige Lösung aussehen, ist jedoch langfristig ein Fehlschlag und verursacht zusätzliche Kosten. Zum Beispiel zieht es mein Unternehmen vor, wenn Menschen von ihren erfahreneren Kollegen lernen, anstatt für Schulungen zu bezahlen. Wenn Sie die besten Leute trennen, können sie kein Wissen an weniger qualifizierte Leute weitergeben. Kurzfristig können Ihre besten Teams gute Leistungen erbringen, aber aufgrund fehlender Wissenstransfers wird die Anzahl der Fachkräfte nicht zunehmen. Es ist viel besser, zu Beginn ein weniger leistungsfähiges Team zu haben und die Leistung aller Teams zu steigern, wenn die Mitarbeiter besser ausgebildet sind.

Was passiert außerdem, wenn Fachkräfte sich entscheiden, das Unternehmen zu verlassen? Wer wird ihre Projekte übernehmen?

Ein weiterer Punkt ist, dass das Team aus Personen mit unterschiedlichen Fähigkeiten bestehen sollte. Sie werden immer einfache Aufgaben (und langweilige Aufgaben) haben, die zu teuer sind, um von den erfahrensten Entwicklern ausgeführt zu werden.


3

Diejenigen, die nicht unterrichten können, tun ...

Ich denke, es gibt noch mehr Faktoren zu berücksichtigen.

Sie erhalten den größten Nutzen, wenn Sie diejenigen verteilen, die als Teamleiter unterrichten können. Sie können die anderen Mitglieder des Teams unterrichten und dabei helfen, die Qualität ihrer Arbeit zu verbessern.

Nicht alle erfahrenen Programmierer werden gute Leads machen. Diese Fähigkeit, Informationen zu kommunizieren, ist eine Fähigkeit für sich. Diese Fähigkeit entwickelt sich nicht durch Programmiererfahrung. Es entwickelt sich durch Lehren und Erklären.


Ich stimme zu, aber gleichzeitig können Sie aus dem Code anderer Entwickler lernen. Wenn leitende Entwickler nicht Teil Ihres Teams sind, können Sie auf diese Weise nicht von ihnen lernen.
Ladislav Mrnka

@Ladislav Mrnka: Ich sage nicht, dass Sie leitende Entwickler nicht auf verschiedene Teams verteilen sollten. Die Fähigkeit, aus Code zu lernen, ist unterschiedlich. Dies setzt auch voraus, dass Entwickler sich die Zeit nehmen, um aus Code zu lernen, was viele nicht tun.
Dietbuddha

2

Das Zuweisen eines A-Teams hat zwei wichtige Probleme. Erstens ist die Kompatibilität. Teams zu haben, die gut miteinander auskommen und zusammenarbeiten, ist weitaus wichtiger als ihre "Fähigkeit". Dies können nun zwei Programmierer mit "hohen" Fähigkeiten, zwei Programmierer mit "niedrigen" Fähigkeiten oder eine Mischung sein. Die Tatsache, dass sie gut zusammenarbeiten können, bedeutet, dass sie produktiver sind.

Die zweite Ausgabe befasst sich mit Wachstum. Zwei Programmierer mit "geringen" Fähigkeiten werden außer schlechten Gewohnheiten nicht viel voneinander lernen. Ebenso werden zwei "hochqualifizierte Programmierer" nicht viel voneinander lernen. Das Mischen von "niedrigen" und hohen "Fertigkeiten hilft jedoch dabei, die Fähigkeiten der" niedrigen "Fertigkeiten zu verbessern. Sie verbessert auch die Fähigkeiten der" hohen "Fertigkeiten. Wie? Wenn Sie versuchen, ein Fach zu unterrichten, werden Sie schnell Ihre Schwachstellen darin finden Ich habe eine Fertigkeit erst dann als "beherrscht" angesehen, wenn Sie sie jemand anderem beibringen können.


1

Von der anderen Seite der Medaille halte ich es für sinnvoll, Teams zu halten, die miteinander "mithalten" können. Ihre Programmierer vom Typ A-Team möchten nicht auf die B-Team-Typen warten, um ihre Aufgaben zu erledigen. Ihre B-Team-Typen werden möglicherweise durch den Workflow im A-Team-Stil angedeutet.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.