Abhängig vom Projekt kann es durchaus sinnvoll sein, Ihre technischen Forschungen und Untersuchungen im Rahmen der Entwicklung durchzuführen, wenn Sie alleine an einem kleinen Projekt arbeiten. Und obwohl dies kein Teil von Agile ist, könnte natürlich eine agile Methodik verwendet werden, um dies zu steuern. Dies macht es jedoch sehr schwierig, den Prozess vorherzusagen. Könnte in Ordnung sein, noch schneller, wenn Sie alleine an einem kleinen Projekt arbeiten, das ganz Ihnen gehört, lassen Sie Ihre Anforderungen sich entfalten, während Sie sie lernen. Verwenden Sie dabei gute Prinzipien und seien Sie konsequent, und Sie sollten nicht so viel neu faktorisieren müssen.
Bei der Arbeit verwenden wir Kanban, Scrum und traditionellere Wasserfallansätze. Abhängig vom Projekt finde ich, dass komplexe Entwicklungen mit genau definierten Vorabanforderungen nicht am besten für Agilität geeignet sind, viele werden jedoch anderer Meinung sein.
Bevor wir mit der Arbeit an einem agilen Projekt beginnen (alles andere als das einfachste), erstellen wir eine Dokumentation. Wir haben ein Modell (wenn die Benutzeroberfläche fokussiert ist), eine Reihe von Anforderungen und eine funktionale Spezifikation.
Die Entwicklung wird gebeten, die technische Spezifikation aus der Funktionsspezifikation zu erstellen. Während dieses Prozesses werden wir die Technologie spezifizieren und alle erforderlichen Voruntersuchungen durchführen. Dieser Prozess scheint mir so wichtig zu sein, da er die Möglichkeit bietet, Lücken in den Anforderungen / Funktionsspezifikationen zu erkennen - und den Menschen mit der Erfahrung und dem Systemwissen, um solche Entscheidungen zu treffen, die großen Technologieentscheidungen im Voraus zu ermöglichen.
Das Wesentliche ist jedoch, dass die Funktionsspezifikation eine Liste von Aufzählungspunkten sein kann und die technische Spezifikation normalerweise ein Modell mit einigen Aufzählungspunkten und Technologiesteuerungen ist, in einigen Fällen nur 3 oder 4 Seiten.
Selbst wenn wir ein agiles Projekt ausführen, erstellen wir Dokumentation:
- Alle Unterlagen sind kostenpflichtig.
- Das Entwickeln gegen sich bewegende und schlecht definierte Anforderungen auf hoher Ebene ist mit Kosten verbunden.
- Das richtige Gleichgewicht zu den oben genannten hängt von Ihrem Projekt, der Kultur und den Menschen ab.
- Wir dokumentieren Just in time, Dokumente sind veraltet.
- Wir dokumentieren kaum genug / gerade genug.
- Wir pflegen oder aktualisieren diese Dokumente nicht, wir geben uns nicht viel Mühe. Sie sind klein. Wir erwarten, sie wegzuwerfen.
- Wir bügeln die großen Unbekannten wie Technologieentscheidungen, trübe Anforderungen und Architektur im Voraus aus.
- Wir wissen, was wir entwickeln, bevor wir anfangen.
- Wir vertrauen darauf, dass die Entwickler fundierte Entscheidungen in Bezug auf die Dokumentation treffen und alle Probleme besprechen.
- Wir legen Wert auf Kommunikation gegenüber Dokumentation. Daher erwarten wir, dass alle Beteiligten häufig kommunizieren.
- Wir dokumentieren Systeme (Übersicht) nach der Entwicklung, nicht während, nicht vorher.
Sie sehen, es gibt einen kleinen Wasserfall in unserem agilen Prozess.
Wenn Sie alleine arbeiten, erstellen Sie ein Vorabmodell (Diagramm!) Und spielen Sie mit der Technologie und wählen Sie sie aus. Wenn Sie dann dieses Konzept der Anforderungen auf hoher Ebene haben, laufen Sie voran und entwickeln Sie sich auf agile iterative Weise, aber berücksichtigen Sie gute Prinzipien und Konsistenz im Laufe der Zeit und Sie müssen weniger und mehr Faktoren neu faktorisieren.
Wenn jedoch echte Kosten anfallen (kein Hobby), wissen Sie im Allgemeinen, was Sie entwickeln, bevor Sie Code schreiben, aber verschwenden Sie nicht zu viel Zeit damit, Dokumentationen zu schreiben, die schnell überflüssig werden, da Sie Ihre Meinung ändern und sollten Ändern Sie Ihre Meinung während der Entwicklung, wenn Sie besser informiert werden. Und Ihr Projekt könnte den Kurs enorm ändern, aber von einer guten, klar definierten Grundlage ausgehen.