Welcher agile Prozess bringt das Team dazu, Aufgaben einzelnen Entwicklern zuzuweisen, anstatt dass Einzelpersonen Aufgaben für sich selbst zuweisen?

Entwickler / Architekt / Entwickler 20 Jahre Erfahrung. Ich habe bei meinem vorherigen Projekt ein Experiment durchgeführt, bei dem ich einen Scrum-ähnlichen Prozess erstellt habe, aber wir haben beschlossen, dass die Entwickler ihre Aufgaben nicht direkt auswählen, sondern das Team ihnen die Aufgaben zuweist. Wie wird eine Aufgabe ausgewählt? Wir öffnen die Konstruktionszeichnung, in der wir iterieren, wo wir sind und wohin wir gehen möchten. Und stellen Sie dann die Frage „Was ist der nächste logische Schritt?“. Einige Vorteile davon sind:

  1. Vermeidung von Spezialisierung.

  2. Mehr Paarprogrammierung, denn wenn Sie die falsche Aufgabe bekommen, müssen Sie um Hilfe bitten.

Im Allgemeinen funktionierte der Prozess gut IMO. Es gab einige Herausforderungen in Bezug auf die nicht agilen Ressourcen, die mehr oder weniger nicht verstehen konnten, warum eine große Aufgabe möglicherweise von mehreren Personen ausgeführt wurde, und immer versuchten, einen Verantwortlichen an Stellen zu lokalisieren, an denen die Verantwortung kollektiv war.

Meine Frage ist:

  1. Gibt es einen Prozess, der die Gruppe dazu anregt, Aufgaben einzelnen Entwicklern zuzuweisen? Die Aufgaben sollten als Teil einer Gruppenentscheidung und als Teil dessen, was als nächstes kommt, zugewiesen werden.

  2. Wie kann ich mit den Vorkommnissen umgehen, wenn Leute herumkommen und Aufgaben von externen Ressourcen erhalten, auf diese Weise die Gruppenentscheidung, wer was tut, hacken? Ich frage mich irgendwie, ist das, was ich beschrieben habe, ein Unsinn? Welcher agile Prozess hält Entwickler davon ab, Aufgaben für sich selbst auszuwählen?

Es wird als normal angesehen, dass ein Entwickler die Aufgabe mit der nächsthöchsten Priorität in der Liste auswählt, die niemandem zugewiesen ist. Teams setzen dies in unterschiedlichem Maße durch, aber ich glaube nicht, dass es einer speziellen Version von Agile bedarf.
Die Vermeidung von Spezialisierungen sollte kein Selbstzweck sein, sondern trägt dazu bei, dass das Team als Ganzes in der Lage ist, die Aufgaben zu erfüllen, für die es Verantwortung trägt. Spezialisierung ist im Allgemeinen unvermeidlich, Entwickler sind keine gesichtslosen und austauschbaren Drohnen, und Aufgaben ohne Rücksicht auf Fähigkeiten zuzuweisen, klingt für mich nach einem Anti-Muster. Es ist jedoch ein guter Ansatz, Mitglieder zu ermutigen, ihre Erfahrung in Bereichen zu erweitern, mit denen sie nicht vertraut sind, indem sie sich mit einem Experten zusammenschließen.
@DJClayworth Ich habe das Gefühl, dass es in fast jedem agilen Team, in dem ich war, einen nicht agilen Teil des Teams gibt, der in die entgegengesetzte Richtung geht. Wie gehen Sie damit um?
@DJClayworth und erfahrungsgemäß passiert dies selten - der Entwickler wählt die nächste Rangfolge aus.
Ist Ihr Problem, dass Sie möchten, dass Entwickler die nächste logische Aufgabe auswählen und nicht die nächste Aufgabe, die sie möchten, um eine Überspezialisierung zu vermeiden? Das ist etwas anders als „Gibt es einen benannten agilen Prozess, der das durchsetzt?“ Gibt es einen anderen Nutzen für das Projekt als die Vermeidung einer Überspezialisierung und die Förderung des Lernens?
@DJClayworth ja, ich bin mir nicht sicher, wie ich die Frage wiederholen soll. Aber auch diese Frage ist berechtigt. Weil ich Argumente brauche, um meine Vision durchzusetzen. Die meisten Entwickler sind es gewohnt, Aufgaben relativ frei auszuwählen, die ihnen gefallen, was sehr oft dem aktuellen Ziel zuwiderläuft.
@DJClayworth Auch einige lautere Entwickler sind besser in der Lage, sich in Schlüsselpositionen wie zwischen Produktion und Entwicklern oder zwischen Funktionsexperten und Entwicklern zu positionieren.
@DJClayworth Ich habe deine Frage zum Vorteil übersehen. Abgesehen von dem, was Sie gesagt haben, besteht der Vorteil darin, dass Sie sich nicht auf Ihr unmittelbares Ziel konzentrieren.

