it-swarm.com.de

Wo passt das Erlernen neuer Fähigkeiten in Agile?

Ich gründe ein Finanzsoftwareunternehmen und habe dabei agile Prinzipien und Methoden studiert. Ein Aspekt der Entwicklung, den ich noch nicht angesprochen habe, ist, wo ich den ständigen Bedarf an Entwicklern berücksichtigen kann, neue Fähigkeiten und Technologien in die Entwicklung einzubauen Prozess.

Bevor ich in den letzten Jahren an Finanzsoftware gearbeitet habe, habe ich den größten Teil meiner Karriere als 3D-Grafikprogrammierer mit Videospielen, GIS- und Biometrie-Software verbracht. Ich musste immer einfach von einer Klippe in Dinge eintauchen und herausfinden, wie fliegen. Obwohl es mir immer gelungen ist, bin ich sicher, dass ich nicht so lange leben werde, wie ich es hätte tun können, wenn ich mich nicht umgebracht hätte, so viele 100 Stunden Wochen und Monate gleichzeitig zu arbeiten.

Jetzt, da ich ein Softwareunternehmen gründe, das die intensiven innovativen Anforderungen von 3D-Grafiken nicht ganz erfüllt, möchte ich einen ganzheitlicheren Entwicklungsansatz etablieren.

Vielleicht spricht Agile das einfach nicht an, aber wenn doch, habe ich nicht gefunden, wo und ich würde mich über Wissen, Fachwissen oder Erfahrung freuen, die jemand damit hat.

32
Anton Bursch

Dies hat nicht wirklich viel mit Agile oder sogar mit Software Engineering zu tun. Es gilt einfach für jedes Unternehmen in jedem Unternehmen: Sie müssen Zeit für Schulungen einplanen. Zeitraum.

Agile hat diese Idee von "nachhaltigem Tempo", was bedeutet, dass das Team zu keinem Zeitpunkt härter arbeiten sollte, als es auf unbestimmte Zeit aushalten könnte. Das heißt, keine "Crunch Time". Dies muss auch durch Schulungen berücksichtigt werden. Ein nachhaltiges Tempo für Ihr Team ist also "nicht mehr als 5 Stunden ohne Pause, nicht mehr als 9 Stunden pro Tag, nicht mehr als 40 Stunden pro Woche", und Sie möchten 10% Zeit für das Training zur Verfügung stellen, dann Sie müssen Ihre Projekte für 36 Stunden Wochen planen.

Aber auch dies hat nichts mit Agile zu tun, das ist nur gesunder Menschenverstand und Grundschulmathematik.

Persönlich würde ich denken, dass so etwas wie eine halbe Stunde pro Tag, einen halben Tag pro Woche und eine volle Woche pro Quartal es dem Team ermöglichen würde, schnell und gleichmäßig Wissensbrocken unterschiedlicher Größe zu erwerben.

Es gibt auch einige agile Praktiken, die beim Wissenstransfer helfen, d. H. Unterschiede im Wissensstand zwischen den Teams ausgleichen:

  • tägliche Rückblicke
  • rückblicke pro Sprint
  • rückblicke pro Projekt
  • paar-Programmierung
  • ping-Pong-Paarung (Austausch von Fahrer und Navigator nach jedem Schritt des Rot-Grün-Refaktor-Zyklus)
  • promiskuitive Paarung (keine festen Paare, Paare werden zufällig zugewiesen und jeden Morgen und Mittagessen gewechselt)
  • ungerade Anzahl von Teammitgliedern (wenn Sie Paarprogrammierung durchführen, kann ein Teammitglied lernen)
  • mob-Programmierung (eine Variante der Paarprogrammierung, bei der das gesamte Team einen einzelnen Computer und Bildschirm verwendet, ein bestimmtes Teammitglied einfach ein "Schreibkraft" ist und die anderen ihm sagen, was er schreiben soll)
  • promiskuitive Teams (Entwickler werden jeden Tag/jeden Sprint zufällig Teams zugewiesen)

Paarprogrammierung und Mob-Programmierung bieten nicht nur eine kontinuierliche Codeüberprüfung, sondern auch einen kontinuierlichen Wissensaustausch. Ping-Pong-Pairing verhindert, dass eine Person "die Tastatur drückt". Promiscuous Pairing verbreitet Wissen im gesamten Team, Promiscuous Teams verbreiten Wissen im gesamten Unternehmen und stellen sicher, dass jeder Entwickler jedes Projekt und jede Codebasis kennt. Dies führt auch zu einem hohen Standardisierungsgrad der Codebasis (en). Während das Hauptaugenmerk von Retrospektiven darauf liegt, Feedback zum Entwicklungsprozess zu geben und sich entsprechend anzupassen, kann es auch verwendet werden, um ein ungewöhnliches Problem zu kommunizieren und wie es gelöst werden kann.

