Ich arbeite für eine Softwareentwicklungsfirma, bei der die Entwicklungsarbeit auf uns verlagert wurde. Das On-Shore-Team kümmert sich um den Support und spricht direkt mit den Kunden. Wir sprechen nie direkt mit den Kunden, sondern nur mit Leuten aus dem On-Shore-Team, die direkt mit den Kunden sprechen.
Wenn Anforderungen kommen, spricht das On-Shore-Team mit den Kunden, erstellt Anforderungsdokumente und informiert uns. Wir erstellen Entwurfsunterlagen, nachdem wir die Anforderungen untersucht haben (wir folgen dem traditionellen Wasserfallmodell).
Es gibt jedoch ein Problem im gesamten Prozess: Niemand im Offshore- oder Onshore-Team versteht die Funktionalität der Anwendung vollständig. Wir wissen nur, dass es sich um eine große komplexe Web-App handelt, die komplexe Auftragsabwicklung, Katalogverwaltung, Kampagnenverwaltung und andere Aktivitäten abwickelt. Wir haben Probleme mit dem Designdokument, da die Anforderungen nicht klar wären. Anschließend wird eine Reihe von Fragen / Antworten zwischen dem On-Shore-Team, dem Off-Shore-Team und den Kunden gestellt. Wir werden oft aufgefordert, die Funktionalität anhand des Codes zu verstehen. Dies ist jedoch normalerweise nicht möglich, da die Codebasis sehr groß ist und das Verstehen eines einfachen Menüelements Tage, wenn nicht Wochen dauert. Wir haben versucht, den Kunden zu sagen, dass sie uns Wissenstransfer geben sollenüber die Anwendung, aber ohne Erfolg. Unser Manager hat uns oft angewiesen, mit dem Codieren zu beginnen, selbst wenn das Designdokument nicht vollständig ist oder die Anforderungen nicht klar sind. Wir würden zunächst den Teil der Anforderungen codieren, der klar erscheint, und auf den Rest warten.
Dies würde die Bereitstellung normalerweise um einen Monat verzögern. In extremen Fällen hätten wir sehr geringe Fehler in der Entwicklung und Produktion, aber die Kunden würden sagen, dass dies nicht das ist, was sie gefragt haben. Das würde ein Schuldspiel und eine Reihe von Änderungswünschen auslösen und wir würden am Ende etwas ganz anderes entwickeln.
Meine Frage ist, wie würden Sie Entwicklungsarbeit leisten, wenn Sie die Funktionalität der App nicht vollständig kennen?
AKTUALISIEREN
Die Entwicklungsmethode ist nicht wirklich meine Wahl und ich bin nicht der Leiter meines Teams. So hat es begonnen. Ich habe versucht, den Leuten von den Vorteilen von Agilität zu erzählen, aber ohne Erfolg. Außerdem glaube ich nicht, dass mein Team die notwendige Einstellung hat, um in einer agilen Umgebung zu arbeiten.
quelle
Antworten:
Kurzfassung:
Wissen, was zu tun ist ≠ Ihren Kunden kennen.
Stellen Sie sich Folgendes vor: Sie sind ein Unternehmen, das mit der Immobilienentwicklung zu tun hat. Sie bitten Ihren Partner, einen großen Komplex zu bauen. Der Partner sagt, dass er trotz aller Dokumente, die Sie ihm gegeben haben, auch direkt mit den Leuten sprechen muss, die die Wohnungen in diesem Komplex kaufen würden. Ernsthaft?
Lange Version:
Es ist immer schön zu wissen, wie eine bestimmte Anwendung verwendet wird, weil es Spaß macht, Dinge zu lernen, aber bei großen Projekten ist dies nicht immer möglich.
Einige Domänen sind einfach zu komplex. Wenn Sie nur ein Entwickler sind und an mehreren Anwendungen aus mehreren Domänen arbeiten, können Sie einfach nicht immer verstehen, was der Endbenutzer tut , da Sie fünf Jahre lang Buchhaltung lernen müssen, zehn Jahre an der medizinischen Fakultät. sechs Jahre in der juristischen Fakultät usw.
Auf der anderen Seite ist ein Softwareprodukt, das ohne Verständnis der spezifischen Domäne hergestellt wurde, bestenfalls ein bisschen unbrauchbar .
Aus diesem Grund müssen funktionale und nicht funktionale Anforderungen von Personen geschrieben werden, die die Domäne vollständig verstehen. Im Allgemeinen umfasst das Sammeln von Anforderungen gleichzeitig:
Techniker (zum Beispiel Entwickler, die sagen würden, dass eine bestimmte Funktion unmöglich ist, dass diese andere viel besser sein kann, wenn sie auf diese Weise ausgeführt wird, und diese kostet Tausende von Dollar, während es eine viel billigere Alternative gibt),
Auf Projektmanagement spezialisierte Personen,
Personen, die auf die Domäne des Kunden spezialisiert sind und das vollständige Verständnis dieser Domäne und die genauen Bedürfnisse des Kunden haben. Dies kann natürlich der Kunde selbst sein.
Eine funktionale und eine nicht funktionale Anforderung sind geschrieben und präzise genug. Als Person, deren Aufgabe es ist, diese Anforderungen in Code zu übersetzen, benötigen Sie nichts anderes.
In Ihrem speziellen Fall beschreiben Sie die Ursache des Problems selbst:
Es ist nicht der Mangel an Wissen über den Kunden, der alle Probleme verursacht , sondern die geringe Qualität der Anforderungen. In einem korrekt verwalteten Projekt müssen die funktionalen und nicht funktionalen Anforderungen vollkommen klar und eindeutig sein. Wenn das Anforderungsdokument nicht klar ist oder wenn es Ihnen sagt, dass "das visuelle Design des Produkts attraktiv sein muss" oder andere Dummheiten wie diese, liegt es daran, dass es von Leuten geschrieben wurde, die nicht wissen, wie man es schreibt.
Wenn man das weiß, muss man anders handeln:
Wenn Sie wissen, dass das Team, das die Anforderungen sammelt, verzweifelt ist und Ihr eigenes Team über qualifizierte Mitarbeiter für das Sammeln von Anforderungen verfügt, erklären Sie Ihrem Vorgesetzten die Situation und sagen Sie, dass das andere Team durch eine kompetente Person ersetzt werden muss , z. B. die Mitarbeiter von Ihnen.
Andernfalls (dh wenn sie nicht verzweifelt sind) versuchen Sie, die interne Ursache für diese geringen Anforderungen zu ermitteln und sie davon zu überzeugen, dass eine korrekte Arbeit nur die Gesamtkosten des Projekts senkt . Es ist hier eine gute Idee, Statistiken darüber zu zeigen, wie schlecht geschriebene Anforderungen das Projekt beeinflusst haben, indem sie die Kosten erhöht haben (wie viel?) Und das Risiko, nicht für die Frist bereit zu sein.
Wahrscheinlich ist das Anforderungsdokument nur unvollständig. Ich sehe das die ganze Zeit: Unerfahrene Projektmanager sind nur davon überzeugt, dass ein einseitiges Dokument ausreicht, und verstehen nicht, warum sie jemals drei- bis vierhundert Seiten anstelle von einer schreiben würden. Wenn dies in Ihrem Unternehmen der Fall ist, zeigen Sie, dass mehr Zeit für Anforderungen die Kosten senken würde.
quelle
Sie verwenden genau die falsche Entwicklungsmethode für die Probleme, mit denen Sie konfrontiert sind.
Durch die Verwendung von Waterfall verpflichten Sie sich zu:
Erwägen Sie, wenn möglich, eine andere Art der Projektverwaltung. Agile Software Development verfügt über mehrere Funktionen, mit denen Sie die Probleme lösen können, mit denen Sie konfrontiert sind.
Vor einiger Zeit wurde ein anständiger Vergleich zwischen Waterfall und Agile geschrieben. Lassen Sie uns ein paar Zitate daraus ziehen, die Ihre Probleme hervorheben:
Missing the Mark:
Festgebunden...
... und kann sich nicht bewegen
Wo du jetzt bist, ist schlecht; Sie erfüllen nicht die Anforderungen des Kunden, und wenn Sie die Schuld an der Softwareentwicklung tragen, wird die Produktivität aus dem Fenster gehen, das Misstrauen wird steigen und die Dinge werden wahrscheinlich schlechter, nicht besser.
Die Beziehung zum Kunden ist kritisch ; Hier klingt es so, als ob Sie nicht in der Lage sind, ihre Probleme effektiv zu sammeln und sich an die sich ändernden Anforderungen anzupassen, wie Sie gerade arbeiten. Daher müssen Sie nach Möglichkeiten suchen, dies zu ändern.
quelle
So funktioniert es nicht, oder? Eines der Themen meiner aktuellen Ausbildung ist die Analyse und die Beziehung zu einem Kunden. Der Schwerpunkt lag immer auf der klaren Definition des Projekts. Stell dir das vor:
Wenn Sie nicht sehr sicher sind, dass Sie (teilweise) die richtigen Grundlagen für die Anwendung schaffen können, würde ich dem Kunden nur sagen, dass es keinen anderen Weg gibt, als mit klar definierten Zielen und Funktionen. Denn wenn Sie nur versuchen, was es sein könnte, riskieren Sie, viel Geld und Zeit in den Abfluss zu werfen.
quelle
Hier sind einige Dinge, die helfen, die Probleme zu überwinden:
quelle