Antworten (4)

Du fragst:

  1. Gibt es einen Prozess, der die Gruppe dazu anregt, Aufgaben einzelnen Entwicklern zuzuweisen? Die Aufgaben sollten als Teil einer Gruppenentscheidung und als Teil dessen, was als nächstes kommt, zugewiesen werden.

Was Sie tun müssen, ist, dem Team (denjenigen, die die Kommissionierung durchführen) zu erklären, worauf Sie abzielen. Dies kann sie dann ermutigen, die Aufgabe so aufzuteilen, wie Sie es erwarten.

Sobald sie den Nutzen Ihrer Verbesserung erkennen , werden die meisten von ihnen mitmachen.

Dann fragst du:

  1. Wie kann ich mit den Vorkommnissen umgehen, wenn Leute herumkommen und Aufgaben von externen Ressourcen erhalten, auf diese Weise die Gruppenentscheidung, wer was tut, hacken? Ich frage mich irgendwie, ist das, was ich beschrieben habe, ein Unsinn? Welcher agile Prozess hält Entwickler davon ab, Aufgaben für sich selbst auszuwählen?

Während Agile die Effizienz fördert, erwarten Sie, kurzfristige Ineffizienz für langfristige Effizienz zu fördern.

Sobald Sie „Effizienz“ (neu) definieren, sollte es mit Ihrer Implementierung von Agile fließen.

Sie können Menschen nicht davon abhalten, die Regeln zu brechen, es sei denn, Sie wollen Polizist werden und Sie haben die Befugnis, Menschen zu bestrafen. (Selbst dann möchten Sie diese Art von Kultur wahrscheinlich nicht.) Aber Sie können sie ermutigen, nach Ihren Regeln zu spielen, und ihnen die Vorteile erklären.

Denken Sie daran, dass der gelegentliche „Regelbruch“ nicht das Ende der Welt bedeutet ; Manchmal ist es besser, kleinere Verstöße zu ignorieren, anstatt eine große Sache daraus zu machen und alle abzulenken.

Eine gute Idee ist es, ein Protokoll darüber zu führen, wann Ihre Implementierung „den Tag gerettet“ hat. Bsp.: Da x und y den Code kannten, brauchten wir bei x längerem Urlaub keine lange Übergabe.

Menschen daran zu erinnern, wie großartig Ihr System ist, hilft ihnen, es zu verstehen, und ermutigt sie, ihm zu folgen.

Mir ist kein Prozess bekannt, der Entwickler ausdrücklich davon abhält, ihre Aufgaben auszuwählen. Stattdessen fördern die meisten agilen Frameworks den Einsatz von selbstorganisierenden Teams .

Ein Aspekt der Selbstorganisation ist, dass das Team entscheidet, wie Aufgaben unter den Teammitgliedern verteilt werden.

Es wäre sicherlich legitim für ein Team, einen zufälligen oder pseudozufälligen Prozess der Aufgabenzuweisung auszuprobieren. Sie könnten es vielleicht als Experiment durchführen: Entscheiden Sie, wie sie den Erfolg messen wollen, probieren Sie den Ansatz für einen festgelegten Zeitraum (z. B. 4 Wochen) aus und bewerten Sie dann, wie der Ansatz am Ende gelaufen ist.