Es versteht sich von selbst, dass der Arbeitgeber eine umfangreiche Bibliothek, kostenpflichtige Abonnements für ACM, Springer, IEEE usw. sowie ruhige Räume zum Lernen und größere Räume zum Unterrichten bereitstellen sollte. Viele Whiteboards und Flipboards sowie Projektoren sind natürlich generell sinnvoll, nicht nur für das Training.

43
Jörg W Mittag

Ich werde den meisten Aussagen zustimmen Jörg W Mittag sagte , aber nicht der Aussage, dass "das nicht wirklich viel mit Agile zu tun hat". Eine Reihe von agilen Techniken unterstützen das Lernen und die Entwicklung von Einzelpersonen und Teams.

Die agilen Methoden basieren in der Regel auf Inkrementen oder kontinuierlichem Fluss. In beiden Fällen wird die Arbeit nach Faktoren wie Priorität, Wert und Abhängigkeiten sortiert. Da der Schwerpunkt auf der kurzfristigen Arbeit liegt, kann das Team das Wissen identifizieren, das für die Bereitstellung benötigt wird, und, wenn der Mangel an Wissen ein Problem darstellt, planen, dieses Wissen just in time zu erlangen. Sichtbarkeit und Transparenz sind in der Regel auch Schlüsselaspekte verschiedener agiler Methoden, sodass die Stakeholder sehen können, woran das Team arbeitet und wie sie daran arbeiten, ihre Fähigkeit zur Wertschöpfung zu verbessern. Wenn umfangreiches Lernen erforderlich ist, kann es in naher Zukunft oder in der aktuellen Iteration geplant werden.

Sobald Einzelpersonen in einem Team Kenntnisse erworben haben, gibt es Techniken zum Pairing und Mobbing. Die Paarprogrammierung ist eine Schlüsselpraxis in der extremen Programmierung, die auch auf andere Methoden angewendet wurde und unter anderem das Lernen erleichtern soll. Mobbing wendet dies auf mehr als nur zwei Personen an. Durch die enge Zusammenarbeit und funktionsübergreifende Zusammenarbeit der Teams gibt es keine Silos, und diese Informationen werden verbreitet.

Selbst mit der Fähigkeit zu planen und auszuführen, was für die unmittelbare Arbeit notwendig ist, ist es sehr wichtig, sachkundige Teammitglieder zu haben. Wenn Mitarbeiter über ein gewisses Maß an vorhandenem Wissen über Tools, Technologie und Domäne verfügen, können sie bei der Übernahme von Lernaufgaben besser informiert werden und das Wissen effektiver an andere Teammitglieder weitergeben.

8
Thomas Owens

Planen Sie eine Proof-of-Concept-Aufgabe für den Sprint, in dem Sie Zeit für das Erlernen einer Fertigkeit einplanen möchten. Konzentrieren Sie sich auf etwas sehr Spezifisches, z. B. das Erstellen einer barrierefreien HTML-Tabelle. Planen Sie Proof-of-Concept-Aufgaben so lange, bis Sie die für die Story erforderlichen Fähigkeiten erlernt haben. Geben Sie jeder POC-Aufgabe einige Story-Punkte und ein Fälligkeitsdatum, damit Sie sie richtig zeitlich festlegen und den Fortschritt am Ende des Sprints anzeigen können.

Was ist, wenn eine Story für einen erfahrenen Entwickler nur 5 Punkte betragen sollte? Vielleicht dauert es 3-4 Aufgaben an jeweils 8 Punkten. Nach diesen POC-Aufgaben beträgt die Story möglicherweise nur noch 5 Punkte, aber Sie nehmen sich zumindest die Zeit, um die neuen Fähigkeiten zu erlernen, sodass die 5-Punkte-Story nicht 40 Punkte beträgt - selbst wenn die Story- und POC-Aufgaben 40 Punkte ergeben.

5
Greg Burghardt

Scrum hat die Idee eines "Spikes". Wenn das Team eine neue Technologie oder Fähigkeit übernimmt, ist ein Spike eine Geschichte, um diese Arbeit zusammenzufassen. Während eine Geschichte in Agile eine benutzerorientierte Funktionalität ist, ist die Ausgabe eines Spikes eine Dokumentation des Gelernten und eine Arbeitsaufschlüsselung, um sie in der realen Anwendung in die Praxis umzusetzen.

In der Praxis habe ich festgestellt, dass dies eine gute Möglichkeit ist, zumindest kleine Schulungen zu verwalten - genug, um Entwickler mit einem neuen System oder Framework auf den neuesten Stand zu bringen und gleichzeitig den Zeitplan zu berücksichtigen.

4
Dan Monego

Ich habe dies in den anderen Antworten nicht gesehen, daher wollte ich hinzufügen, dass viele Organisationen Gilden, Kapitel oder Kompetenzzentren für Kompetenzbereiche gründen. Dies können breite Themen wie Technologie oder spezifische Themen wie React Native Development) sein. Es hängt alles davon ab, ob das Interesse an einer Teilnahme in Ihrem Unternehmen besteht.

