Wo passt das Erlernen neuer Fähigkeiten zu Agile?

32

Ich gründe ein Finanzsoftwareunternehmen und habe mich dabei mit agilen Prinzipien und Methoden befasst. Ein Aspekt der Entwicklung, den ich noch nicht gesehen habe, ist die Frage, wo der ständige Bedarf der Entwickler besteht, neue Fähigkeiten und Technologien in die Entwicklung einfließen zu lassen verarbeiten.

Bevor ich in den letzten Jahren an Finanzsoftware gearbeitet habe, habe ich die meiste Zeit meiner Karriere als 3D-Grafikprogrammierer an Videospielen und GIS- und Biometrie-Software gearbeitet. Ich musste mich immer einfach von einer Klippe stürzen und herausfinden, wie fliegen. Obwohl es mir immer gelungen ist, bin ich mir sicher, dass ich nicht so lange leben werde, wie ich es hätte, wenn ich mich nicht umgebracht hätte, wenn ich 100 Stunden, Wochen und Monate auf einmal gearbeitet hätte.

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

Vielleicht geht agile einfach nicht darauf ein, aber wenn doch, dann habe ich nicht gefunden, wo und ich würde mich über Wissen oder Erfahrung freuen, die jemand damit hat.

Anton Bursch
quelle
5
Siehe norvig.com/21-days.html
Basile Starynkevitch
1
Lernen und F & E können implizit oder explizit in der Sprintplanung berücksichtigt werden. Es ist auch in Ordnung, wenn der Lernprozess keine leicht messbaren Ergebnisse liefert (z. B. ist er kein Teil von Sprint Goal). Siehe Inkrementalismus: pchiusano.github.io/2017-05-17/incrementalism.html "Echter Fortschritt sieht auf den ersten Blick nicht nach Fortschritt aus."
KolA
1
Nach meiner Erfahrung ist die einfachste Lösung, die Arbeitsbelastung in einem Sprint entsprechend anzupassen, wenn Sie 2 Tage frei für ein Training haben, ähnlich wie im Urlaub. Einige Organisationen fügen einem Sprint künstliche Benutzergeschichten für das Training hinzu, aber ich persönlich sehe keinen Gewinn.
Simon

Antworten:

43

Das hat nicht wirklich viel mit Agile oder sogar mit Software Engineering zu tun. Es ist einfach wahr für jedes Unternehmen in jedem Geschäft: Sie müssen Zeit für Schulungen einplanen. Zeitraum.

Agile hat diese Vorstellung von "nachhaltigem Tempo", was bedeutet, dass das Team zu keinem Zeitpunkt härter arbeiten sollte, als es auf unbestimmte Zeit aushalten könnte. Dh keine "Crunch Time". Dies muss auch durch Schulungen honoriert werden. Daher ist es ein nachhaltiges Tempo für Ihr Team, "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 das 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, dh Unterschiede im Wissensstand zwischen den Teams ausgleichen:

  • Tägliche Rückblicke
  • Rückblicke pro Sprint
  • Rückblicke pro Projekt
  • Paar-Programmierung
  • Ping-Pong-Paarung (Tauschen von Fahrer und Navigator nach jedem Schritt des Rot-Grün-Refaktor-Zyklus)
  • Promiscuous Pairing (keine festen Paare, Paare werden zufällig zugewiesen und jeden Morgen und Mittag gewechselt)
  • ungerade Anzahl von Teammitgliedern (wenn Sie Pair-Programmierung durchführen, bleibt einem Teammitglied das Lernen frei)
  • Mob-Programmierung (eine Variante der Paarprogrammierung, bei der das gesamte Team einen einzigen Computer und Bildschirm verwendet, ein bestimmtes Teammitglied einfach ein "Schreibkraft" ist und die anderen ihm sagen, was er schreiben soll)
  • Promiscuous Teams (Entwickler werden jeden Tag / jeden Sprint zufällig Teams zugewiesen)

