Wie passt Rapid Prototyping in eine agile Methodik?


12

Ich arbeite für ein großes Unternehmen, das den Einsatz agiler Prozesse vorschreibt. Beispielsweise verwenden wir für unsere Projekte cloudbasierte Services, die speziell auf das Management der agilen Entwicklung ausgerichtet sind.

Die spezielle Engineering-Gruppe, für die ich arbeite, hat traditionell keine Software entwickelt (stattdessen helfen wir, Projekte aus der Vogelperspektive zu steuern), aber das ändert sich. Wir haben eine breite Palette an bevorstehenden / geplanten Softwareprojekten, die größtenteils datenzentriert sind - z. B. werden wir Daten überwachen, sammeln, aggregieren und einige Berichte erstellen. Andere Aufgaben umfassen die Automatisierung mit spezialisierter Hardware und verschiedenen Arten von Client / Server-Architekturen (mehrschichtig). Ich soll bei der Einstellung mehrerer Mitarbeiter behilflich sein und viele unserer Pläne für die weitere Entwicklung formulieren.

Meine Frage ist, ob Rapid Prototyping (Wegwerfcode) in eine agile Philosophie passt. Zum Beispiel liebe ich Python und seine breite Palette an Paketen. Ich sehe die Möglichkeit, viele unserer Ideen sehr schnell mit einem Python-basierten Workflow umzusetzen. Ich denke jedoch, dass es eine Menge Wahrnehmungen gibt, dass Python nicht "Unternehmensqualität" ist, und ein Großteil dieser Arbeit müsste in Java oder vielleicht C ++ umgeschrieben werden.

Die Erstellung der Python-Prototypen würde uns jedoch viel Geld kosten und es uns ermöglichen, schnell echte Ergebnisse zu liefern.

Konnten Sie Rapid Prototyping - hoffentlich in Python - in einen soliden, agilen Workflow in einer Unternehmensumgebung integrieren?


3
Das Schreiben von Wegwerfcode ist eine gefährliche Sache. Wenn es funktioniert, warum sollte sich das Unternehmen dann dafür interessieren, dass es "wegwirft"? Es passiert immer, wenn Sie es ihnen nicht zeigen. Ich mache keine Kompromisse bei der Qualität meines Codes, selbst wenn ich an Hackathons teilgenommen habe. Ich könnte den einen oder anderen Hack hier und da reinstecken - aber nichts, was "weggeworfen" würde. Konzentrieren Sie sich beim Prototyping auf die Geschichten, die eine gute Demo ausmachen.
Dave Hillier

3
"große Firma, die den Einsatz von Agile diktiert" - die lustige Mischung aus "diktiert" und "agile" erinnerte mich irgendwie an Half-Arsed Agile Manifesto . Individuen und Interaktionen über Prozesse und Tools ... und wir haben verbindliche Prozesse und Tools, um zu steuern, wie diese Individuen (wir bevorzugen den Begriff "Ressourcen") interagieren
gnat

Antworten:


11

Das in RAD vorgesehene Konzept des "Prototyping" ist der agilen Entwicklung ein wenig fremd. Das heißt nicht, dass es nicht möglich ist, aber es ist ungewöhnlich.

Es gibt verschiedene Fälle, die untersucht werden müssen:

  1. Ist der Prototyp eine "leere Hülle", ein Modell oder eine Demo, um eine Vorstellung davon zu bekommen, wie ein Produkt aussehen würde? Sie können es sicherlich mit einer oder mehreren Geschichten tun - aber Sie bauen etwas aus Ihrer eigenen Vorstellungskraft auf, und kein Produkt aus echtem Feedback. Menschen bewerten eine Demo nicht so, wie sie ein Produkt bewerten. Sehen Sie sich zum Beispiel das Feedback zu unserem Prototyp der oberen Leiste im Vergleich zu unserer tatsächlichen Implementierung der oberen Leiste an .

  2. Ist der Prototyp etwas, das gebaut werden muss, um den Problemraum besser zu verstehen? Dann sollte es als Spitze abgedeckt und nur die Ergebnisse beibehalten werden (Quellcode ist vorübergehend).

  3. Ist der Prototyp eine Version 0.x? Ein Produkt, das mindestens lebensfähig ist ? Dann nutzen Sie den agilen Prozess Ihrer Wahl. Wenn Sie es in einer anderen Sprache neu erstellen müssen, ist es wahrscheinlich besser für Sie, wenn Sie ein anderes Produkt behandeln. Beachten Sie, dass dies manchmal als Abkürzung für das Schreiben einer Spezifikation behandelt wird ("es sollte dasselbe tun wie der Prototyp!"). Das ist eine wirklich schlechte Art, ein Produkt zu dokumentieren, aber dies wird wahrscheinlich besser als separate Frage und Antwort erklärt :-)