Unabhängig davon haben diese Gruppen oft die Aufgabe, den Menschen in der Gruppe zu helfen, professionell zu wachsen. Dies schafft einen separaten Raum außerhalb der Arbeit, um die Fähigkeiten sowohl für Personen, die diese Fähigkeiten täglich einsetzen, als auch für Personen außerhalb dieser Disziplin, die an Cross-Training interessiert sind, zu stärken und zu erweitern. Dies ist nicht die einzige Lösung für dieses Problem, aber es scheint immer häufiger zu werden.

3
Daniel

Einige andere haben bereits Aspekte erwähnt, aber ich wollte nur mitteilen, wie ich zur persönlichen Entwicklung in einem agilen Umfeld passe.

1. Laufende Entwicklung

Dies ist die einfachste Möglichkeit. Reduzieren Sie Ihre Kapazität in jedem Sprint, bis Sie genug Zeit haben, um sich weiterzuentwickeln. Der schwierige Teil besteht normalerweise darin, sich an Ihren Plan zu halten und die Entwicklung durchzuführen, wenn weitere Aufgaben zu erledigen sind. Wenn Sie Notfälle haben, können Sie diese Zeit hin und wieder opfern, aber sonst nicht.

Da Sie Ihre Kapazität reduziert haben, liegt alles, was Sie in dieser Kategorie tun, etwas außerhalb des direkten Interesses anderer Teammitglieder, und sie haben wahrscheinlich keinen Grund, sich darüber Gedanken zu machen oder die Planung in jedem einzelnen Sprint speziell zu aktualisieren.

2. Größere Anstrengungen während eines Sprints

Ich habe festgestellt, dass Sie den Sprint aktualisieren sollten, wenn Sie etwas mit größerer Auswirkung geplant haben (z. B. zweitägiges Training während eines Sprints), um dies widerzuspiegeln. Ich bin mir nicht sicher, was die theoretische Lösung dafür ist, aber ich habe oft gesehen, dass Leute einfach die Trainingsaufgabe an die Tafel stellen, um sicherzustellen, dass sichtbar ist, dass jemand damit beschäftigt ist.

Alternativ können Sie die Sprintkapazität des jeweiligen Sprints korrigieren, aber wenn die Leute Ihre gemessene Leistung/Effizienz nicht sehr genau betrachten, würde ich mich davon fernhalten. Gerade in einem frischen Team ist Stabilität wahrscheinlich wertvoller als Genauigkeit.

1

Agile ist eine Reihe von Philosophien. Schauen Sie sich das Manifest an, das ist ALLES, was Agile ist. Wenn Sie also sagen, wie Agile meine Probleme lösen kann, empfehle ich, (viel) mehr über Agile zu lernen. Nehmen wir eine konkrete Implementierung von Agile: SCRUM. In SCRUM haben wir die Konzepte eines Sprints und von Spikes. Durch diese beiden Artefakte ist es möglich, ein Budget für das Lernen zu erstellen.

Wenn Sie einen Sprint als Kreisdiagramm betrachten, können Sie die Prioritäten nach Themen aufteilen. Ein solches Thema kann sein ... das Erlernen neuer Fähigkeiten!

Ein Spike ist eine Forschungsaufgabe für einen Sprint, bei der die Machbarkeit von etwas normalerweise durch Lernen bewertet wird.

Schließlich liegt das, was Sie getan haben, immer noch auf dem Tisch und Sie können lernen, WÄHREND Sie tun, woran Sie gerade arbeiten. An diesem Punkt können Sie versuchen, die Story-Punkte/die Kapazität zu erhöhen, um die technische Herausforderung zu bewältigen.

1
RandomUs1r

Um aus dem Agile Manifesto selbst zu zitieren:

Individuen und Interaktionen über Prozesse und Werkzeuge
Arbeitssoftware über umfassende Dokumentation
Zusammenarbeit der Kunden bei Vertragsverhandlungen
Antworten auf Änderungen nach einem Plan

Der Schwerpunkt liegt bei mir und hebt die Teile hervor, die für Sie wahrscheinlich am besten geeignet sind.

Grundsätzlich können gut ausgebildete agile Entwickler viel besser auf sich ändernde Umgebungen reagieren als diejenigen, die ihre Fähigkeiten versteinern lassen.

Wenn ich meine eigene Definition von Agilität hinzufügen darf, können wir auch "Kundenzusammenarbeit" in den Mix einbringen. Ich finde, dass die beste Definition von Agilität eine ist, die auf der Idee der Agilität basiert. Wenn sich der Kunde (oder die Umgebung) radikal ändert, wie gut gehen Sie damit um? Wenn Sie ein Umfeld der Kundenzusammenarbeit fördern, haben diese ein begründetes Interesse daran, dass Ihr Team weiß, was sie tun.

1
Cort Ammon