Pair Programming und Mob Programming bieten nicht nur eine kontinuierliche Codeüberprüfung, sondern auch einen kontinuierlichen Wissensaustausch. Das 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. es wird auch zu einem hohen Grad an Standardisierung in der Codebasis (den Codebasen) führen. Der Hauptfokus von Retrospektiven liegt auf der Rückmeldung des Entwicklungsprozesses und der entsprechenden Anpassung. Sie können jedoch auch verwendet werden, um ein ungewöhnliches Problem zu kommunizieren und zu lösen.

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 zur Verfügung stellen sollte. Viele Whiteboards und Flipboards sowie projektoren sind natürlich generell überall sinnvoll, nicht nur zum trainieren.

Jörg W. Mittag
quelle
5
Ich glaube, dass das alles wahr ist. Und unser Scrum Master, der uns 5 Stundentage gegeben hat. Jira verstand nicht, was ein 5-Stunden-Tag war und es machte unsere Planung zu einem Albtraum. Verstehen Sie, was Ihre agilen Tools können, bevor Sie versuchen, diese perfekt vernünftigen Ideen durchzusetzen.
candied_orange
6
"Mob Programming" klingt wirklich quälend.
User2818782
4
@ user2818782: Es macht genauso viel Spaß wie ein Dreibeinrennen, wenn man es nicht zu ernst nimmt und es nicht zu lange versucht. Betrachten Sie es einfach als eine alberne Übung zur Teambildung / zum Wissensaustausch und erwarten Sie nicht, dass sie viel (oder keinen) tatsächlichen Arbeitscode hervorbringt.
Ilmari Karonen
1
@IlmariKaronen: AFAIK, die Seattle Ruby Brigade, übt seit über zehn Jahren Mob-Programmierung aus und produziert in erstaunlicher Geschwindigkeit einige der nützlichsten, fortschrittlichsten, saubersten, schönsten und schnellsten Ruby-Codes. Das ist natürlich nur ein anekdotischer Beweis, und in der Tat bestenfalls sogar nur eine gebrauchte Anekdote. Dies ist jedoch mindestens ein Beispiel für eine erfolgreiche Implementierung. Auf der Mob Programming-Website finden sich einige weitere Testimonials von Leuten, die es ausprobiert haben und feststellen, dass es für sie gut funktioniert.
Jörg W Mittag
@candied_orange wirklich - es gibt buchstäblich eine Einstellung in Jira, um zu sagen, wie lang ein Tag ist?
jk.
8

Ich werde den meisten Aussagen von Jörg W. Mittag zustimmen , 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 geordnet. Da der Schwerpunkt auf der kurzfristigen Arbeit liegt, kann das Team das Wissen identifizieren, das für die Bereitstellung erforderlich ist, und, falls das Problem des Mangels an Wissen besteht, planen, dieses Wissen just in time zu erlangen. Sichtbarkeit und Transparenz sind in der Regel auch wichtige Aspekte verschiedener agiler Methoden, sodass die Beteiligten 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 erlangt 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 dazu dient, das Lernen zu erleichtern. Mobbing wendet dies auf mehr als nur zwei Personen an. Durch die enge Zusammenarbeit und die funktionsübergreifende Zusammenarbeit von 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 die Mitarbeiter über ein gewisses Maß an Kenntnissen über die Tools, die Technologie und die Domäne verfügen, können sie besser informiert werden, wenn sie Lernaufgaben übernehmen, und das Wissen effektiver an andere Teammitglieder weitergeben.

Thomas Owens
quelle
2
Upvoted, danke für das Ausfüllen der Lücken. In der Tat erleichtern die kurzen Feedback-Schleifen das Erreichen der erforderlichen Fähigkeiten und die Transparenz ermöglicht es den Beteiligten, den Bedarf und den Nutzen auf einfache Weise zu demonstrieren.
Jörg W Mittag
5

Planen Sie eine Proof-of-Concept-Aufgabe für den Sprint, in dem Sie Zeit einplanen möchten, um eine Fertigkeit zu erlernen. Konzentrieren Sie sich auf etwas sehr Spezifisches, z. B. darauf, wie Sie eine barrierefreie HTML-Tabelle erstellen. Planen Sie so lange Proof-of-Concept-Aufgaben, bis Sie die für die Story erforderlichen Fähigkeiten erworben haben. Geben Sie jeder POC-Aufgabe einige Story-Punkte und ein Fälligkeitsdatum, damit Sie sie richtig einplanen und den Fortschritt am Ende des Sprints anzeigen können.

