Frist einhalten oder weniger Bugs?


15

In einer idealen Welt ist es vorzuziehen, die Frist mit weniger Fehlern einzuhalten. Aber aus Ihrer Erfahrung, die bevorzugter / akzeptabler ist:

  1. Die Frist einhalten, hat aber eine Reihe von Fehlern, weil Entwickler in die Dinge stürzen
  2. Weniger Bugs, aber die Deadline nicht ganz eingehalten, da der Entwickler den Code sehr genau schreibt

7
Was ist mit dem Löschen von Features? Nach meiner Erfahrung können Sie eine akzeptable Veröffentlichung rechtzeitig durchführen, wenn Sie zusätzliche Funktionen löschen können, wenn sie nicht mehr in das Projekt passen. Sie sollten genügend Zeit reservieren, um Fehler am Ende des Projekts zu beseitigen. Alles, was bis dahin nicht implementiert wurde, muss bis zum nächsten Release warten.
Anne Schuessler

Holen Sie sich zuerst eine relativ fehlerfreie Version heraus.
Abel

Wenn Sie True Scrum machen, gibt es Bugs nicht länger als eine Woche :) Vorteile: A) Bezahlen für Bugs im Voraus ist viel billiger, und B) Wenn Sie im Voraus bezahlen, wissen Sie, was die wahren Kosten sind.
Job

3
XKCD ist so relevant wie nie zuvor. xkcd.com/844
Maxpm

Antworten:


5

Die Antwort auf diese Frage hängt stark von den Geschäftszielen sowie vom Kunden ab.

Unternehmen :

Wenn Sie mit einem auf dem Markt etablierten Kunden auf Unternehmensebene Geschäfte tätigen, sind diese weniger flexibel und können sich nicht so schnell an Änderungen anpassen. Stabilität ist daher in den meisten Fällen unabdingbar. Es gibt Ausnahmen für Forschung und Entwicklung sowie für den Eintritt in neue Branchen. In einigen Fällen wird der Schnellere zuerst beendet.

Diese Arten von Kunden wissen im Allgemeinen, dass die Entwicklung einer guten Software einige Zeit in Anspruch nimmt und arbeiten mit Ihnen zusammen, um zu versuchen, die Ziele zu erreichen.

Startups :

Bei einem neuen Start sind die Regeln drastisch unterschiedlich. Als Startup müssen Sie sofort wissen, ob das Produkt, das Sie entwickeln, tatsächlich einen Bedarf erfüllt, wie von Ihrer Marktforschung prognostiziert. Wenn Sie als Startup einen Prototyp so schnell wie möglich auf den Markt bringen, erhalten Sie viele wertvolle Rückmeldungen über die Richtung, in die das Produkt gehen soll.

Es kann Sie auch als Marktführer etablieren und Ihnen helfen, wertvolle Marktanteile in einer neuen Branche zu gewinnen, bevor diese mit dem Wettbewerb gesättigt wird.

Da Startups klein und flexibel sind und sich schnell an Veränderungen anpassen können, eignet sich dieses Modell am besten für sie.

Zusammenfassend sind noch weitere Faktoren zu berücksichtigen. Die Hauptidee ist jedoch, dass jedes Projekt anders ist und unterschiedliche Qualitäts- und Time-to-Market-Ziele hat. Es ist Aufgabe der Geschäftsführung, eine effektive Geschäftsstrategie zu bestimmen, die eine gründliche Analyse der Opportunitätskosten für die Auswahl einer Methode gegenüber einer anderen umfasst.


14

oder ... 3. Schneiden Sie nicht benötigte Funktionen aus

Manchmal sind die Fristen aufgrund der technischen Besonderheiten oder der vom Kunden angeforderten Besonderheiten schwer einzuhalten, und es kommt inhärent zu einer größeren Anzahl von Fehlern. Es werden die Prinzipien von KISS und YAGNI angewendet.

Aus diesem Buch zitiert "Rework", das Wesentliche / Kern / Epizentrum Ihrer Software ist, was das Geschäft benötigt, um zu funktionieren, so wie ein Hot-Dog-Stand ein Hot-Dog-Stand ohne Belag sein kann, was Sie nicht ausschneiden können die Hotdogs.

Neu verhandeln

Eine der schwierigsten Aufgaben ist es, Kunden bei Laune zu halten, und meiner Erfahrung nach kann dies mit kleineren Produktiterationen einfacher erreicht werden.

Manchmal erfordern Fristen, dass die Software seit dem ersten Tag auf einem hohen Produktionsniveau arbeitet. Manager / Kunden wissen nicht immer (meistens), was sie tatsächlich für die Software benötigen. Versuchen Sie also, unwesentliche Funktionen zu reduzieren und die Qualität zu erhalten. Letztendlich hängt es davon ab, wie kritisch die Produktionsumgebung sein wird, aber versuchen Sie, zusätzliche Funktionen auszuschließen und Qualität zu liefern. Nochmals zitiert aus "Rework":

Später zu tun bedeutet auch, es besser zu machen

