Ich habe also ein Programm, an dem ich bereits 2011 und bis 2012 gearbeitet habe, aber die letzte Veröffentlichung war im Dezember 2011 . Ich habe aktiv daran gearbeitet, aber Feature Creep lockte seinen hässlichen Kopf an und jetzt ist er mit Tonnen von unvollendeten Features gefüllt.
Das Schlimme daran ist, dass sich beim Implementieren eines Features ein neues einschleicht. Was kann ich tun, um ein Einschleichen von Features in der Zukunft zu vermeiden, sodass ich in über einem Jahr tatsächlich eine Veröffentlichung herausbringen kann ?
Das Projekt basiert auf iOS und hatte Releases für jedes iOS-Versionsupdate, aber das letzte war mit 5.1 (2011) zurück. Ich würde gerne in der Lage sein, diesen stabilen Release-Zyklus wieder herzustellen, aber es hat sich als zu schwierig erwiesen.
quelle
Antworten:
Nach meiner Erfahrung ist es am einfachsten, wenn Sie eine Entwicklungs- und Release-Trittfrequenz haben, die nicht den Anforderungen entspricht, die Sie erfüllen möchten. So habe ich es gemacht:
Auf diese Weise können Sie nach jedem Feature einfach ein Release verschieben, wenn Sie möchten ... oder auf ein Rollup warten, das den Wert bietet, den ein Release haben soll.
Hinweis:
quelle
Die Antwort ist banal und häufig unmöglich: lehnen Sie es ab, zusätzliche Funktionen hinzuzufügen.
Im Einzelnen lautet die Antwort, warum ein neues Feature in den Feature-Creep-Bin fällt. Wenn wir davon ausgehen, dass Features, die sich schleichen, diejenigen sind, die einem Projekt hinzugefügt werden, obwohl ihre Funktionalität nur tangential zur beabsichtigten Verwendung des Projekts ist und die schleichenden Features nützlich und nicht überflüssig sind, besteht die Antwort darin, sie zu trennen , aber verwandte Tools. Verwenden Sie die Unix-Philosophie, orthogonale Werkzeuge zu erstellen und zusammenzufügen.
Aus Sicht des Projektmanagements ist die Antwort vergleichbar. Entscheiden Sie, wie viel Zeit Sie für die nächste Veröffentlichung verwenden möchten, und legen Sie eine Frist fest. Schätzen Sie die Merkmale und schneiden Sie sie so weit ab, dass die Frist eingehalten wird. Wenn andere Stakeholder als Sie involviert sind, lassen Sie sie entscheiden, was für sie am wichtigsten ist.
Einen guten Überblick über Scheduling gibt es bei Joel on Software:
http://www.joelonsoftware.com/articles/fog0000000245.html
quelle
Eine der wichtigsten Lektionen in der Entwicklung ist das Wissen, wann es Zeit ist, damit aufzuhören.
In der Regel fügt ein Entwickler Funktionen hinzu. Das wiederum inspiriert weitere Ideen. So werden weitere Funktionen hinzugefügt. Das ist, wie Sie sagten, einer der Wege, auf denen ein Projekt zu Vaporware wird. Der Entwickler sieht das Projekt nie als "abgeschlossen" an, daher wird es nie veröffentlicht.
Die Gewohnheit, in die Sie sich begeben möchten, besteht darin, nicht mehr an ein Release / eine Version als 'abgeschlossenes' Projekt zu denken. Betrachten Sie Entwicklung vielmehr als langfristigen Prozess. Stellen Sie sich Releases als Meilensteine auf dem Weg zu dem vor, was Sie sich eines Tages für das Programm erhoffen. Daher ist eine Veröffentlichung / Version nur eine Momentaufnahme, in der Sie sich längerfristig befinden ... eine Momentaufnahme, die gut abgerundet und getestet wurde.
Was Sie praktisch tun können, ist sich hinsetzen und Ihre nächste Veröffentlichung festlegen. Es muss nicht schrecklich gründlich sein. Notieren Sie die 3-5 neuen wichtigen Stücke von Funktionalität , die Sie glauben , sind von wesentlicher Bedeutung für die nächste Version. (Die tatsächliche Anzahl der Funktionen kann je nach App-Typ variieren, ohne Berücksichtigung von Fehlerkorrekturen oder geringfügigen Änderungen an der Benutzeroberfläche. ) Arbeiten Sie daran. Wenn Sie andere Ideen haben, ist das in Ordnung ... Machen Sie sich einfach Notizen und implementieren Sie diese in der folgenden Version. Wenn Sie diese 3-5 Elemente fertiggestellt haben, ist Ihre Version für die Betaversion bereit.
Wenn ich eine neue Anwendung starte, denke ich normalerweise über die endgültige Vision für die Anwendung nach. Das ist für mich das, was ich in Version 3 der App will. Mit diesem Benchmark habe ich eine Vorstellung davon, was eine solide Version 1 ausmacht - nur die Grundlagen.
Zusammenfassung:
Jede Veröffentlichung muss nicht die fertige "Vision" des Projekts sein. Nur ein Meilenstein in diese Richtung.
quelle
Verwenden Sie ein Versionskontrollsystem, in dem es kostengünstig ist, einen Zweig für eine Idee zu erstellen, und halten Sie ihn von Ihrem Veröffentlichungspfad fern. Zum Beispiel
git
kann man sich in eine Idee "einschleichen" und sie danngit stash
wegschaffen. Später können Sie diese Stashes überprüfen und sie in der Reihenfolge auswählen, in der sie interessant erscheinen.Erstellen Sie für größere Features eine echte Verzweigung (sodass Sie mehrere Commits ausführen können). Ein typisches Beispiel: Als ich den Garbage Collector generationsübergreifend unterstützen wollte, habe ich eine Filiale eingerichtet. Verstecke fangen die ablenkenden kleinen Dinge sehr gut ein. Große Features können als Stashes beginnen, sich dann in Zweige verwandeln und schließlich zusammengeführt werden, wenn sie fertig sind.
Mit Stashes und Branches können Sie eine Bestandsaufnahme Ihrer Ideen durchführen, Prioritäten setzen und einen Bereich für die Veröffentlichungen Ihres Solo-Projekts festlegen, genau wie bei einem Projekt mit verwaltetem Team.
Schauen Sie, wenn Sie eine Idee haben, muss sie irgendwohin gehen , und das Beste ist Code : das Repo. Sich einschleichen ist besser als gute Ideen zu vergessen. Wenn Sie jedoch alle Funktionen in dieselbe Hauptzeile einbinden, verzögert sich die Veröffentlichung immer wieder, es sei denn, Sie schneiden unordentliche Veröffentlichungen mit halbfertigen Inhalten ab, vor deren Verwendung die Benutzer gewarnt werden müssen.
quelle