Allerdings wäre es in einem selbstorganisierten Team nicht angemessen, wenn eine Person über die Vorgehensweise bei der Aufgabenverteilung entscheidet und diese im Team durchsetzt. Das Team sollte alternative Ansätze diskutieren und einen Konsens über den Ansatz erzielen, den es ausprobieren möchte.

Wie kann ich mit den Vorkommnissen umgehen, wenn Leute herumkommen und Aufgaben von externen Ressourcen erhalten, auf diese Weise die Gruppenentscheidung, wer was tut, hacken? Ich frage mich irgendwie, ob das, was ich beschrieben habe, ein Unsinn ist? Welcher agile Prozess hält Entwickler davon ab, Aufgaben für sich selbst auszuwählen?

Wenn sich das Team für den Ansatz entscheidet, den es verwenden wird, ist es weitaus unwahrscheinlicher, dass es versucht, es zu umgehen. Das ist der Wert von selbstorganisierten Teams: Die Teams haben eine Zustimmung zum gewählten Ansatz und führen ihn daher eher gut aus.

Ich zwinge den Leuten keine Aufgaben auf. Ich versuche nur, eine Umgebung zu schaffen, in der, anstatt dass Sie eine Aufgabe für sich selbst auswählen, die Gruppe eine Aufgabe für Sie auswählt.
Übrigens ändere ich den Titel der Frage. Diese Frage passt besser in das, was ich suche.

Bei Agile geht es um sich selbst organisierende Teams. Das Team ist derjenige, der herausfinden kann, wie die Arbeit am besten zu erledigen ist, und normalerweise endet man mit einer Art Pull-System. Menschen nehmen Arbeit an, ihnen wird keine Arbeit zugeteilt.

Wenn das Team entschieden hat, dass es eine gute Idee ist, alle zu ermutigen , Aufgaben zu übernehmen, mit denen sie nicht vertraut sind, dann ist das eine Sache. Wenn Sie eine Praxis wollen, die sie davon abhält , Aufgaben zu übernehmen, mit denen sie vertraut sind, dann ist das eine andere Sache. Der erste Ansatz ist agil, der zweite ... ich bezweifle es .

Ich glaube nicht, dass es einen agilen Prozess gibt, der das tut, wonach Sie fragen, und das liegt daran, dass es nicht wirklich sinnvoll ist, es sei denn, Ihr Kontext ist besonders. Damit meine ich, dass die Arbeit mehr oder weniger aus dem gleichen Fachgebiet stammt, Ihre Teammitglieder haben Rollen aus diesem Fachgebiet, aber sie haben nicht nur die gleiche Erfahrung. Manche sind kompetenter, manche weniger. Das zu tun, was Sie vorschlagen, könnte in dieser Situation funktionieren, aber es kann nicht in allen Situationen funktionieren. Und der Grund dafür ist, dass Sie zwangsläufig eine Spezialisierung innerhalb des Teams haben werden.

Die Art und Weise, wie Sie die Frage formuliert haben, lässt mich glauben, dass Sie glauben, dass Spezialisierung ein Problem ist. Es ist nicht so lange, bis das Team alle Rollen innerhalb des Teams hat, um ihre Arbeit zu erledigen, dann ist das kein Problem . Teams liefern Software in Agile, nicht Einzelpersonen.

Spezialisierung wird zu einem Problem, wenn das Unternehmen Silos von Spezialisten hat, die von Teams und Projekten geteilt werden. Da haben Sie tatsächlich ein Problem, weil es eine externe Abhängigkeit ist und dem Team tatsächlich einige Rollen fehlen, um ihre Arbeit selbst richtig zu erledigen.