Ich bin der Meinung, dass dies die schlechteste Antwort ist, die ich bisher gefunden habe. Es fällt mir schwer zu verstehen, woher all diese positiven Stimmen kamen. Prototyping, um frühzeitiges Feedback zu erhalten, ist keine Seltenheit, sondern Teil einer agilen Entwicklung.
Martin Maat

@MartinMaat Mit "Prototyp" meinen Sie "eine frühe Version des an den Kunden gelieferten Produkts, die sich schrittweise iterativ im Produkt entwickelt"? In diesem Fall haben Sie natürlich Recht, dass es von Haus aus darauf ankommt, wie agil gearbeitet wird, und die drei von mir genannten Punkte erklären genau, wie. Das ist jedoch nicht das, was die Leute unter diesem Wort verstehen.
Sklivvz

8

Ist Rapid Prototyping (dh iterative und inkrementelle Entwicklung) nicht der springende Punkt von Agile?

Es hört sich so an, als hätten Sie Probleme mit der Wahrnehmung in Ihrem Unternehmen. Vielleicht möchten Sie alle daran erinnern, dass Agile nicht "alle Pläne verwerfen" bedeutet, sondern Test-Driven Development "alle Architekturen verwerfen".

Und Python ist keine Spielzeugsprache (falls es jemals eine war). Die NASA und ihre Vertragspartner verwenden Python , und wenn es für sie gut genug ist, ist es für mich gut genug.


Einverstanden, Python ist keine Spielzeugsprache ... Viele Organisationen in meinem Unternehmen verwenden jedoch Java in großem Umfang, und wir müssen eine Schnittstelle zu ihrem Code herstellen. Daher ist es eine Voraussetzung, dass wir Menschen mit starkem Java-Hintergrund anwerben . Außerdem geht es weniger um die Wahrnehmung der Menschen, die Software verstehen, sondern um die Wahrnehmung derjenigen, die dies nicht tun. Das sind die Leute, die einen Namen haben wollen, den sie schon einmal gehört haben, und dieser Name ist "Java" ... Ich würde uns freuen, wenn wir ein Team aufbauen, das sich Python als Hauptsprache verschrieben hat, aber das wird schwierig.
BobIsNotMyName

1
Selbst wenn Sie in Python einen Prototyp erstellen und einen Teil oder alles in Java neu schreiben, ist dies nicht unbedingt eine schlechte Sache (Python verfügt nicht über das Leistungsprofil, das einige Anwendungen benötigen). Von einer Sprache "gehört" zu haben, ist nicht gerade eine läutende Bestätigung. Wenn ich die Wahl hätte, würde ich persönlich eine andere Sprache als Java wählen, aber andere Kräfte diktieren oft die Wahl der Sprache.
Robert Harvey

@Robert Harvey: "Ist Rapid Prototyping (dh iterative und inkrementelle Entwicklung) nicht der springende Punkt von Agile?": Nach meinem Verständnis bedeutet Rapid Prototyping, einen schnellen, wegwerfbaren Prototyp und nach dem Kunden zu erstellen hat es genehmigt, ein echtes Produkt (mit dem richtigen Design, etc.) zu bauen. In Agile haben Sie einen Kompromiss zwischen beidem: Sie haben immer einen Prototyp, der technisch "gut genug" ist (wahrscheinlich nicht so gut wie ein System, das im Voraus entwickelt wurde, aber gut genug für die Produktion), damit es als. Geliefert werden kann Produkt, sobald der Kunde damit zufrieden ist.
Giorgio

1
@Giorgio: Das ist in Ordnung, aber Kunden wissen nicht, was sie wollen, bis Sie es ihnen zeigen und sie sagen: "Nein, das will ich nicht, das will ich . " Ob Sie das in Code oder auf einem Stück Papier tun macht für mich keinen Unterschied, solange es identifiziert, was der Kunde will.
Robert Harvey

2

Es gibt eine ziemlich etablierte Praxis in der extremen Programmierung, die Spike genannt wird . Dies bedeutet, dass es sich um Wegwerfcode handelt. Darin ist nichts Besonderes. Es ist nur ein Sprint, bei dem das erwartete Ergebnis das Wissen über den Wegwerfcode ist.