... und Termine mit weniger Fehlern einhalten


2
Dies ist orthogonal zur ursprünglichen Frage. Oft kann man die Funktionalität einfach nicht einschränken. Es ist gut, wenn Sie können, aber ich denke nicht, dass dies für sich genommen eine gute, allgemeine Antwort auf die Frage ist.
Jason Baker

Funktionalität ist unerlässlich. alles davon.
Mauris

1
Nicht alle Funktionen sind wichtig .
Jürgen A. Erhard

2
Nicht alle Funktionen sind wichtig. Vieles kann schön sein oder bis zur nächsten Veröffentlichung warten (vorausgesetzt, es ist eine nächste Veröffentlichung geplant). Ich habe noch nie in einem Projekt gearbeitet, in dem einige Funktionen nicht bearbeitet werden konnten.
Anne Schuessler

4
Wenn Sie die Frage auf diese Weise stellen, lautet die Antwort in der Regel "Ja!". Wenn Sie es jedoch in ausreichend kleine Teile aufteilen, gibt es normalerweise Aspekte der Funktionalität, die der Entwickler für wesentlich hielt, die dem Client jedoch egal sind. Dies erfordert ständige Kommunikation, um es zu entdecken. Wenn Sie den Kunden auffordern, die Funktionalität zu bewerten, befinden sich in der Regel einige Punkte am Ende der Liste, die abfallen oder bis nach dem "Stichtag" warten können. Ich finde diese Antwort überhaupt nicht orthogonal, sie scheint tot zu sein.
Marcie

9

Nun, Sie können es so formulieren: Wollen Sie jetzt oder später für Qualität bezahlen? Entweder nehmen Sie sich die Zeit, es zuerst gut zu machen, oder nehmen Sie sich Zeit, um später alle Probleme zu beheben. Ich würde argumentieren, dass diese Bugfixing-Phase nach der Feature-Entwicklung möglicherweise teurer ist, da sie auch riskanter und anfälliger für Hacky-Lösungen sein kann, da der vorhandene Code bereits vorhanden ist und wahrscheinlich nicht hoch genug in der Qualität ist.


Das ist ein sehr guter Punkt. :-)
Joshua Partogi

8

Halten Sie die Frist ein und legen Sie eine Liste bekannter Probleme vor.

Die Leute HASSEN es, Fehler zu finden, aber wenn man ihnen von vornherein sagt, dass sie viel nachsichtiger sind.


5

Das hängt ganz von der Situation ab ....

Es gibt viele Faktoren zu berücksichtigen:

  1. Wie einfach ist das Ausrollen von Patches?
  2. Ist es möglich, eine einfache, abgespeckte Version zu veröffentlichen und dann im Laufe der Zeit neue (Edge-Case-) Funktionen zu patchen?
  3. Was ist die allgemeine Kultur der Kundenbranche für ein solches Produkt? Erwarten sie einmalige, perfekte Veröffentlichungen oder sind sie an die Idee eines sich entwickelnden Systems gewöhnt, das bei der ersten Veröffentlichung möglicherweise fehlerhaft ist?
  4. Wie viel Risiko für das Geschäft birgt eine fehlerhafte Erstversion im Gegensatz zur Fristüberschreitung?

Kurz gesagt, es gibt keine Schwarz-Weiß-Antwort darauf. Zum Beispiel: Bei einem eingebetteten System, dessen Implementierung auf Geräten im Feld schwierig und kostspielig ist, ist es möglicherweise am besten, zu warten (Termine neu auszuhandeln, wenn möglich) und es so fehlerfrei wie möglich zu machen. Auf der anderen Seite kann es für so etwas wie ein großes Web-Portal-System (als Web-App geschrieben), das jederzeit problemlos aktualisiert werden kann, indem Fixes bei Erscheinen veröffentlicht werden, sinnvoller sein, eine anfangs zweifelhafte Version zu veröffentlichen, und Beheben Sie dann Probleme (und die Funktionalität der Edge-Cases), sobald Sie dazu kommen.

Letztendlich war dies meiner Erfahrung nach eher eine Geschäftsentscheidung als eine technologische Entscheidung. Wenn Sie in einer Situation sind, in der das Ausbleiben der Deadline eine große Sache ist und eine fehlerhafte Erstversion nicht (oder umgekehrt), sollten Sie diese Dinge abwägen, wenn Sie eine Entscheidung treffen.

HINWEIS: Als Programmierer bevorzuge ich natürlich die Idee, ein Produkt so gut wie möglich aufzupolieren, bevor ich es loslasse (zum Teufel, ich hätte lieber überhaupt keine Fristen;)). Aber realistisch ist das im wirklichen Leben nicht möglich. Häufig ist eine reduzierte Erstveröffentlichung eine gute Lösung für den Mittelweg.


2