Es ist gut, Wissen zu teilen, es ist gut, Programmierungssitzungen zu zweit abzuhalten, es ist gut, dass die Leute den Überblick behalten und die Verantwortung für die Ergebnisse teilen, aber ihnen Aufgaben zuzuweisen, mit denen sie nicht vertraut sind, ist nicht unbedingt der richtige Weg. Es drängt sie aus ihrer Komfortzone und das ist eine Möglichkeit, Dinge zu lernen, aber treiben Sie sie zu weit und Sie werden ein Durcheinander an Ihren Händen bekommen, am Ende viel Frustration und sogar Mitarbeiterfluktuation verursachen. Wie gesagt, das funktioniert in bestimmten Kontexten, nicht in allen. Ich ermutige Sie, an das letzte Projekt zu denken, an dem Sie dies versucht haben, und die Fähigkeiten der Menschen und die Art der Arbeit zu berücksichtigen, und ich bin sicher, Sie werden feststellen, dass es nicht zu viele Variationen gab, nur unterschiedliche Erfahrungsebenen und Ansichten des großen Ganzen.

Um Ihnen ein weiteres Beispiel zu geben, stellen Sie sich vor, Sie haben einen Designer in Ihrem Team und einen Java-Back-End-Entwickler. Würden Sie dem Backend-Entwickler eine Designaufgabe aufzwingen, nur weil Sie eine Spezialisierung vermeiden wollen? Oder schlimmer? Würden Sie dem Designer eine Backend-Aufgabe geben? Das macht keinen Sinn.

Es gibt in der Tat ein Problem: bei der Arbeit an vorrangigen Aufgaben. Angenommen, der Designer ist beschäftigt, aber der Backend-Entwickler hat gerade etwas Arbeit erledigt und kann die nächste Aufgabe aus der Prioritätenliste übernehmen. Die nächste Aufgabe in der Reihenfolge der Prioritäten ist eine Entwurfsaufgabe. UPS! Jetzt muss sich der Entwickler umschauen, um zu sehen, welche anderen Backend-Arbeiten es gibt. Die zweite Aufgabe ist Back-End-Arbeit, also übernehmen sie diese Aufgabe. Aber das war die zweite Priorität, nicht die erste. Das ist ein Problem, oder? Aber Sie lösen dieses Problem nicht, indem Sie die Designaufgabe dem Back-End-Entwickler aufbürden.

Wenn Sie sich Sorgen über die Art und Weise machen, wie die Arbeit ausgeführt wird, oder wenn Sie ein gewisses Risiko festgestellt haben, dass Programmierer nur bestimmte Arten von Aufgaben auswählen, dann bringen Sie das Problem mit dem Team zur Sprache und lassen Sie es einen Weg finden, es zu beheben. Zwingen Sie keine bestimmte Arbeitsweise auf, es könnte andere/bessere Möglichkeiten geben, dies zu beheben, nicht unbedingt so, wie Sie es vorschlagen .

Das Problem innerhalb eines größeren Teams mit Leuten, die Aufgaben übernehmen, die ihnen gefallen, ist, dass Sie unterschiedliche Programmierer-Levels haben. Einige Programmierer sind wirklich effizient. Wenn sich ein solcher Programmierer zwischen, sagen wir, Produktion und Entwicklung positioniert, geraten Sie in eine Situation, in der viele andere Entwickler 0% Ahnung von der Infrastruktur haben, weil jede Infrastrukturaufgabe automatisch von diesem Entwickler übernommen wird. Gleiches gilt für die funktionalen Aspekte der Arbeit. Wenn Sie eine Person haben, die sich sehr dafür interessiert, gewinnen Sie unweigerlich einen funktionalen Experten aus ihm heraus.
Übrigens ändere ich den Titel der Frage. Diese Frage passt besser in das, was ich suche.
Das, wovon Sie sprechen, wird als Busfaktor bezeichnet , und ja, Sie können ihn verbessern, indem Sie das Know-how teilen. Aber warum brauchen Sie einen Prozess, um Entwickler davon abzuhalten, nur bestimmte Aufgaben zu übernehmen? Dies ist eine Frage der Teamselbstorganisation. Bringen Sie das Problem mit dem Team zur Sprache und lassen Sie es einen Weg finden, es zu beheben. Warum ist Ihrer Meinung nach die einzige Möglichkeit, Abhilfe zu schaffen, indem man ihnen verbietet, ihre eigenen Aufgaben zu übernehmen?

Im Allgemeinen sollten Sie sich darum kümmern, was das Team als Nächstes vorhat, und nicht genau, wer von den Teammitgliedern es tatsächlich tut.