Was ist, wenn eine Story für einen erfahrenen Entwickler nur 5 Punkte ergeben sollte? Vielleicht dauert es 3-4 Aufgaben zu je 8 Punkten. Nach diesen POC-Aufgaben beträgt die Story möglicherweise nur noch 5 Punkte, aber Sie haben zumindest die Zeit zum Erlernen der neuen Fertigkeiten eingeplant, sodass die 5-Punkte-Story nicht 40 Punkte hat - auch wenn die Story- und POC-Aufgaben insgesamt 40 Punkte ergeben.

Greg Burghardt
quelle
4

Scrum hat die Idee eines "Spikes". Wenn das Team eine neue Technologie oder Fähigkeit annimmt, ist eine Spitze eine Geschichte, um diese Arbeit zusammenzufassen. Während eine Story in Agile eine benutzerorientierte Funktionalität ist, ist die Ausgabe eines Spikes eine Dokumentation dessen, was gelernt wurde, und eine Aufschlüsselung der Arbeit, um sie in der realen Anwendung in die Praxis umzusetzen.

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

Dan Monego
quelle
3

Ich habe dies in den anderen Antworten nicht gesehen, deshalb wollte ich hinzufügen, dass viele Organisationen Gilden, Kapitel oder Exzellenzzentren in Bezug auf 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 dabei zu helfen, professionell zu wachsen. Dies schafft einen separaten Bereich außerhalb der Arbeit, in dem 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, gestärkt und erweitert werden. Dies ist nicht die einzige Lösung für dieses Problem, aber es scheint immer häufiger zu werden.

Daniel
quelle
1

Einige andere erwähnten bereits Aspekte, aber ich wollte nur mitteilen, wie ich mich in einem agilen Umfeld persönlich entwickle.

1. Laufende Entwicklung

Dies ist die einfachste Methode. Reduzieren Sie Ihre Kapazität in jedem Sprint, bis Sie genug Zeit haben, um die Weiterentwicklung fortzusetzen. Der schwierige Teil besteht normalerweise darin, sich an Ihren Plan zu halten und die Entwicklung durchzuführen, wenn weitere Aufgaben zu erledigen sind. In Notfällen können Sie diesmal gelegentlich Opfer bringen, ansonsten aber nicht.

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

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

Ich habe festgestellt, dass Sie, wenn Sie etwas mit größerer Wirkung geplant haben (z. B. zweitägiges Training während eines Sprints), den Sprint aktualisieren sollten, um dies zu berücksichtigen. Ich bin nicht sicher, was die theoretische Lösung dafür ist, aber ich habe oft gesehen, dass die Leute einfach die Übungsaufgabe an die Tafel schieben, um zu sehen, dass jemand damit beschäftigt ist.

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

Dennis Jaheruddin
quelle
1

Agile ist eine Reihe von Philosophien. Sehen Sie sich das Manifest an. Das ist ALL Agile. 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 Tortendiagramm betrachten, können Sie die Prioritäten nach Themen unterteilen. Ein solches Thema kann sein: Lernen 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 ist das, was Sie getan haben, noch auf dem Tisch und Sie können lernen, WÄHREND Sie tun, woran Sie arbeiten, und zu welchem ​​Zeitpunkt Sie versuchen können, die Story Points / Kapazität zu erhöhen, um mit der technischen Herausforderung fertig zu werden.

RandomUs1r
quelle
1

So zitieren Sie aus dem Agilen Manifest selbst:

Individuen und Interaktionen über Prozesse und Tools.
Arbeitssoftware über umfassende Dokumentation.
Zusammenarbeit mit Kunden über Vertragsverhandlungen.
Reaktion auf die Umstellung 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 auf den Kopf stellen.

Wenn ich meine eigene Definition von Agilität hinzufügen darf, können wir auch "Customer Collaboration" in den Mix einbringen. Ich finde, die beste Definition von Agilität basiert auf der Idee der Agilität - wenn sich der Kunde (oder die Umgebung) radikal ändert, wie gut gehen Sie damit um? Wenn Sie ein Umfeld für die Zusammenarbeit mit Kunden pflegen, ist Ihr Team interessiert, wenn es weiß, was es tut.

Cort Ammon
quelle