Wir sind ungefähr in der Mitte unseres Übergangs vom Wasserfall zum agilen Scrum. Wir haben von großen Teams in Technologie- / Disziplinensilos zu kleineren funktionsübergreifenden Teams gewechselt.
Der Wechsel zu Agile ist erwartungsgemäß nicht jedermanns Sache. Es gibt eine Handvoll Entwickler, die Schwierigkeiten haben, sich auf Agilität einzustellen. Ich möchte sie wirklich engagiert und herausgefordert halten und es letztendlich genießen, jeden Tag zur Arbeit zu kommen. Das sind kluge, fröhliche, motivierte Menschen, die ich sowohl auf persönlicher als auch auf beruflicher Ebene respektiere.
Das Grundproblem ist das Folgende: Einige Entwickler sind in erster Linie von der Freude motiviert, schwierige Arbeiten zu erledigen, ein Design zu durchdenken, potenzielle Probleme zu durchdenken und das Problem dann Stück für Stück mit nur minimaler Interaktion mit anderen über einen längeren Zeitraum hinweg zu lösen Zeitspanne. Sie erledigen ihre Arbeit in der Regel auf hohem Qualitätsniveau und pünktlich. Ihre Arbeit ist wartbar und passt zur Gesamtarchitektur. Auf dem Weg zu einem funktionsübergreifenden Team, das die Interaktion und die gemeinsame Verantwortung für die Arbeit sowie die Bereitstellung von Arbeitsfunktionen in kürzeren Abständen schätzt, entwickeln sich die Teams so, dass das gesamte Team dieses schwierige Problem umwirft. Viele Leute finden, dass dies eine positive Veränderung ist; Jemand, der es liebt, ein Problem von Anfang bis Ende selbstständig zu haben, verliert die Möglichkeit, so etwas zu tun.
Dies ist kein Problem, wenn die Menschen offen für Veränderungen sind. Sicher haben wir ein paar Leute gesehen, die Veränderungen nicht mögen, aber in den Fällen, die mir Sorgen machen, sind die Individuen gute Performer, aufrichtig offen für Veränderungen, sie bemühen sich, sie sehen, wie der Rest des Teams ist Sich verändern und sie wollen sich anpassen. Es geht nicht darum, dass jemand schwierig oder behindernd ist oder die saftigste Arbeit horten will. Sie finden einfach keine Freude an der Arbeit wie früher.
Ich bin mir sicher, wir können nicht der einzige Ort sein, der hier nicht aufgefallen ist. Wie sind andere darauf gekommen? Wenn Sie ein Entwickler sind, der motiviert ist, persönlich einen großen Teil seiner Arbeit zu besitzen, und sich an eine andere Arbeitsweise gewöhnt haben, was hat das für Sie getan?
There’s a great story of a manager of a Coca-Cola plant whose numbers were far better than his peers. When asked what his “secret” was, he said simply that rather than take a best practice and modify it to meet what the plant did, he instead modified the plant to match the best practice.
Du machst nicht agil, bis du verstehst, warum du es tust.Antworten:
Ich werde sagen, dass es nur sehr wenige Softwarehäuser gibt, die das Glück haben, die seltene Unterscheidung zu treffen, bei der Agile als Methode wirklich keinen Sinn ergibt. Wenn Ihr gesamtes Team aus wirklich außergewöhnlichen Software-Entwicklern besteht, die die Aspekte des Geschäfts und die Langlebigkeit mit dem Unternehmen und untereinander genau kennen, und wenn Ihre Geschäftsanforderungen und Kundenanforderungen in der Regel immer ähnlich sind und sich in der Mitte eines Jahres kaum ändern Release dann haben Sie das Glück, in einer so seltenen Umgebung zu arbeiten, in der Agile wahrscheinlich tatsächlich SCHADEN kann.
Es ist der effektivste Ansatz bei chaotischen und sich ständig ändernden Geschäftsanforderungen und Kundenbedürfnissen, der Entwicklung oder Änderung von Projektressourcen und der Verkürzung oder Verschiebung von Fristen. Eine solche Umgebung ist für die typische Entwicklung von Wasserfällen mit einem gewissen Schicksal verbunden, da sie für Teamänderungen während des Projekts anfällig ist, anfällig für sich ändernde Anforderungen und äußerst anfällig für Datumsänderungen.
Ich fühle für Ihre wertvollen Teammitglieder, die keine Freude mehr an ihrer Arbeit haben. Es mag sich durchaus um außergewöhnlich talentierte Leute handeln, die sich in ihre Arbeit vertiefen, aber am Ende kann eine Reihe von Faktoren, die außerhalb ihrer besten Kontrolle liegen, das Projekt dennoch zum Erliegen bringen. Der beste Weg, sich der Funktionsentwicklung zu nähern, besteht darin, die individuelle Haltung und den Ausdruck zu verlieren und im Hinblick auf den Teamansatz zu denken.
Wenn Sie feststellen, dass dies für sie nicht funktioniert, können Sie eine spezielle Verwendung für sie finden. Wenn sie außergewöhnlich talentiert und erfahren sind, prüfen Sie, ob sie an einer architektonischen Rolle interessiert sind, Entwürfe auf hohem Niveau entwerfen, Ansätze verfolgen, mit neuen Technologien experimentieren und Best Practices entwickeln. Lassen Sie diese Personen die Konstruktionsdokumentation kontrollieren und überprüfen.
Wenn ihnen das immer noch nicht passt, lassen sie sie vielleicht separat an äußerst komplexen technischen Umbauten auf einem separaten Zweig arbeiten, mit Prototypen und Konzeptnachweisen, oder anderen bahnbrechenden Arbeiten, die manchmal erledigt werden müssen, aber nicht gut in die Branche passen Umfang eines einzelnen Projekts oder Release.
quelle
Richtig.
Das ist ein großes Symptom dafür, dass du es falsch machst.
Agile sollte den Menschen keine schlechte neue Ordnung aufzwingen .
Agil sollte es dem Team ermöglichen, sich selbst so zu organisieren , dass es am effektivsten ist.
Selbstorganisation bedeutet, dass Management keine seltsamen Regeln auferlegt. Es legt keine schlechten Zeitpläne auf und es legt keine unnötigen Interaktionen auf.
Warum können sie das nicht weiter tun?
Warum sie ändern?
Bitte lesen Sie das Agile Manifest ein paar Mal.
Das Agile Manifest sagt
Es heißt nicht, dass Menschen gezwungen werden, auf eine Art und Weise zu arbeiten, die unangenehm und unproduktiv ist.
Wenn Sie Leute zu viel geringwertiger "Interaktion" zwingen, dann sind Sie zu weit gegangen.
Tun sie das? Dann lass sie in Ruhe.
Machst du das schon? Dann ändere dich nicht.
Wo können diese Leute schon auf Veränderungen reagieren? Wenn ja, dann waren sie bereits agil. Sie mussten sich nicht ändern.
quelle
Mein Unternehmen hat versucht (und versucht es immer noch nach Jahren), den gleichen Übergang zu vollziehen, und ich persönlich habe bisher nicht viel Erfolg damit gesehen. Während dieses Übergangs habe ich viel über agile Entwicklung und verschiedene Arten / Aspekte / Anliegen / Techniken nachgelesen, und ich stimme fest darin überein, dass reine agile Entwicklung am besten geeignet ist, wenn das gesamte Team aus hochrangigen, hochqualifizierten Mitarbeitern besteht (oder zumindest alle Personen des gleichen Niveaus).
Letzte Veröffentlichung Ich war in einem "agilen" Team, in dem IMHO zu viele Entwickler mit unterschiedlichen Fähigkeiten anwesend waren, und wir haben versucht, alle an dem gleichen Projekt zu beteiligen. Es war ein Disaster. Wir haben mehr geredet / gestritten als gearbeitet, und am Ende war das, was das Team produzierte, eine durchschnittliche Arbeit (lesen Sie Peopleware oder Mythical Man Month zum Thema Durchschnitt). Vergessen Sie Entwurfsmuster, vergessen Sie niedrige Kopplungsraten oder das Aufteilen von Code in kleine Klassen und Methoden. Vergiss den Versuch, etwas Interessantes zu machen, weil a) das nicht von allen Teammitgliedern erklärt und verstanden werden konnte (zumindest nicht rechtzeitig) und b) wir agil waren, egal was ich mit dieser Iteration angefangen habe, jemand anderes mit absolut keinem Verständnis würde in der nächsten Iteration fortfahren. Persönlich,
Ich hasste die Tatsache, dass ich mit C ++ - Vorlagen nichts anfangen oder einige coole (aber etwas komplexe) Low-Level-Framework-Bibliotheken schreiben konnte, die unser Leben so viel einfacher gemacht hätten. Wie kann so etwas gemacht werden, wenn niemand im Team überhaupt in der Lage ist, STL-Header-Dateien zu lesen, aber wir alle sollen jeweils an einer Sache arbeiten. Das gesamte Projekt wurde Feature für Feature brachialisiert, denn genau das scheint Agile zu betonen.
Gleichzeitig gibt es nur wenige (sehr wenige) Leute in meinem Unternehmen, mit denen ich sehr gerne zusammenarbeiten und meinen gesamten Code teilen würde.
Aber jetzt stehen Sie vor einer Wahl. A) Nehmen Sie all Ihre guten, erfahrenen Entwickler, die hochwertigen Code produzieren, und ordnen Sie sie in ihr eigenes Team ein. Den Rest teilen Sie in ein separates Team. Oder B) versuchen Sie, Teams auszugleichen und gute mit weniger guten auszutauschen. In (A) ist das Problem, dass eines Ihrer Teams weit unterdurchschnittlich abschneidet und keine guten Fähigkeiten / Gewohnheiten von den Guten aufnimmt. In (B) fühlen sich Ihre Guten (in einem reinen, agilen Umfeld) frustriert und beginnen, an ihren Lebensläufen zu arbeiten. Meins ist auf dem neuesten Stand.
Also, was machst du?
Ich weiß nicht, ob dies die richtige Lösung ist. Fragen Sie mich in etwa einem Jahr noch einmal. Aber was ist, wenn Sie anstelle von "pure agile" ein Team gebildet haben, aber klar identifiziert haben, welche Person (en) mehr Einfluss hat (Design, Codeüberprüfungen ...) und sicherstellen, dass diese Person dies versteht und für zusätzliche Verantwortung belohnt wird. Wenn die Teammitglieder mit der Zusammenarbeit beginnen, identifizieren Sie diejenigen, die gute Gewohnheiten / Praktiken aufgreifen, und heben Sie sie auf die gleiche Ebene wie Ihre guten Leute. Wenn die Leute ein oder zwei Releases zusammenarbeiten, lernen sie hoffentlich, was die andere Person denkt und wie sie arbeitet, damit sie besser mit demselben Code zur gleichen Zeit arbeiten können. Aber bis dahin, wenn Sie nur Leute in ein Projekt werfen, wird es nichts als Frustration sein (wieder nur meine Meinung).
Einige meiner Gedanken basieren darauf, wie ich beruflich mit Software angefangen habe. Als ich kooperierte, arbeitete ich mit einem Mann zusammen, der mein Mentor war. Er hat mir alles beigebracht, von der Codierungsethik über gutes Design bis hin zum Lesen von Tausenden und Abertausenden von Codezeilen, die Sie nicht geschrieben haben. Am Anfang waren wir bei weitem nicht auf dem gleichen Level und es wäre lächerlich, wenn wir in ein agiles Team gestellt würden und uns sagen würden, dass wir an jedem anderen Code arbeiten können. Aber im Laufe der Zeit (einige Jahre) begannen wir sehr ähnlich zu denken. Ich konnte seinen Code mit einem einfachen Blick verstehen und er sagte mir mehrmals, dass er absolut keine Probleme hatte (und davon überrascht war), meinen Code zu navigieren, den er noch nie zuvor gesehen hatte. Das hat Jahre gedauert, nichts, was über Nacht passiert ist. Nach einer Katastrophe nach der anderen in einem agilen Umfeld in den letzten Jahren
Dies ist keine wirkliche Antwort, aber es fasst meine Erfahrungen / Beobachtungen zusammen. Ich möchte sehen, was andere dazu sagen würden.
quelle
Was ist agil?
Ist es:
eine Reihe von Regeln, die Sie befolgen müssen, um das zu erreichen, was die Regelsetzer beabsichtigt haben?
Best-Guess-Ansatz, um Dinge zu erledigen, die Ihren besonderen Stärken, Anforderungen und Einschränkungen entsprechen?
Wenn Sie denken, dass Agile die erste ist und Sie sich immer an alle Scrum-Regeln halten und sich ständig Sorgen machen, ob Sie es richtig machen oder nicht, wird Sie dieser Link vielleicht ein wenig aufklären.
Wenn Sie mehr über die Sekunde nachdenken, dann gratulieren Sie - Sie werden agil. Jede agile Methodik kann nur ein Vorschlag sein, wie die Dinge erledigt werden sollen. Wenn sich ein Aspekt Ihrer gewählten agilen Methode für Sie nicht richtig anfühlt, haben Sie die Pflicht, die Verwendung einzustellen, sie zu ändern oder auf andere Weise agil zu seindarüber. Wichtig ist, dass Sie etwas erreichen, dass Sie nicht von künstlichen Zwängen aufgehalten werden - nicht nur von den Zwängen, die wir alle aus unseren alten Wasserfalltagen kennen und lieben, in denen der Premierminister Sie für vollständig dokumentierte Diagramme belästigen würde, die niemand jemals würde Lesen Sie nur, weil "das ist, was der Prozess zu tun sagt", sondern auch aus den Zwängen dessen, was Sie verwenden. Wenn ein tägliches Gedränge sich wie eine Einschränkung anfühlt, müssen Sie nicht blinzeln! Sie blind zu haben, weil die Regeln dies vorschreiben, ist nicht wendiger als die alten Methoden.
Wenn Sie einige Leute haben, die Dinge erledigen, indem sie in einem Raum mit nur einer Gallone Cola und einer Luke für Pizza eingeschlossen werden, dann nutzen Sie diese Tatsache. Geben Sie ihnen einen Teil des Systems, der größtenteils in sich geschlossen ist, und schließen Sie sie weg. Wenn sie fertig sind, sollten Sie sie dazu bringen, diese Arbeit in den Rest des Systems zu integrieren (oder jemanden anderen dazu zu bringen, dies zu tun, wenn er es vorzieht).
Alistair Cockburn beschrieb dies in seinen Methoden. Wenn Sie "Level 3-Praktiker" haben, lautet eine absolut gültige agile Methode wie folgt:
Da es sich um eine Mischung von Menschen handelt, müssen Sie einen Weg finden, wie sie konstruktiv zusammenarbeiten können. Das bedeutet, dass ein Ansatz mit einer Größe für alle wahrscheinlich nicht sehr effizient sein wird. Sie müssen also die Aufgaben aufteilen und gleichzeitig sicherstellen, dass das gemeinsame Ziel betont wird. Es ist in Ordnung, diese Leute an den Code zu schicken, aber sie müssen sich darüber im Klaren sein, wie ihre Sachen ein wesentlicher Bestandteil der restlichen Arbeit des Teams sein werden, und dass ein Misserfolg dessen, was sie produzieren, ein Misserfolg ist . Sobald sie das verstanden haben (dh sie können nicht einfach das tun, worauf sie Lust haben und etwas Unbrauchbares liefern), ist Ihre Arbeit erledigt.
quelle
Nehmen wir an, agil ist nicht für jedermann und agil ist nicht für jedes Projekt. Gleichzeitig ist Agile ein sehr weit gefasster Begriff und Scrum ist nur eine Implementierung eines agilen Prozesses - ich kann irgendwie sagen, dass die Implementierung mit den wahrscheinlich größten Einschränkungen versucht, einen standardisierten Prozess mit bekannten Schritten einzurichten.
Ein weiterer Bereich, über den man nachdenken sollte, ist der Zweck von Agile. Ist agil, wie Entwickler arbeiten? Vielleicht - einige Methoden gehen in der Tat in diese Richtung. Agile selbst deckt jedoch Bereiche außerhalb der Entwicklung ab. Bei Agile geht es mehr darum, den gesamten Prozess voranzutreiben, wie eine Interaktion funktioniert, wie Sie das Arbeitsprodukt mit den wichtigsten Funktionen pünktlich bereitstellen und wie Sie Ressourcen steuern, wie Sie sehen, wo Sie sich im Projekt gerade befinden. usw.
Es gibt Methoden, die nichts an Ihrem Entwicklungsprozess ändern wollen - Scrum ist nicht die richtige. Alle agilen Methoden legen Wert auf kontinuierliche Verbesserung. Sie werden einen ineffizienten Schritt in Ihrem Prozess erkennen und versuchen, ihn zu verbessern / zu ändern - das ist der agile Weg. Überprüfen Sie eine andere beliebte agile Methode - Kanban.
Sie / Ihre Firma haben sich für Scrum entschieden und es kann dazu führen, dass einige Leute es nicht mögen und gehen. Sie sollten sich mit jedem Ihrer Entwickler separat befassen. Sie sollten mit jedem darüber sprechen und versuchen, einige Interessen zu finden, die es ihnen ermöglichen, die Arbeit wieder zu genießen.
Sie können als Mentoren fungieren, andere unterrichten und ihnen zeigen, wie sie Code iterativ umgestalten können, um eine bessere Architektur zu erreichen. Sie können zusammen einen Entwurf für eine globale Architektur bilden, der projektübergreifend verwendet wird. Sie können auch an Proof-of-Concepts arbeiten, an RFI (Request for Information) teilnehmen, wenn Kunden Anfragen stellen, um über die Machbarkeit der Anforderungen nachzudenken. Sie können zu zweit mit weniger erfahrenen Entwicklern zusammenarbeiten und die komplexe Aufgabe gemeinsam erledigen usw. Ihr Hauptwert sollte darin bestehen, ihre Fähigkeiten einzusetzen und anderen zu ermöglichen, von ihnen zu lernen.
Scrum und Agile auf globaler Ebene halten in der Tat Einzelpersonen zurück und priorisieren Teams - Teams liefern Anwendungen, keine Einzelpersonen. Diese Idee basiert auf der Tatsache, dass Sie niemals ein Team haben werden, in dem alle über die gleichen Fähigkeiten und Erfahrungen verfügen.
Wenn Ihre Umstellung auf Scrum erfolgreich ist, sollten sie feststellen, dass sich der Gesamtprozess verbessert, die Lieferzeiten verkürzt, die Qualität verbessert und die Kunden zufriedener sind. Sie können immer noch glauben, dass selbst entwickelte Anwendungen viel schlechter sind, als sie sein könnten, aber das ist der Punkt - der Kunde möchte nicht den besten Code, der jemals geschrieben wurde. Kunden wünschen sich den minimalen / billigsten / am schnellsten entwickelten Arbeitscode, der ihren Anforderungen entspricht. Wenn brachiale Gewalt dafür ausreicht, dann sei es. Dies ist etwas, das hochqualifizierten Entwicklern Probleme bereiten kann, aber es ist kein Versagen von Agilität, es ist der Ort, an dem geschäftliche Anforderungen und Perfektionismus gegeneinander antreten.
quelle
Es kommt dem gesamten Team zugute, wenn Sie einige der Hauptprobleme annehmen und sie an einen großartigen Entwickler weitergeben. Jeder kann sich danach auf den neuesten Stand bringen und dabei etwas lernen. Erstellen Sie einfach keine vollständige Anwendung auf diese Weise.
Sie verwässern den Code nicht auf den kleinsten gemeinsamen Nenner. Sie holen die unerfahrenen Entwickler ein.
quelle
Es wurde viel darüber diskutiert, was "agil" ist oder nicht, und es wurden viele persönliche Gefühle, Erfahrungen und Bedenken hinsichtlich des hier geteilten agilen Prozesses geäußert, aber ich habe keine wirkliche Antwort auf die Frage gesehen. Die ursprüngliche Frage war, wie Sie Ihre Top-Entwickler motivieren können, wenn sie ihren Code sehen, den sie auf der Ebene der reinen Kunstform geschrieben haben und in den sie ihren Schweiß und ihr Blut investiert haben, der von jemand anderem gehackt und "korrupt" wurde. Beachten Sie, dass dies, ob agil oder nicht, irgendwann passieren wird. Es ist jetzt nur sichtbarer, weil sie immer noch zur gleichen Zeit wie andere am Code arbeiten, anstatt dass es zu diesem Zeitpunkt die typische Übergabe gibt, die unterstützt werden muss Sie würden diese Änderungen einfach nicht sehen.
Was ich hier als Schlüssel sehen würde, ist, die Verantwortung dieser Entwickler zu erweitern und ihnen zu helfen, ihren Fokus auf das Ganze zu richten. Möglicherweise bedeutet dies einen neuen Titel, z. B. "Software Architect" oder "Team Lead" oder "Senior Software Engineer". Zeigen Sie ihnen dann, dass dies eine Gelegenheit ist, nicht nur für ein einzelnes Projekt, sondern für mehrere Projekte eine größere Wirkung zu erzielen. Das Gefühl der Eigenverantwortung kann immer noch vorhanden sein, aber ihr Fokus sollte nicht mehr darauf liegen, ein einziges großartiges Projekt zu liefern, sondern dazu beizutragen, die Messlatte für ALLE zu setzenprojekte. Helfen Sie ihnen, ihren starken Wunsch, etwas Großartiges zu entwickeln, in den Griff zu bekommen, aber konzentrieren Sie sich darauf, die Softwareentwicklungspraktiken Ihres Unternehmens und die der anderen Entwickler auszubauen. Anstatt sich vor dem Gedanken zu schrecken, dass ihre Mitarbeiter ihren Code in Stücke hacken, können sie auf diese Weise die nächste Stufe erreichen, ihre Teamkollegen betreuen und auf die nächste Stufe bringen.
quelle
Ich werde versuchen, einige Aspekte zu veranschaulichen, die in anderen Antworten nicht angesprochen wurden und die, IMO, wichtig sind.
Diese Art von Entwicklern kann es schwierig finden, sich an ein agiles Umfeld anzupassen, und ihre Haltung wird oft als "Unwillen zur Veränderung" abgetan, möglicherweise in Bezug auf das Ego oder auf altmodisches Verhalten.
Was oft ignoriert wird, ist, dass man zur Lösung komplexer Probleme eine Menge Informationen verarbeiten muss, und dass dies eine Menge Analyse, Nachdenken, Versuchen, Skizzieren einer Lösung, Wegwerfen und Versuchen einer anderen erfordern kann. Solch ein komplexes Problem kann einige Stunden bis einige Wochen gezielter Arbeit erfordern, bis Sie eine endgültige Lösung gefunden haben.
Ein Ansatz ist, dass eine Entwicklerin die Problembeschreibung aufnimmt, in ihr Zimmer geht und zwei bis drei Wochen später mit einer Lösung zurückkommt. Der Entwickler kann jederzeit (bei Bedarf) eine Interaktion mit anderen Teammitgliedern oder mit Stakeholdern initiieren (Fragen zu bestimmten Themen stellen). Der größte Teil der Arbeit wird jedoch vom Entwickler erledigt, dem die Aufgabe zugewiesen wurde.
Was passiert in einem agilen Szenario? Das Team teilt das Problem nach einer schnellen Analyse (Pflege) in kleine Stücke (User Stories) auf. Die Hoffnung ist, dass die User Stories unabhängig voneinander sind, aber dies ist häufig nicht der Fall: Um ein komplexes Problem in wirklich unabhängige Teile aufzuteilen, benötigen Sie ein Wissen, das Sie normalerweise erst nach mehrtägigen Arbeiten erhalten. Mit anderen Worten, wenn Sie in der Lage sind, ein komplexes Problem in kleine unabhängige Teile aufzuteilen, bedeutet dies, dass Sie es im Grunde genommen bereits gelöst haben und nur noch Fleißarbeit leisten müssen. Bei einem Problem, das beispielsweise drei Wochen Arbeit erfordert, wird dies wahrscheinlich in der zweiten Woche der Fall sein, nicht nach ein paar Stunden Putzen zu Beginn des Sprints.
Nachdem ein Sprint geplant wurde, arbeitet das Team an verschiedenen Teilen eines Problems, die wahrscheinlich voneinander abhängig sind. Dies verursacht einen hohen Kommunikationsaufwand, da versucht wird, verschiedene Lösungen zu integrieren, die zwar gleich gut sind, sich jedoch voneinander unterscheiden. Grundsätzlich wird die Trial-and-Error-Arbeit auf alle beteiligten Teammitglieder verteilt, mit zusätzlichem Kommunikationsaufwand (quadratisch steigend). Ich denke, einige dieser Probleme werden in diesem Artikel von Paul Graham, insbesondere in Punkt 7, sehr gut veranschaulicht .
Durch die Aufteilung der Arbeit auf die Teammitglieder wird natürlich das Risiko verringert, dass ein Teammitglied das Projekt verlässt. Zum anderen kann das Wissen über den Code auf andere Weise vermittelt werden, z. B. durch Code-Reviews oder durch technische Präsentationen an die Kollegen. In dieser Hinsicht glaube ich nicht, dass es ein Patentrezept für alle Situationen gibt: Shared Code-Besitz und Pair-Programmierung sind nicht die einzige Option.
Darüber hinaus führt die "Bereitstellung der Arbeitsfunktionalität in kürzeren Abständen" zu einer Unterbrechung des Arbeitsablaufs. Dies mag in Ordnung sein, wenn der Funktionsblock "Hinzufügen einer Abbrechen-Schaltfläche auf der Anmeldeseite" lautet, der bis zum Ende eines Sprints abgeschlossen sein kann. Wenn Sie jedoch an einer komplexen Aufgabe arbeiten, möchten Sie solche Unterbrechungen nicht: Es ist wie Versuche ein Auto 100 km so schnell wie möglich zu fahren und halte alle 5 Minuten an, um zu überprüfen, wie weit du gekommen bist. Das wird dich nur verlangsamen.
Häufige Checkpoints sollen ein Projekt zwar vorhersehbarer machen, aber in manchen Fällen kann die Unterbrechung sehr frustrierend sein: Man kann kaum schneller werden, wenn es schon Zeit ist, anzuhalten und etwas zu präsentieren.
Daher denke ich nicht, dass die in der Frage beschriebene Haltung nur mit dem Ego oder dem Widerstand gegen Veränderungen zusammenhängt. Es kann auch sein, dass einige Entwickler den oben beschriebenen Lösungsansatz für effektiver halten, da sie die von ihnen gelösten Probleme und den von ihnen geschriebenen Code besser verstehen können. Wenn solche Entwickler gezwungen werden, auf andere Weise zu arbeiten, kann dies zu einer Verringerung ihrer Produktivität führen.
Ich glaube auch nicht, dass es agilen Werten zuwiderläuft, wenn einige Teammitglieder isoliert an bestimmten, schwierigen Problemen arbeiten. Schließlich sollten sich die Teams selbst organisieren und den Prozess anwenden, den sie im Laufe der Jahre als den effektivsten erwiesen haben.
Nur meine 2 Cent.
quelle
Es hört sich so an, als wären sie "Lone Rangers". Im kanonischen Scrum können diese Leute einfach nicht in das Team passen (sie vermissen das "Interaktions" -Bit).
Wenn sie keine "Lone Rangers" sind, dann gibt es Hoffnung. Wenn Sie Scrum ordnungsgemäß ausführen, müssen sie Teil des Entwurfs der Funktion sein, an der sie arbeiten werden (während der Sprint-Planung). Dies ist ungefähr das einzige Mal, dass sie mit anderen interagieren müssen. Sie können ihnen sogar alle Geschichten "zuweisen", die sich auf diese eine Funktion beziehen.
Während des Sprints werden sie nur vom täglichen Scrum "gestört" ... bis Sie ihnen beweisen können (durch Taten, nicht durch Worte), dass es nur 15 Minuten ihrer Zeit sind und nur um sicherzustellen, dass alles läuft glatt. Halten Sie sich an die drei Fragen, und die meisten Leute werden aufhören, sie zu befolgen.
In unserem Team haben wir eine spezielle Gruppe, die sich ausschließlich um Leistungsverbesserungen kümmert. Wir sehen sie nicht sehr oft, nur zu Beginn des Sprints, um über die durchzuführenden Änderungen zu sprechen, und am Ende in der Retrospektive. Sie haben einen eigenen "Scrum Leader", der an das Scrum of Scrum Team berichtet. Ich kann Ihnen sagen, sie amüsieren sich.
quelle
Wenn Joe (Ihr Hero-Entwickler) ein bisschen flexibel ist, sehe ich kein Problem:
Lassen Sie das Team sich wie oben erwähnt selbst organisieren: Wenn Sie einige Probleme am besten lösen, indem Sie Joe selbst daran herumkauen lassen, dann erwarten Sie, dass ein aufgeschlossenes selbstorganisierendes Team diese Schlussfolgerung von sich aus zieht.
Die einzigen Herausforderungen, die innerhalb der wenigen Einschränkungen bleiben, die Scrum auferlegt:
Regelmäßige Bereitstellung von Funktionen: Wenn Sie Joe monatelang auf einem Problem herumkauen lassen, ohne dass dies bis zum Ende angezeigt wird, ist Joe in der Tat nicht agil: Er nimmt den Produktbesitzer als Geisel und lässt ihm nicht die Möglichkeit, die Spezifikation zu ändern dieser Teil des Produkts. Bei dieser Praxis besteht auch die Gefahr, dass er zu spät kommt und niemand es bemerkt. (Aber deiner beschreibung nach ist das nicht so wahrscheinlich). Abhilfe: Wäre es zu viel von Joe zu verlangen, mit der PO zusammenzusitzen, die User Story aufzubrechen und sich auf Zwischenergebnisse zu einigen, vorzugsweise (aber nicht unbedingt) mit Nutzwert?
Einhaltung der vom Product Owner festgelegten Prioritäten: Wenn Teile des Codes im Besitz von Experten sind, riskieren Sie eine Situation, in der die Entwicklung des Produkts eher von der Verfügbarkeit der einzelnen Experten als von den kommerziellen Prioritäten abhängt: Der Rest des Teams könnte arbeite an weniger wichtigen Features, während die Top 3 Features ins Stocken geraten, weil "nur Joe das kann". Das ist schlecht. In diesem Moment sollte das Team (vorübergehend) seine Gewohnheit ändern und die Joe-Arbeit auf mehr Teammitglieder verteilen.
Kurz gesagt: Wenn Joe, der Heldenentwickler, mit der PO einverstanden ist, wie er den Fortschritt jedes Sprints zeigt, kann das Team ihm bestimmte Geschichten zuweisen und ihn in Ruhe lassen. Aber wenn PO zu viel Arbeit für Joe hat und nicht genug für das Team (oder umgekehrt), müssen Joe und das Team sich anpassen, nicht der PO.
quelle
Die Regeln für ein agiles Team sollten an das Team angepasst werden - dies kann wirklich eine persönliche Anpassung sein. Ich habe zum Beispiel in einem Team gearbeitet, in dem die Regel lautete:
David war ein leitender Entwickler / Architekt, der hauptsächlich an Werkzeugen arbeitete, die andere in ihrem eigenen Code verwenden würden. Er besaß sehr viel den Code, den er schrieb. Es war wartbar und erprobt, und jeder im Team wusste, dass er wahrscheinlich der beste Programmierer war und dass das Team am besten bedient werden konnte, indem er bestimmte Gerüstteile baute und sie dem Team als vollständig präsentierte.
Ich habe keine Antwort für Introvertierte mit Gartenvielfalt, aber für außergewöhnliche Introvertierte wird das Team gerne andere Regeln anwenden, um den Nutzen daraus zu ziehen.
quelle