Ich habe viele PMs gesehen, die Angst hatten, dem Kunden mitzuteilen, dass wir den Zeitplan nicht einhalten können, und darauf bestanden, dass wir mit bekannten Fehlern ausgeliefert werden. Ich kann Ihnen sagen, dass er jedes Mal, wenn er es dem Kunden erzählt, weitaus mehr an weniger Fehlern und einer verschobenen Frist interessiert ist. Ich garantiere, dass sie sich die Fehler mehr als die versäumte Frist merken, es sei denn, die Frist ist absolut unbeweglich (wie zum Beispiel der Beginn der Steuererklärungssaison, wenn Sie Steuersoftware ausführen) oder sie beeinflussen einige andere Dinge, deren Verschiebung sehr kostspielig sein wird (IMHO) 98% aller Fristen erfüllen diese Kriterien nicht.


1

Ich denke es hängt vom Bug ab. Möchten Sie eine Veröffentlichung verzögern, um einen Fehler zu beheben, bei dem die App in dem Moment abstürzt, in dem sie auf einem Computer gestartet wird? Ja auf jeden Fall. Müssen Sie einen Fehler beheben, der nur unter Windows ME bei Vollmond auftritt? Das kann wohl warten.

Wenn es sich um einen kritischen Fehler handelt, ist es vorzuziehen, die Nummer 2 zweifach zu wiederholen. Der Grund dafür ist, dass es exponentiell mehr kostet, das Problem zu beheben, wenn Sie dieses Problem in einem Update beheben müssen.

Für weniger kritische Updates können Sie ein Update-Paket veröffentlichen, das diese Kosten bis zu einem gewissen Grad senkt.

Im Zweifelsfall sagen wir, dass Sie mit # 2 weitermachen, aber ich wäre nicht überrascht, wenn das Management mit diesem Ansatz zurückschlagen würde. Ich vermute, dass Manager eher danach beurteilt werden, wie gut sie die Fristen einhalten, als dass sie keine unnötigen kritischen Aktualisierungen verursachen.


1

Weder. Warum backen Sie nicht die Qualität mit Ihrem Code ein? Termine mit Quality Code einhalten können? Sie können zwar weniger Features hervorheben, aber wenn Qualität in den Prozess eingebunden wird, können Sie beides erreichen.

Was jetzt passiert, ist, dass Sie einen befugten Teamleiter oder Entwickler-Manager benötigen, der das Geschäft zurückdrängen und sich über zwei Dinge unterhalten kann:

  1. In Code eingebrannte Qualität = 2 weniger Features pro Build
  2. Priorisierung der am dringendsten benötigten Funktionen durch den Stakeholder hinsichtlich dessen, was er WIRKLICH benötigt.

Dann können Sie sich auf die hochwertigsten Funktionen konzentrieren und diese mit Vorzüglichkeit herausstellen.


0

Was das Testen angeht, ist es nie zu Ende. es ist vorbei, aber nie fertig.

Starten Sie mit Bugs, deren Schwere und Priorität beseitigt ist.


4
Ja, aber du begehst keinen Selbstmord, weil du sowieso sterben wirst. Sie führen ein möglichst langes und gesundes Leben. Aus dem gleichen Grund drückst du Mist nicht einfach raus, nur weil er sowieso nie zu Ende sein wird. Sie versuchen, es so fertig wie möglich zu machen.
Jason Baker

Gut gesagt, @Jason. +1
Dan McGrath

0

Die Einhaltung der Frist mit vielen Fehlern macht Sie arm in der Branche, und der Kunde wird nicht wieder zu Ihnen kommen. Sie können mit dem Kunden sprechen, um die Verzögerung um zwei oder drei Tage zu erhalten.


0

Wenn Sie sich das von einem Endbenutzer ansehen, wäre ich ziemlich fertig, wenn jemand versprochen hätte, etwas für Montag zu tun, und wenn ich versuchte, es zu verwenden, funktioniert es nicht oder es ist alles fehlerhaft.

Wenn Sie sich jedoch die "prozedurale" Seite ansehen, bedeutet dies, dass die Anwendung mehr Tests benötigt und Teil des natürlichen Lebens von Software ist.

Mein bester Ansatz ist es, die Dinge so zu machen, wie sie funktionieren sollen (wenn es ein Hauptmodul ist, achten Sie nicht auf Details, melden Sie sich in einem Formular an, aber jeder wird belohnt, wenn Sie später keine Benachrichtigungen zeigen).


0

Dies ist eine Frage, die nur Sie beantworten können. Es hängt von der Art des Produkts ab, wer der Kunde ist, was der Kunde verlangt usw. Es gibt keine Möglichkeit für uns, eine einfache 'a oder b'-Antwort zu geben. Es ist völlig situationsabhängig.

Ich möchte Sie jedoch daran erinnern, dass die Kosten für die Behebung eines Fehlers nach der Veröffentlichung weit höher sind als für die Behebung vor der Veröffentlichung. Berücksichtigen Sie dies also, wenn Sie entscheiden, ob Sie bis zur Veröffentlichung warten möchten, um einen Fehler zu beheben, da Sie mehr Zeit / Aufwand / Geld dafür aufwenden müssen.

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.