Wie können wir Agile für Entwickler nutzbar machen, die gerne von Anfang bis Ende selbstständig große Stücke besitzen


52

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?


7
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.
Niemand

Zeigen Sie ihnen, dass die Zusammenarbeit mehr Spaß macht, weil sie dann besseren Code schreiben, mehr lernen und weniger Probleme haben.

Obwohl die Details spezifisch für die Programmierung sind, handelt es sich um ein allgemeines Problem bei der Verwaltung von Änderungen am Arbeitsplatz, das am Arbeitsplatz besser beantwortet werden sollte.
Mattnz

Zu Ihrer Information, zusätzlich zu den unten stehenden Antworten, ist eine andere Sache zu beachten, dass Agilität nicht bedeutet, dass Sie Facebook oder WhatsApp nicht versenden können. Es bedeutet, "wie" Sie versenden, ist unterschiedlich, aber Einzelpersonen können große Stücke besitzen. In einem Fall besaß ich beispielsweise ein großes Bereitstellungssystem, und unser Meilenstein für Schiffe lag alle zwei Wochen. Versand und Prozess sollten sich nicht auf das Design, die Entwicklung und die Freigabe von Features usw. auswirken (außer natürlich auf die Mechanik).
Omer Iqbal

Antworten:


22

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.


Danke für deine Antwort. Ich denke, in mindestens einem Fall sind wir auf Ihren letzten Vorschlag fixiert, wenn wir können. Wir müssen darüber nachdenken, wie das off-to-the-side-Projekt einer einzelnen Person nicht viel von dem von uns entwickelten Community-Eigentum in Frage stellt, aber das scheint sich zu lohnen.
Kris

4
Wenn Sie das mit ein paar Leuten machen wollen, achten Sie einfach darauf, wie sich dies auf die Moral anderer auswirkt, die tatsächlich Projektarbeit leisten. Sie haben möglicherweise das Gefühl, dass Sie Personen, die sich beschweren, besondere Vorteile oder Vorzugsbehandlungen gewähren.
maple_shaft

Achten Sie auch darauf, dass sich alle engagieren und miteinander kommunizieren , auch wenn einige Mitglieder an bahnbrechenden Entwicklungen arbeiten. Beispiele: Jeder nimmt an den täglichen und Planungsbesprechungen teil. Die Wegbereiter sollten regelmäßig einen Überblick über ihre Arbeit geben und ihre Ergebnisse vorführen (möglicherweise weniger häufig als das Agile-Team, aber immer noch zweiwöchentlich oder monatlich). Die Teamleiter sollten über die Hindernisse informiert werden, die die Wegbereiter gesehen haben. t verfolgen eine Sackgasse). Haftungsausschluss: Ich bin genau diese Art von Person und ich denke, es kann wirklich gut funktionieren.
Rwong

1
Wenn sich die Entwicklungsmitarbeiter eines Unternehmens in erster Linie aus Wegbereitern zusammensetzen und sie sich nicht an einen agilen Entwicklungsstil anpassen, haben sie möglicherweise große Schwierigkeiten, agile Entwicklungspraktiken anzuwenden. Andere Ansätze müssen gesucht werden. Da Vorreiter das Experimentieren lieben , müssen neue Mitarbeiter eingestellt werden, um die Produktivitätsanforderungen zu erfüllen, damit das Unternehmen seine F & E monetarisieren kann.
Rwong

44

Sie finden einfach keine Freude an der Arbeit wie früher.

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.

Einige Entwickler sind in erster Linie von der Freude motiviert, eine schwierige Aufgabe zu übernehmen, ein Design zu durchdenken, potenzielle Probleme zu durchdenken und das Problem dann über einen längeren Zeitraum Stück für Stück mit nur minimaler Interaktion mit anderen zu lösen

Warum können sie das nicht weiter tun?

Warum sie ändern?

Bitte lesen Sie das Agile Manifest ein paar Mal.

Das Agile Manifest sagt

Individuen und Interaktionen über Prozesse und Werkzeuge

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.

Arbeitssoftware über umfangreiche Dokumentation.

Tun sie das? Dann lass sie in Ruhe.

Zusammenarbeit der Kunden bei Vertragsverhandlungen.

Machst du das schon? Dann ändere dich nicht.

Reagieren, um nach einem Plan umzuschalten.

Wo können diese Leute schon auf Veränderungen reagieren? Wenn ja, dann waren sie bereits agil. Sie mussten sich nicht ändern.


