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?
quelle
Antworten:
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:
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 .
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).
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 :-)
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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).
quelle
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.
quelle