Mein Team und ich bauen eine Site um, die wir vor etwa zehn Jahren entwickelt haben, und wir möchten dies in Agile tun.
Nachdem ich viel Zeit mit Lesen verbracht habe (wahrscheinlich nicht genug), habe ich Probleme mit der Frage, wie ich die Arbeit zwischen Entwicklern aufteilen kann.
Ich werde genauer darauf eingehen und sagen, dass die Site in separate Module unterteilt ist, die nicht viel Integration untereinander aufweisen.
Was ist der beste / am meisten akzeptierte Weg, um die Arbeit zwischen den Entwicklern aufzuteilen?
- Geben Sie jeder Person ein anderes Modul zum Bearbeiten.
- Weisen Sie alle Entwickler demselben Modul zu und teilen Sie die Arbeit nach verschiedenen Teilen des Moduls auf (UnitTesting, DAL und Mapping, Logics, UI).
- Weisen Sie alle Entwickler demselben Modul zu und teilen Sie die Arbeit nach verschiedenen Logikbereichen auf (zum Beispiel ist jeder Entwickler für eine bestimmte Logik verantwortlich (wahrscheinlich eine Methode in der BL) und es ist UnitTesting, DAL und Mapping und UI ...
Oder vielleicht etwas ganz anderes?
web-development
agile
Amir
quelle
quelle
Antworten:
Mein Team hat schon seit einigen Releases versucht, "agil" zu werden, aber es war nicht gerade einfach, Teil eines großen Unternehmens zu sein. Ich werde nicht so tun, als hätte ich die Antwort, aber ich kann einige meiner Beobachtungen teilen.
Entwickler nach Modul aufteilen:
Jeder arbeitet zur selben Zeit am selben Modul
Wir haben das letzte getan, und obwohl es jede Menge Raum für Verbesserungen gibt, war unser gesamtes Team insgesamt sehr glücklich, und das sagt viel aus, wenn wir Teil eines riesigen Konzerns sind.
Eine wichtige Sache, die wir falsch gemacht haben, als wir die ersten drei Male "agil" wurden, ist, dass den Leuten jedes Mal gesagt wurde, wie sie arbeiten sollen und woran sie arbeiten sollen. Auf diese Weise kann Ihr Team das Interesse an dem Projekt vollständig verlieren, und Sie befinden sich in echten Schwierigkeiten.
Versuchen Sie stattdessen das Gegenteil. Sagen Sie dem Team, sie können tun, was sie wollen, und als Manager / Leiter (wenn Sie einer sind, wenn Ihr Manager diese Worte nicht wiederholt) müssen Sie sicherstellen, dass sie so produktiv und glücklich wie möglich sind. Prozess ist keine schlechte Sache, aber Prozess sollte da sein, um Ihrem Team zu helfen, wenn es erkennt, dass es einen braucht, und nicht umgekehrt.
Wenn einige Ihrer Teammitglieder es vorziehen, isoliert zu arbeiten, lassen Sie sie (bis zu einem gewissen Grad). Wenn sie lieber zu zweit arbeiten, lassen Sie sie das tun. Stellen Sie sicher, dass Ihre Mitarbeiter ihre Arbeit so oft wie möglich selbst auswählen.
Schließlich und das ist sehr wichtig und wird immer übersehen. SIE ERHALTEN DIESES RECHT NICHT (es sei denn, Sie sind Übermensch oder zumindest Batman). Es ist äußerst wichtig, regelmäßig nachträgliche Treffen abzuhalten. Als wir Retrospektiven herausbrachten, wurden sie von dem Buch gemacht und es fühlte sich wie ein weiterer Prozess an, den man durchstehen musste. Dafür gibt es keine Retrospektive. Es dient dazu, Ihrem Team zuzuhören, die Bereiche zu identifizieren, die die meisten Schmerzen verursachen, und sie zu reparieren, damit jeder seine Arbeit fortsetzen kann. Anscheinend möchten Softwareentwickler im Allgemeinen gerne Produkte und Funktionen bereitstellen und das wichtigste nachträgliche Message-Meeting kommunizieren, ist, dass es ausschließlich zu ihrem Vorteil ist. Sie möchten Hindernisse identifizieren und überwinden, beginnend mit den größten (oder einfachsten) Hindernissen.
quelle
Treffen Sie sich mit dem Team, zeigen Sie ihm die Aufgabenliste und fragen Sie, wer was tun möchte.
quelle
Denken Sie nicht in Modulen. Denken Sie in Funktionselementen. Beschreiben Sie diese Funktionselemente durch User Stories (oder auf andere Weise) und vergessen Sie nicht, die Akzeptanzkriterien zu beschreiben (die wahrscheinlich von Ihrer aktuellen Anwendung definiert werden und die Geschäftserwartungen ändern). Stellen Sie Ihre Funktionselemente in Rückstand. Lassen Sie dann die Unternehmen Prioritäten setzen, welche Funktionen zuerst bereitgestellt werden müssen (Sie arbeiten schrittweise und iterativ, und Prioritäten geben an, welche Funktionen zuerst implementiert werden müssen).
Sobald Sie dies zumindest für einen Teil Ihrer ursprünglichen Anwendung haben, sind Sie für die Entwicklung bereit. Was als nächstes passiert, hängt von Ihrer gewählten agilen Methodik ab. Der wichtige Teil ist, dass jede Funktion in der Regel in mehrere Aufgaben unterteilt werden kann und die Teammitglieder auswählen, welche Aufgaben sie ausführen möchten - dies wird als Selbstorganisation bezeichnet. Wenn Sie mit Agilität beginnen, benötigt die Selbstorganisation möglicherweise Hilfe, um sicherzustellen, dass unbeliebte und beliebte Aufgaben vom Team gleichermaßen geteilt werden. Sobald das Team reifer ist, werden die Entwickler nicht zögern, ihre Ablehnung der aktuellen Selbstorganisation zu äußern, und dies wird automatisch im Team behandelt.
Von Anfang an in Modulen zu denken, muss kein guter Weg sein. Sie schreiben die Anwendung aus irgendeinem Grund neu, und möglicherweise ist die derzeitige Anwendungsarchitektur, die auf einer falschen Modultrennung basiert, einer der verborgenen Gründe für sichtbare Probleme. Außerdem können Sie feststellen, dass einige Funktionen aus vorhandenen Modulen vollständig neu definiert und an einen anderen Ort verschoben werden.
quelle
Obwohl ich Davids Antwort zustimme, hatte ich das Gefühl, dass es von einigen Verbesserungen profitieren könnte:
Grundsätzlich lautet das Fazit: Niemand hier auf SE kann diese Frage für Sie beantworten, und es gibt auch keinen Grund dafür, denn es ist viel besser, wenn Sie als Team eine Antwort finden.
quelle
Der einfachste Ansatz ist oft der beste.
Ich würde es vermeiden, Aufgaben in Gruppen wie testing / log / UI / etc zu unterteilen, es sei denn, Sie können einige sehr gute und klare Gründe dafür angeben. Wenn Sie es Programmierern erlauben, außerhalb ihrer üblichen Fachgebiete zu arbeiten, kann dies die Dinge für sie interessanter und herausfordernder machen und sie in die Lage versetzen, sich innerhalb ihres Fachgebiets zu entwickeln und zu wachsen. Wenn Sie das Gefühl haben, dass Sie aufgrund von Zeitbeschränkungen die Arbeit nach Fachwissen aufteilen müssen, stellen Sie mindestens sicher, dass jeder Entwickler weiterhin seine eigenen Komponententests durchführen muss, und verwenden Sie die Codeüberprüfung und Abnahmetests, um Probleme zu erkennen. Das Schreiben eigener Tests ist sehr flexibel, und es kann sehr verschwenderisch sein, darauf zu warten, dass Tester Zeit zur Verfügung haben.
Angesichts dieses Dilemmas habe ich den folgenden Ansatz gewählt:
Scope das Projekt. Machen Sie sich selbst ein Bild davon, worauf Sie sich einlassen, und entwickeln Sie eine Liste von Funktionen, indem Sie das Projekt in eine Reihe von Aufgaben aufteilen.
Funktionen priorisieren. Entscheiden Sie, welche Funktionen frühzeitig abgeschlossen werden müssen und welche für Ihre Kunden unmittelbar von Nutzen sind. Machen Sie sich keine Sorgen, wenn Ihre Entwickler am Ende an denselben Modulen arbeiten, sondern stellen Sie sicher, dass Sie über einen guten Prozess und gute Tools zum Verwalten von Codezusammenführungen verfügen.
Binden Sie Ihr Team ein und bitten Sie Ihre Entwickler, Sie dabei zu unterstützen, die Funktionen in eine Liste mit einfacher zu verwaltenden Aufgaben aufzuteilen. Überprüfen Sie die Aufgaben als Gruppe und passen Sie sie nach Bedarf an, damit sie leichter geschätzt werden können.
Bitten Sie jeden Entwickler, oben in der Prioritätswarteschlange, an der der Entwickler arbeiten möchte, eine Aufgabe auszuwählen, die implementiert werden soll, oder eine Gruppe von Aufgaben, je nachdem, wie Ihre Iterationen ausgeführt werden sollen.
Lassen Sie jeden Entwickler nur an einer Sache arbeiten, bis sie abgeschlossen ist, bevor Sie mit der Auswahl des nächsten Elements oben in der Prioritätswarteschlange fortfahren. Es kann sein, dass Sie versucht sind, Ihre Mitarbeiter gelegentlich die Aufgaben ändern zu lassen. Dies führt jedoch zu Zeitverschwendung für den Entwickler. Wenn Sie mit Abhängigkeitsengpässen konfrontiert sind, müssen Sie Ihre Aufgabenprioritäten anpassen und die Verschwendung minimieren.
Haben Sie keine Angst davor, dass Entwickler mit überlappenden Iterationen ausgeführt werden, und verwalten Sie Ihre Releases entsprechend. Auf diese Weise können Sie den Zeitaufwand zwischen den Releases minimieren, die auf die Erledigung von Aufgaben warten.
Letztendlich geht es bei Agile darum, eine Lösung zu finden, die gut für Ihr Team, Ihr Unternehmen und Ihre Kunden geeignet ist. Es liegt an Ihnen, Ihren Prozess zu optimieren, indem Sie das Gleichgewicht der für Sie am besten geeigneten Vorgehensweisen finden. Die Aufteilung Ihrer Aufgaben wird ein sehr wichtiger Teil eines viel größeren Prozesses sein, sollte jedoch so einfach wie möglich gehalten werden, um die Bereitschaft zur Teilnahme zu fördern und um zu vermeiden, dass sich später auftretende prozessbedingte Probleme nur schwer lösen lassen.
quelle
Keine organisatorische Diskussion des Entwicklerteams wäre vollständig, ohne das Operationsteam von Dr. Fred Brooks zu erwähnen .
Die Grundformel lautet: Ein Operationsteam pro Arbeitseinheit
Definieren eines Operationsteams
Das Konzept des Operationsteams basiert auf zwei Grundgedanken:
Ein Operationsteam besteht aus 3-10 Entwicklern:
Arbeitseinheit definieren
Was ordnen wir ihnen zu, nachdem wir ein Team zusammengestellt haben?
Sie sollten drei akzeptable Grundmuster sehen:
quelle
Abhängig von der Anzahl der Entwickler und Module (und der Zeitskala) veranlasse ich meine Entwickler im Allgemeinen, ein interessantes Modul (für sie) und ein herausforderndes Modul (vorzugsweise etwas, was sie nicht getan haben) auszuwählen, und dann den Rest, den ich nach Fähigkeitsstufe und aufteile Zeitbeschränkungen. Ich finde, das gibt meinen Entwicklern etwas, woran sie arbeiten wollen, und etwas, das sie antreibt.
Natürlich funktioniert das nicht immer ...
quelle
Folgendes würde ich tun:
Wenn alle Module klein sind, können Sie jedem ein Modul zur Bearbeitung geben. Ansonsten mache folgendes:
Das oben Genannte funktioniert nicht, wenn die Leute, die nicht gerne mit anderen zusammenarbeiten, die kompetentesten sind. Dies ist ein häufiger Fall. Machen Sie also eine Ausnahme zu 4 und 5 entsprechend
quelle