Ich bin absolut sicher, dass wir einige Dinge falsch machen. Wir betrachten Agilität nicht als eine Reihe von Regeln, die Sie auf eine bestimmte Weise anwenden müssen, um richtig zu sein. Wir haben Entscheidungen getroffen, um bestimmte Einschränkungen zu überwinden, die wir früher hatten, und haben alles in unserer Macht Stehende getan, um Teams zusammenzustellen, ihnen einen Job zu geben, ihnen Grenzen für die Arbeit innerhalb zu setzen und sie in Ruhe zu lassen, um dies zu tun. Natürlich gibt es Einschränkungen, mit denen wir uns befassen müssen; Zum Beispiel Teams, die Material produzieren, von dem andere Teams abhängen. Wir machen diese Art von Problemen so weit wie möglich zu etwas, das die Teams lösen müssen. ...
Kris

Wir erwarten nicht, dass wir eines Tages unsere Stifte ablegen und sagen: "Ja, unser Übergang ist abgeschlossen, wir arbeiten jetzt so", weil wir erwarten, dass er sich für immer weiterentwickelt. In allen Fällen, in denen ein Entwickler Schwierigkeiten hat, Spaß an der Arbeit zu haben, sind sie von anderen umgeben, die jetzt mehr Spaß an der Arbeit haben. Die Teams können Probleme selbst lösen und sich selbst organisieren, um die Dinge so zu regeln, wie sie es für am besten halten. Es war bemerkenswert zu sehen, wie die Leute darauf reagieren. "Wir können nicht agil werden! Es würde bedeuten, dass wir die ganze Zeit in bla investieren müssten und bla aussortieren müssen, und das wird kosten!" "Ist es? Ok, mach es." ...
Kris

1
@Kris: "Gelegentlich fühlen sich Einzelpersonen im Team nicht mehr so ​​belohnt wie früher." Richtig. Das liegt daran, dass sich die Dinge geändert haben. Vielleicht möchten Sie bedenken, dass eine lange Erklärung für mich (einen völlig Fremden) möglicherweise nicht so hilfreich ist wie eine lange, eingehende Diskussion mit den tatsächlichen Personen, die das eigentliche Problem haben. "Individuen und Interaktionen über Prozesse und Werkzeuge". Rede mit ihnen. Was mögen sie nicht? Repariere, was sie reparieren wollen. Wenn sie "Agile" abschaffen wollen, dann müssen sie Agile abschaffen und strenge Zeitpläne erstellen. Lassen Sie weiterhin Änderungen am Zeitplan zu.
S.Lott

1
@Kris: "Sie sehen nicht, dass es repariert werden muss. Sie sehen möglicherweise ihren Platz darin nicht mehr." Das ist widersprüchlich. Das klingt sicher nach zwei parallelen Monologen: Sie haben ernsthafte Probleme und das Management teilt ihnen mit, dass ihre Beschwerden nicht den allgemeinen organisatorischen Zielen entsprechen. Das hört sich so an, als wäre kein Teil des Agile-Manifests von einer der Parteien gelesen oder verstanden worden. Sie "interagieren" nicht wirklich. Die Verärgerten dürfen keine Lösung vorschlagen. Sie sehen also nicht, dass es repariert werden kann.
S.Lott

1
Big +1 für "Es besagt nicht, dass Menschen gezwungen werden, auf eine Art und Weise zu arbeiten, die unangenehm und unproduktiv ist." Einer der Gründe, warum ich mich vor allen Methoden scheue - besonders wenn sie in Mode kommen - ist genau die Mentalität der Ausstecher, die sie fast immer bei denjenigen zu erzeugen scheinen, die sie implementieren.
NUR MEINE STELLUNGNAHME

23

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.


3
Kommentatoren : Kommentare dienen der Klarstellung und nicht der ausführlichen Diskussion. Wenn Sie eine Lösung haben, hinterlassen Sie eine Antwort. Wenn Ihre Lösung bereits veröffentlicht wurde, stimmen Sie sie bitte ab. Wenn Sie diese Frage mit anderen diskutieren möchten, verwenden Sie bitte den Chat . Weitere Informationen finden Sie in den FAQ .

8

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:

„Platzieren Sie 4-6 Personen in einem Raum mit Workstations und Whiteboards und greifen Sie auf die Benutzer zu. Lassen Sie sie alle ein bis zwei Monate laufende, getestete Software an die Benutzer liefern und lassen Sie sie ansonsten in Ruhe. “

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.


