So vermeiden Sie die 80/20 Regel in der software-Entwicklung
Es scheint, dass, egal was mein Projekt ist, ich bekomme über 80% der Arbeit ziemlich schnell. Benutzer-und management Holen Sie sich aufgeregt, denken, die Dinge sind weit vor dem Zeitplan, aber die lästigen 20% der Arbeit übrigen scheint 4 mal so lang wie die vorherigen 80%. Wenn wir unsere regelmäßigen check-ins oder stand-ups auf das Projekt, ich fühle mich wie eine kaputte Schallplatte, die sagen "ja, die Dinge gegangen sind, OK so weit, aber es gibt noch einiges zu tun bleibt..."
Für die meisten Teil, meine Schätzungen sind ziemlich genau, aber ich bin ein Mensch. Was ist der beste Ansatz zur überzeugung der Nutzer, dass die letzten 20% der Arbeit wirklich 80% der Zeit? Es scheint, wie mehr und mehr Benutzer und das management glaube, ES ist leicht und die Magie passiert auf der snap von ein paar Finger...
Im Allgemeinen, wir tun Aufgaben verfolgen, was ich glaube zu einem relativ geringen Niveau. Nicht unbedingt bei einer create-label oder textbox, aber wir sind ziemlich detailliert... Wir verfolgen auch unsere Einschätzung zum Abschluss alle Aufgaben, die ich fühle, ist eine weitere wichtige Zahl ist als die Schätzung, wenn Sie in der Mitte des Projekts.
Ich denke, es kommt auf die Wahrnehmung der Nutzer und management. Auch wenn Sie wissen, estimate to completion) Sie bekommen immer noch eingehüllt in die Gefühle und Wahrnehmungen auf, was Sie sehen und die Schätzung zahlen in den hintergrund zu Rücken. Dies ist, was ich versuche, herauszufinden, wie Sie zu enthalten oder zu verwalten Erwartungen.
BEARBEITEN
Umwandlung in ein community-wiki, da dies eher subjektiv. Sollte so von Anfang an.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aber ich schweife ab.
Die beste Praxis ist leider Erfahrung. SCRUM-Methoden sehr hilfreich gewesen, für einige Arten von software-Entwicklung, da Sie ständig aktualisieren Sie den release-Termin um ein genaueres Datum. (kurzes video über scrum)
Ihnen nicht zeigen, die ersten 80%, sobald es fertig ist. Tropf füttern.
Vielleicht müssen Sie brechen die Aufgaben/Funktionen Sie arbeiten in kleinere Einheiten, sowohl für die Planung der Arbeit und für die checkins/Berichte. Zum Beispiel habe ich fast nie jeden einzelnen Punkt auf meine Liste, die länger dauert als zwei Tage.
Dann anstatt zu sagen: "ich bin das arbeiten auf unserer neuen muppet maker", die jeden Tag in Scrum für zwei Wochen können Sie dann sagen "ich arbeite aktuell an das Auge Selektor für die muppet-maker".
Wenn Sie arbeiten Zeitpläne, und Ihre Fahrpläne korrekt sind (das heißt, Sie account sowohl für die 80% & 20%), dann-management sollte das wirklich nicht ein problem haben. Wenn Sie andeuten, Sie können die Redezeit, weil Sie "fast fertig" dann zeigen Sie Ihnen, die Teile der Spezifikation, die nicht umgesetzt wurden.
Ich gehe davon aus, dass Sie arbeiten von zu irgendeiner form der funktionalen Spezifikation, die beschreibt, welche etwas zu tun haben, wie er sich Verhalten sollte, und der edge Fälle behandelt werden müssen. Wenn dies der Fall ist, dann sich Gedanken über die Gefühle und Wahrnehmungen des Managements scheint sehr seltsam für mich, Sie sollte durchaus in der Lage, entweder einen Vergleich der spec, um Ihre Arbeit zu, oder Lesen Sie Ihren Zeitplan, um zu sehen, was übrig ist.
Wie schätzen Sie die Menge der Arbeit? Sie sagen, dass "die lästigen 20% der Arbeit übrigen scheint 4 mal so lang wie die vorherigen 80%", aber wie kommst du zu der Einschätzung, dass "20%" von der Arbeit übrig ist, und dass "80%" fertig ist? Offensichtlich sind die Schätzungen falsch sind - in der Realität nur 20% Arbeit und 80% übrig.
In der software-Entwicklung ist es sehr schwer, genaue Schätzungen lange Zeit im Voraus. Die einzige Möglichkeit ist die Aufteilung der Arbeit in kleine, überschaubare Teile (vielleicht weniger als 10 Stunden). Sie können schätzen, genau nur die unmittelbaren nächsten Schritte.
Einige übungen, die helfen, bei der Schätzung Fortschritt gefunden werden kann, die in Scrum. Der Umfang dessen, was die Arbeit getan, die im nächsten sprint (ein Monat oder weniger) ist fest auf den Anfang der sprint und grobe Schätzungen gegeben werden, zu jeder Arbeit. Dann nach dem sprint kann das team darüber nachdenken, wie viel Fortschritt gemacht wurde, wie viel noch fehlt, wie genau die Schätzungen waren, und was ist die Verlangsamung des Teams. In Scrum und anderen agilen Methoden ein wichtiger Punkt ist immer schnelles feedback, was getan wird und wie weit sind wir in das Projekt. Ich empfehle die Lektüre mehr über Sie. Das video über Scrum , dass Ólafur Waage verknüpft seine Botschaft gibt einen guten und schnellen Einstieg.
Wenn es um Zeit geht, Schätzung, dies ist meine Erfahrung:
Wenn Sie nicht positiv sagen, dass eine Aufgabe in weniger als 4 Stunden können Sie nicht einschätzen, es genau. Break it down in kleinere Stücke und wiederholen Sie die rekursiv.
Macht mal eine solche Schätzung ist kein Picknick ist, wird es Zeit, Sie grundsätzlich zu Eisen aus dem gesamten Projekt in handhabbare Teile bedeutet, dass eine Veränderung der Anforderung wird das Ergebnis in einer veränderten Zeit-plan (überraschend, nicht wahr?)
Das größte problem ist, dass wir können unmöglich voraussehen, alle details (vielleicht, sagen wir mal 20% vielleicht? Verlassen Sie die restlichen 80% unestimated...) - siehe SCRUM als andere haben schon darauf hingewiesen.
Management wird selten "akzeptieren", wie eine detaillierte Zeit schätzen, da es "zu lange dauert" zu implementieren.
Jedoch, das management ist daran interessiert, profit zu machen, Sie interessieren sich auch für das schneiden von Ecken. So ermitteln Sie die Ecken möglich zu schneiden und zu machen raffinierte Kompromisse basierend auf der real-life-Szenarien beteiligt. Unterstützt durch management können Sie erreichen eine Menge von diesen letzten 20% von nichts zu tun (traurig, in einer Weise, die ich denke, aber immer noch wahr).
Weil die letzten 80% der Arbeit stellt für die letzten 20% des Endproduktes ist wirklich Polieren und ausbügeln von bugs und Anpassung an veränderte Anforderungen, etc. Es könnte möglich sein, haben einige begrenzte erste version, etc, etc, seien Sie kreativ.
Lesen Steve McConnell ausgezeichneten Buch Schnelle Entwicklung, die hat viel zu sagen über die 80/20-Frage und die othder Launen des software-Schätzung.
Ich glaube nicht, ich kann sagen, dass es besser als Joel mit Painless Software Schedules.
Es wurde gesagt, dass die ersten 90% des Projekts Zeit für 90% der Arbeit, und die restlichen 90% des Projekts Zeit für die restlichen 10% der Arbeit. 😉
Es ist natürlich, große Fortschritte zu Beginn des Projekts, wie Sie einfach die leichtesten Teile zuerst. Auch, wenn es irgendwelche Probleme in den ersten 80% des Codes, Sie wird Häufig nicht offensichtlich, bis es kommt alles zusammen und man kann eigentlich alles testen des Codes.
Vielleicht so ein experient sollten Sie lassen die Menschen versuchen, die Anwendung, die ist zu 90% fertig, so dass Sie sehen, was für ein Unterschied zu den letzten 10% nicht...
Habe ich ein paar Kleinigkeiten entdeckt, die sehr helfen, mit der Zeit Schätzungen
Ich habe diese verwendet werden, ziemlich erfolgreich in der Angleichung der Mitarbeiter, die Geschwindigkeit auch, Es dauert nur einige empirische Beobachtungen darüber, wie schnell Sie sich entwickeln kann, eine Funktion und wie gut es werden vor tatsächlich zu testen.
Einer der Ursachen der 80/20-Phänomen ist, dass das unerwartete tritt immer für alle schwierig - und manchmal sogar trivial - Aufgaben. Zum Beispiel: die Dokumentation, die Ihre software-design-Prozesse Mandat plötzlich ein neues template-format, Dank einiger übereifriger Prozess Manager. Plötzlich, es ist nicht nur einfach eine Frage der Aktualisierung der Dokumentation für Ihre neue release - Sie haben nun restrukturieren, um jeden von Ihnen, und alle von Ihnen nehmen deutlich mehr Zeit.
Eine der besten Empfehlungen, die ich gehört habe für den Umgang mit dieser Art von Phänomen ist immer bauen Puffer Teilaufgabe(N) in der Projekt-Zeitplan - empfohlen von Richard Whitehead. Jede wichtige Aufgabe wird in 20% der Zeit steigen (oder irgendwo dort) darauf hingewiesen, dass eine Teilaufgabe für diese Aufgabe. Der Zweck eines jeden ist, einige Messungen für das, was passiert, wenn "etwas schief" auf diese Aufgabe. Der Autor ist bekannt (und ich habe auch gefunden, um wahr zu sein), die oft die Verwaltung wird versuchen, entfernen Sie diese Puffer-Aufgaben - Ihre einzige Möglichkeit ist, um entweder Ihren Boden zu stehen, oder ziehen Sie ein Manöver, wie Joel Befürworter (wie @Casey bereits erwähnt). In der Praxis habe ich herausgefunden, dass eine gute Anzahl von Puffer-Teilaufgaben in der Regel tun, bleiben, um, und haben geholfen, ein paar mal in engen Zeitplänen.
Habe ich festgestellt, dass der beste Weg, um halten Sie die schedule up-to-date mit dem Prozentsatz für die jeweilige Aufgabe. So, der Fortschritt ist ziemlich klar. Kommunizieren, dass es bis zu management-und sollten Sie verstehen, wo Sie sind zu allen Zeiten.
Ich denke, dass, wenn Sie Schätzungen für eine Aufgabe, die bündeln die 80% und 20%, Sie können aus einen schwachen start. Reißen Sie Ihren Schätzungen. Machen die 80% und die 20% zwei explizite Aufgaben; die leicht-bit und das harte etwas, wenn Sie muss.
Dann können Sie mehr realistische zeitschätzungen vorne für die Arbeit als ganzes, und machen es einfacher für die Produktion zu verfolgen, die Besonderheiten.
Bei der Planung berücksichtigen. Bei der Schätzung der Zeit, die es dauert, um zu tun eine Teilaufgabe, geben Sie eine Schätzung für "Fertig" statt "im wesentlichen" (Schätzung aus der Erfahrung, wie viel mehr "Getan" nimmt. Widerstehen Sie der Versuchung, zu entlassen, integration, Dokumentation, Aufräumen, testing, bug-fixing nach dem Test, deployment usw. als kleine Aufgaben, die absorbiert wird, in andere Aufgaben.
Werden Sie am Ende mit einem schrecklichen großen schätzen. Aber Fragen Sie sich, ob Sie sich im Einklang mit der tatsächlichen Zeit, die auf früheren Projekten.
Versuchen und bieten die genauesten Schätzungen, die Sie können und so viel Transparenz in das Projekt wie möglich. Wenn Sie dauerhaft in der Nähe an Ihr schätzt, der sollte sein genug zu befriedigen Ihrer Führungskräfte. Denken Sie daran, es ist sehr sehr schwer zu Messung der Produktivität.
Schreiben Sie die algorithmen zuerst... dann die UI.
Halten Sie Ihre Zeithorizonte kurz. Es ist einfacher zu schätzen, was Sie tun werden in den nächsten Wochen als in den nächsten Monaten. Sollten Sie brechen Ihr Projekt in Meilensteine, die kurz sind. Einen Monat oder vielleicht ein paar Monate hängt davon ab, was Sie zu tun versuchen. Dies ist im Grunde, was Scrum bedeutet. Dann schätzen die meisten genau nur die Arbeit, die Sie tun werden, in der aktuelle Meilenstein. Re-Schätzung der nächste Meilenstein, wenn man dort ist und viel mehr Daten auf Basis der Schätzungen auf. Ein Teil der Grund der letzten 20% so lange ist, dass Sie wahrscheinlich sind, dass Sie die Schätzung vorne, wenn Sie nicht genug wissen.
Versuchen Sie auch, Breitband-Delphi schätzungstechniken. Dies herauszufinden, viel mehr von den versteckten Kosten, die Sie wahrscheinlich nicht in Betracht ziehen.
Sagen: "ja, die Dinge gegangen sind, OK so weit, aber es gibt noch einiges zu tun bleibt..." ist vielleicht nicht der beste Weg, um Ihren Standpunkt zu vermitteln. Nach Anhörung, dass ein manager oder ein client denken vielleicht "ja, es ist ein bisschen mehr zu tun, aber er Tat das Teil so schnell sicherlich der rest ist minimal".
Stattdessen stellen Sie sicher, identifizieren die verbleibenden arbeiten und planen. Auf diese Weise können Sie zeigen, wo Sie sein sollten, während th restlichen 20% des Projekts. Wenn es zu lange dauert, Ihr Zeitplan wird Ihnen ein Projekt hinter dem Zeitplan und das erhöhen ein Gefühl der Dringlichkeit.
Halten Sie Ihre Aufgaben wöchentlich aktualisiert (oder wie auch immer Sie regelmäßig status-Berichte). Bereiche identifizieren, in Gefahr in Rückstand zu geraten, besonders wenn andere Bereiche, die von Ihnen abhängen.
Ich denke, es ist am besten, wenn Sie können, um unter-Versprechen und über-liefern.
Wenn Ihre Schätzungen richtig sind, dann werden Sie diese lästigen 20%. Sie wusste natürlich nicht, und deshalb ist es ein Problem.
Vielleicht sind Sie versucht, Ihnen alles, was Sie wollen, das ist unrealistisch. Vielleicht haben Sie nicht vollständig Konto für Murphy ' s Law, oder haben nicht genug Zeit zum testen, Suche nach Fehlern, dann erneut testen, etc.
Sieht aus wie Sie tun sollten, ein wenig mehr Risiko-management...
Wenn Sie konsequent finden, dass die letzten 20% der Arbeit geleistet, 4x aus der Zeit der ersten 80%, dann ist es vielleicht Zeit für eine ehrliche Auseinandersetzung mit sich selbst (oder mit vertrauenswürdigen peers) über, ob Sie die Vermietung von technischen Schulden aufbauen, die während der ersten 80%, und es beißt dich am Ende.
Möglicherweise sprechen, um Arbeit Praktiken, die Sie könnte in Erwägung ziehen.
Zwei der besten Verfahren, die ich kenne, für die Aufbewahrung von technischen Schulden runter sind das schreiben von tests (vorzugsweise bevor Sie den code schreiben, sondern nur anschliessend funktioniert auch), und nach jedem refactoring-Aufgaben. Denke refactoring-wie die Reinigung der Küche nach jeder Mahlzeit, anstatt am Ende des Monats.