Der obige Link enthält genügend Informationen zu den bewährten Methoden und den Fallstricken von Spitzen.

Ihr spezifischer Anwendungsfall scheint ein gutes Beispiel zu sein: Es kann hilfreich sein, die Benutzeroberfläche zu entwerfen, das Dienstprogramm zu validieren und es einigen Benutzern zu zeigen.


1

Sie werden den Code wegwerfen und nicht in die Produktion aufnehmen (machen Sie das JEDEM klar), also ist es nicht wirklich wichtig, agil zu sein oder nicht. Alle agilen Praktiken sind für Prototypen rein optional: Sprints, Burn-Downs, Tests, Pair-Programming oder was auch immer Sie vorhaben zu verwenden.

Wenn Sie hauptsächlich Funktionsmodelle in Python erstellen, um Produktbesitzern und anderen Entscheidungsträgern bei der Konzeption des Projekts zu helfen, müssen Sie nicht unternehmensbereit sein. Wenn Sie jedoch einen Proof of Concept erstellen oder versuchen, festzustellen, ob Sie bestimmte Leistungsstufen bewältigen können, sollten Sie sich wahrscheinlich an die Produktionssprache halten. Das heißt nicht, dass Sie es nicht in Python ausprobieren können.

Egal, Sie werden den Code wegwerfen, haben aber das Wissen, dass Sie in der Lage sind, diese Funktion zusammen mit einem besseren Gespür für die Wünsche der Eigentümer auszuführen. Jetzt können Sie jede gewünschte Methode anwenden.


1

Ich möchte hinzufügen, dass Prototypen für das Lernen von entscheidender Bedeutung sind, auch im Sinne von Agile. Wenn Sie mit dem Prototyp lernen können, vor allem in schnelleren Feedback-Zyklen, dann entscheiden Sie sich dafür. Es geht darum, das Lernen zu maximieren und das Lernen mit dem Team zu teilen.


0

In Bezug auf das Lernen möchte ich hinzufügen, dass Prototyping Sie schneller zum Lernen bringt. Auf diese Weise können Sie überprüfen, ob sich die Leute überhaupt für das Problem interessieren, das Sie lösen möchten - und ob die beabsichtigte Lösung überhaupt das ist, wonach sie suchen -, ohne viel Zeit damit zu verschwenden, eine vollständige Lösung zu entwickeln, die dies könnte Lösen Sie am Ende ein Problem, das nicht schmerzhaft genug ist, oder lösen Sie es nicht auf die richtige Weise.


0

Im wahren Geist von Agile geht es um Interaktion und Kommunikation. Ich würde sagen, wenn der Prototyp als Hilfsmittel für die Kommunikation gut funktioniert, gibt es nichts Falsches, um ihn in der agilen Welt zu verwenden. In unserem Team (wir praktizieren Agile seit mehr als 5 Jahren) haben wir es von Zeit zu Zeit eingesetzt. Und es gibt einige Vorteile, die ich daraus ziehen kann

1) Unterstützung der Kommunikation

2) Holen Sie sich Benutzer in Lösungsinterviews und erhalten Sie frühzeitig Feedback

Vorbehalt:

Die direkte Kommunikation zwischen UX und Ingenieuren sollte NIEMALS durch Prototyping-Artefakte ersetzt werden. Wenn möglich, funktioniert das Pairing mit dem Ingenieur viel besser als die Kommunikation über einen Mediator (Prototyp).


0

Andere erwähnten bereits den Lernzweck von Spikes. Was fehlt, ist das zugrunde liegende agile Prinzip, das schnell versagt .

Eine der Säulen in der agilen Entwicklung besteht darin, die schwierigen Teile zu erkennen und Konzepte zu prüfen, um festzustellen, ob Sie dies überhaupt können. Die klassische Art, sich durch alle Aufgaben in einer "logischen" Reihenfolge zu arbeiten, kann sich als sehr kostspielig herausstellen, wenn Sie feststellen, dass Sie spät im Projekt nichts tun können. Alles, was bisher getan wurde, könnte eine Verschwendung sein.

Wenn es so enden muss, möchten Sie es so schnell wie möglich wissen. Dann können die Stakeholder entweder einfach aufhören, Geld zu verbrennen, während noch nicht viel verbrannt wurde, und akzeptieren, dass das, was sie wollen, nicht durchführbar ist, oder einen radikal anderen Ansatz für das Problem wählen, der eine neue Erfolgschance bietet. Wenn Ihre Prototypen diesem Zweck dienen, sind sie in der Tat äußerst wendig.

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.