Ich empfehle auch, diesen Thread zu betrachten: Arbeitet jemand mit Funktionspunkten?
Funktionspunkte sind ein "Industriestandard" (was auch immer das bedeutet), um abzuschätzen, wie lange es dauert, etwas zu tun. Zum größten Teil versuchen sie herauszufinden, was das Programm macht, und DANN setzen Sie sie in einen Algorithmus wie diesen:
%Vor%Der Thread, mit dem ich von oben verlinkt bin, spricht über Story Board Points, was in und zwischen sich eine interessante Unterhaltung ist. Ich würde beide Themen untersuchen, um herauszufinden, welche für Sie funktioniert.
Das Schöne an Funktionspunkten und Storyboardpunkten ist, dass sie einen Sprachmultiplikator haben. Die gleiche Art zu denken wird für alle Sprachen verwendet.
Wenn Sie eine neue Sprache lernen, wäre die Komplexität für Ihr spezifisches System höher.
Sie können nicht.
Sie müssen es als Forschung betrachten, und Forschung kann nicht geschätzt werden.
Ich würde mir eine bestimmte Zeit geben, um mit der neuen Technologie zu experimentieren und sie zu lernen, bevor ich versprach, etwas zu einem bestimmten Zeitpunkt zu liefern.
Machen Sie nach dieser ersten Zeit einige grobe Schätzungen und stellen Sie sicher, dass Ihre Vorgesetzten wissen, wie hart sie wirklich sind.
Benutze Hofstadters Gesetz:
Es dauert immer länger als du erwarte, auch wenn du es nimmst Konto Hofstadters Gesetz.
Als ich an einem Projekt arbeitete, bei dem ein mittelgroßes Entwicklungsteam auf .Net umgestellt wurde, bestand die einzige Möglichkeit, eine vollständige Konvertierung abzuschätzen, darin, eine erste Forschungsphase zu ermöglichen. Dies ermöglichte es einigen Entwicklern, sich mit der Technologie vertraut zu machen und einen kleinen Teil der Funktionalität vollständig zu implementieren. Ich fand es sehr wichtig, dass der Teil des Systems, an dem gearbeitet wurde, zu einem Produktionsstandard vervollständigt wurde.
Etwas, das ebenfalls besprochen wurde, war die Einstellung eines Beraters, der mit der Technologie vertraut war. Dies wurde aus Kostengründen entschieden, aber ich denke, es wäre enorm hilfreich gewesen, jemanden zu haben, der Erfahrung mit .NET-Projekten hat, um uns in die richtige Richtung zu weisen.
Wenn Sie an einem Projekt dieser Art arbeiten, müssen Sie außerdem abschätzen, wie lange es dauern wird, bis andere Entwickler auf dem neuesten Stand sind. Offensichtlich wird dies weniger als die Zeit, die die Forschungsphase dauerte. Obwohl die Entwickler, die an dem Prototyp arbeiteten, bereit sein sollten, denjenigen zu helfen, die jetzt die neue Technologie aufgreifen.
Zusammenfassend:
Ich schätze in der Regel die Zeit, die ich mit dem Lernen verbracht habe und die Zeit, die ich mit der Implementierung verbracht habe. I.e. Ich schätze das Projekt so, als wüsste ich aufgrund meiner Ratlosigkeit, was ich mache, aber versuche dann abzuschätzen, wie lange es dauern könnte, bis ich die neue Technologie lerne.
Vor nicht allzu langer Zeit musste ich an einem Projekt in Flex arbeiten und hatte zuvor noch nie Flex (oder Flash) benutzt. Ich wurde auch gezwungen, eine bestimmte 3rd-Party-Bibliothek von Widgets in dieser Flex-Anwendung zu verwenden. Ich schätzte ein, wie lange ich dachte, dass es in einer vernünftigen Sprache wie Java sein würde, dann habe ich es etwa verdoppelt, um eine neue Sprache zu lernen. Das Problem war, Flex ist nicht vernünftig, es ist nicht dokumentiert, es gab eine Reihe von Bugs in der Standard-Bibliothek, und offensichtlich nahm unsere 3rd-Party-Bibliothek alle Design-Features der Standard-Bibliothek zu Herzen, weil es auch sehr war gebrochen. Wir hatten ein schlechtes Produkt mit der Hälfte der Features und über die zugewiesene Zeit. Glücklicherweise erlaubte es uns das Management, eine Weile weiter daran zu arbeiten (sie hatten die Anforderungen geändert, also schuldeten sie uns so viel) und wir haben es wirklich gut in Form gebracht. Es tut immer noch nicht alles, was wir wollten, aber wir haben uns in den meisten Bibliotheksfehlern herumgehackt, einschließlich der schlimmsten Performance-Probleme (nämlich, dass die Instanziierung einer UIComponent eine LANGE ZEIT erfordert, anstatt sie alle beim Start zu machen, wir tun es wie benötigt.Das hat nichts mit unserer dritten Partei lib) zu tun.
Kurz gesagt:
Meine Faustregel ist, die Zeit zu verdoppeln, von der Sie denken, dass sie dauern wird. Ich habe festgestellt, dass Sie immer auf einige unerwartete Probleme stoßen werden, deren Auflösung einige Zeit in Anspruch nehmen wird.
Ich schätze für Projekte einer bestimmten Größe, geben Sie sich Zeit, um einen einigermaßen einfachen, aber dennoch vollständigen und nicht trivialen Prototyp eines repräsentativen Teils Ihres Projekts zu erstellen. Dann haben Sie etwas Zeit, um mit der Technologie zu spielen, und Sie erhalten wertvolle Einsichten in Bezug auf die benötigte Zeit, um damit etwas zu schaffen.
Wenn ich in der Vergangenheit mit einer neuen Technologie gearbeitet habe (d. h. wenn die neue Technologie für die Lieferung des Projekts eine zentrale Rolle gespielt hat), hatte ich gute Ergebnisse, wenn ich folgendes schätze:
%Vor%... aber es versteht sich von selbst, das ist eine Faustregel und YMMV.
Eine Sache, die Sie tun können - abgesehen davon, jemanden einzustellen oder nicht zu schätzen - ist, die relative Komplexität Ihrer Aufgaben abzuschätzen und dann die tatsächliche Implementierungszeit mit der Komplexitätsebene zu vergleichen. Im Laufe der Zeit wird das Verhältnis zu einem stabilen Wert konvergieren.
Jetzt treffe ich ein Problem wie Ihres. Nach dem Lesen dieser Kommentare hier, Ich denke, da gehört zu einer Ebene, die sich über neue Technologien klar machen will. Als erstes, nur in kurzer Zeit Forschung für neue Technologie als rohe (eine Skizze Figur) nach dem es bereits einen Zusammenbruch funktioniert, so jetzt nur priorisieren und tiefer in Auftrag geben.
Ich hoffe, das ist nützlich.
Tags und Links project-management estimation