4

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.


2

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.


2

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.


Hallo - meine Absicht hing nicht damit zusammen, dass der Code vom Rest des Teams gehackt wurde. Ich habe das "Was hast du mit meinem Code gemacht !! Aargh!" ein paar mal, im wasserfall und im agilen, aber das ist ein anderes thema. Es geht um Menschen, die feststellen, dass sie ein Stück Arbeit nicht annehmen und unabhängig arbeiten können, um es zu beenden.
Kris

1
Okay, meine Antwort mag durch die hier stattfindenden Diskussionen etwas gemildert worden sein, aber wenn es sich um fähige Leute handelt, denen es jetzt an Eigentum mangelt, ist es meines Erachtens immer noch sinnvoll, ihnen zu helfen, sich auf etwas anderes zu konzentrieren, an dem sie Eigentum haben können und immer noch wichtige Beiträge für das Team.
Joel C

2

Ich werde versuchen, einige Aspekte zu veranschaulichen, die in anderen Antworten nicht angesprochen wurden und die, IMO, wichtig sind.

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.

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.


1
Some developers are primarily motivated by the joy of taking a piece of difficult 
work, thinking through a design, thinking through potential issues, then solving
the problem piece by piece, with only minimal interaction with others, over an 
extended period of time

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.


3
-1 - für die Annahme, dass die außergewöhnlich produktiven Leute alleinstehende Rangers sind, weil sie sich nicht für den agilen Ansatz interessieren. Haben Sie jemals die Sätze "Das eigene Potenzial ausschöpfen" oder "Eine Herausforderung genießen" gehört? Vielleicht vermissen sie das, während sie den agilen Ansatz üben.
Dunk

Das habe ich nicht angenommen. Meine Glocke wurde ausgelöst durch "mit nur minimaler Interaktion mit anderen", was die Definition eines einsamen Waldläufers ist. Manchmal sind Lone Ranger so, weil sie es so mögen. Es gibt einen Platz für sie, aber dieser Platz ist nicht in einem agilen Team. Manchmal sind Lone Rangers so, weil sie die Politik, die PM-Praktiken und die Bürokratie nicht mögen, die dem Programmieren einfach den ganzen Spaß rauben. In diesem Fall werden sie durch eine Änderung der Umgebung, wie sie von Agile versucht wird, von Lone Rangers abgelöst, um sich im Team zu amüsieren.
Soronthar

0

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:

  1. 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?

  2. 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.


Außerdem muss sich das Team möglicherweise fragen, ob es einen Fachkräftemangel im Team gibt, wenn man bedenkt, dass Joe dem Team nur "teilweise zur Verfügung steht".
Rwong

-1

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:

Der gesamte Code muss von einem Paar geschrieben werden, mit Ausnahme von David, der nur Code schreiben darf.

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.


Erinnert mich an eine Kleiderordnung in einer Firma in meiner vorsintflutlichen Zeit. Die Marketingmitarbeiter bestanden darauf, dass die Entwickler eine Kleiderordnung haben mussten, weil Marketroids den Kunden manchmal den Entwicklungsbereich zeigen wollten. Hilfreicherweise haben sich die Chefs eine Kleiderordnung für Entwickler ausgedacht: "Kein Entwickler darf kommen, um in einem Kleid zu arbeiten. Außer Debbie." Es hilft , wenn das Unternehmen von Hackern ausgeführt wird ....
NUR MEINE MEINUNG richtig

Nehmen Sie an, dass jemand, der etwas Zeit und Konzentration benötigt, um an einem schwierigen Problem zu arbeiten, introvertiert ist? Kann es nicht sein, dass man sich auf schwierige Dinge konzentrieren muss und sich nicht ablenken lässt?
Giorgio

Ich bereite mich darauf vor, meine eigene Antwort zu schreiben, in der ich die Kriterien für die Leistungsbeurteilung solcher "Spezialisten in agilen Teams" hervorhole: Anstatt dafür zu zahlen, "eine unersetzliche Menge an Wissen anzuhäufen", sollen Spezialisten auf der Grundlage ihrer "Fähigkeit zu zahlen" das Gesamtwissen (Spezialgebiet) des gesamten Teams zu erhöhen ".
rwong

@rwong: Ich glaube nicht, dass Sie dafür agil sein müssen: Jedes Team, das einen beliebigen Entwicklungsprozess verwendet, kann von einer besseren Wissensverteilung unter den Teammitgliedern profitieren.
Giorgio
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.