Wie schätzen Sie eine Programmieraufgabe ein, wenn Sie keine Erfahrung darin haben?
Ich bin eine schwierige Zeit mit management-Fragen für die Schätzungen zu den Programmier-Aufgaben, die mithilfe von Drittanbieter-Steuerelemente, ich habe keine Vorherige Erfahrung mit.
Ich auf jeden Fall verstehen, warum Sie würde wollen, dass die Schätzungen, aber ich fühle mich, als ob überhaupt einschätzen zu können, gebe ich entweder a) zu kurz und machen mich schlecht Aussehen, oder b) zu lange und machen mich schlecht Aussehen.
Was schätzen oder die Antwort könnte ich geben, die Verwaltung, um Sie Weg von meinem Rücken, so dass ich weiterhin meine Arbeit verrichten!
InformationsquelleAutor der Frage Jon Erickson | 2009-01-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist die beste Antwort die man geben kann, ist zu Fragen, für die Zeit, die zu klopfen einen schnellen Prototypen, um Ihnen zu erlauben, um eine genauere Schätzung. Ohne einige Erfahrung mit einem tool oder ein problem, jede Schätzung, die Sie geben, ist im Grunde bedeutungslos.
Als beiseite, es ist sehr selten ein problem mit ihm zu lange eine Schätzung. Unvorhergesehene Probleme auftreten, die Prioritäten ändern sich, und die Anforderungen sind "aktualisiert". Auch wenn Sie nicht alle die Zeit, die Sie angefordert haben, haben Sie mehr Zeit der Prüfungen, oder freigeben können, "frühe".
Habe ich immer viel zu optimistisch bei meinen Schätzungen, und es kann eine Menge von stress in Ihrem Leben, vor allem, wenn Sie sind eine junge Programmierer ohne Erfahrung und selbst-Vertrauen zu erzählen Bosse unbequeme Wahrheiten.
InformationsquelleAutor der Antwort RB.
Ich werde Sie in ein Geheimnis. Auch wenn Sie ein Experte mit, dass die Technologie, Ihre Schätzung ist wahrscheinlich sehr ungenau. Es ist die Natur des Tieres, wenn dabei etwas, das von Natur aus eine R&D Aufgabe. Leider-management oft versucht wird für ein Herstellungs-Modell und verlangen genaue Schätzungen. Zu meinen Standpunkt zu verdeutlichen, betrachten Sie die Schwierigkeiten bei der exakten Einschätzung der folgenden zwei versuche:
A) Herstellung einer anderen 11K Sonnenschirme, die sind genau das gleiche wie die 2K-Sie aufgewühlt letzten Monat.
B) die Entwicklung einer neuen Art von Schirm und bauen die erste.
Software-Entwicklung ist B, sondern Sie bitten, für eine Schätzung unter der Annahme A.
Das beste, was Sie tun können, ist, brechen die Aufgabe nach unten in die kleinsten Stücke möglich (nicht mehr als 1/2 Tag) und dann triple die Letzte Zahl, die Sie kommen mit.(Spolsky Methode)
Abwechselnd, Steve McConnell hat ein ganzes Buch (wohl mehrere) auf dieser Seite des software engineering.
http://www.amazon.com/Software-Estimation-Demystifying-Practices-Microsoft/dp/0735605351
InformationsquelleAutor der Antwort JohnFx
Steve McConnell (und andere) Gespräche über die Konus der Unsicherheit. Im Grunde stellen Sie eine Schätzung, dass etwa wie folgt aussieht:
Werden die arbeiten dauern zwischen 3 und 9 Wochen, mit 4 Wochen werden die meisten wahrscheinlich.
Da das Projekt fortschreitet, verfeinern Sie Ihre Schätzung. Wie Sie mehr von dem tun der Arbeit und zu verstehen, den Aufwand besser verfeinern Sie Ihre Schätzung um genauer zu sein.
Es ist für mich gearbeitet, aber es kann einige Mühe, sich zu anderen Stakeholdern im Projekt zu verstehen, den Prozess.
InformationsquelleAutor der Antwort Jim Blizard
Möchten Sie vielleicht zu erwägen, die sowohl eine Schätzung und eine Vertrauens-Ebene, d.h., es ist 50/50, dass es dauert 3-6 Monate oder 6-9 Monate oder 75% chance, die Arbeit in 9 Monaten und 90% , Sie werden getan in einem Jahr.
Andere Sache, möchten Sie vielleicht zu prüfen, ist mit dem " die Weisheit der vielen " - Ansatz. Gehen Sie herum und Fragen 25-50 Leute, wie lange denken Sie wird es dauern, und der Durchschnitt Ihrer Schätzungen. Mike Cohn ' s Planning Poker ist, denke ich, sehr ähnlich wie diese, wenn auch schwierig zu planen, mit nur einem Entwickler.
InformationsquelleAutor der Antwort tvanfosson
Brechen Ihre Schätzung in:
Anbieten, passen Sie die Schätzung und bestimmte Meilensteine auf dem Weg. Jede unbekannte unbekannte wird bekannt werden und die unbekannten, die bekannte unbekannte bekannt werden sollte knowns wie Sie Erfahrungen sammeln, und die Einschätzung Sie bekannt, knowns kann justiert werden basierte auf den aktuellen Stand. Sie können machen eine erste Schätzung, dann wieder schätzen, wenn Sie etwa 25% fertig, dann wieder bei 50%, dann wieder bei 85%. Bei jedem Meilenstein Ihre Schätzung sollte beginnen, konvergieren auf die tatsächliche Zeit die Aufgaben übernehmen wird.
InformationsquelleAutor der Antwort Patrick Cuff
Ich verwenden, das eine eindeutige Kennzeichnung system für meine Schätzungen... Klasse A, Klasse B und Klasse C.
Den C-Klasse-Schätzung ist die erste, die Sie bekommen. Es ist offen gesagt als plus oder minus 50%, da die unbekannten. Wenn Sie möchten, dass ich Ihnen weiterhin eine B-Klasse, dann brauche ich Geld für die Forschung.
Der Klasse B ist plus oder minus 25%. Manchmal ist das gut genug, und Sie geben mir das Geld, um zu bauen. Wenn nicht, weniger Geld und mehr Forschung.
Die Klasse A ist plus oder minus 10%, die Letzte und gehen, oder nicht gehen. Wenn es eine gehen, und ich zu weit von der Schätzung, ich gestehe, oft und früh.
InformationsquelleAutor der Antwort dacracot
Ich denke, dass, wenn Sie entfernen der Satz "werden unter Verwendung von 3rd-party-controls, ich habe keine Vorherige Erfahrung mit", haben Sie vielleicht eine bessere Beschreibung von deinem größeren problem.
Wenn "Agil" uns etwas gelehrt hat, dann, dass, wenn das management erwartet, dass Sie, auf einer Laufenden basis zur Einschätzung der Projekte, die Art und Weise, und Sie "schlecht Aussehen", wenn Sie sagen, es kann nicht bereitgestellt werden, weil Sie nicht genügend Informationen haben, sind Sie auf der Autobahn zu SCHEITERN.
Das größte problem wird sein, die Probleme, die Sie haben keine Kontrolle über, und die Sie noch nicht identifiziert werden konnten. Wie oft haben Sie schaute zurück und sagte zu sich selbst "Nun, ich traf meine Schätzung rechts auf den button" auf den Dritten Versuch, nachdem ich herausgefunden, dass ... und dass ich brauchte-version ... und dass die dba wäre für eine Woche Urlaub, und dass das Projekt Manager müsste mich für ... für eine Woche und meine Frau war Schwanger und ...".
Ich würde versuchen, wirklich hart zu sagen, "ich kann identifizieren wichtige Risikofaktoren und kommen mit einer Checkliste zu arbeiten, testen Sie in xx Tagen. An diesem Punkt werde ich Ihnen eine weitere inkrementelle Schätzung."
Und es wäre echt schön, wenn Sie könnte vermuten lassen, dass Sie "Bitte betonen, dass ich nie versucht um Ihnen eine glaubwürdige Schätzung der Typ in der Zukunft. Feuer mich, ob ich es versuchen."
(Übertrieben, aber nur leicht.)
InformationsquelleAutor der Antwort dkretz
Gar nicht versuchen zu schätzen. Es gibt keinen Weg, um Ihre Schätzung zu korrigieren. Es ist schließlich nur eine Schätzung.
Ich würde stattdessen empfehlen, die Sie splitten die Funktion in kleine Stücke schneiden (nicht mehr als, sagen wir 1-2 Tage) und versuchen, diese zu liefern Stücke, wie Sie arbeiten, vollständig, testbar und wertvolle code an den Kunden/manager. So werde er für sich selbst sehen Sie Ihre Fortschritte auf einer täglichen basis. Dies bedeutet auch, dass er in der Tat entscheiden, zu beenden Entwicklung einmal zufrieden und erwägen, es zu vollenden, auch wenn es vielleicht nicht alle Ziele erreicht.
Haben Sie einen Blick auf die agilen Praktiken "Release Planen" und "Iteration Planen" für mehr in die Tiefe Informationen über diese Ansatz.
InformationsquelleAutor der Antwort Martin Wickman
Im Hinterkopf behalten, wenn Sie Sie bitten, für eine größere Zeit abschätzen, aber stellen Sie es unter der Zeit, es sieht viel besser aus als in der Schätzung, und dass für eine Verlängerung zu bitten.
Ich würde versuchen, zu verspotten, ein Prototyp, so dass Sie eine bessere Vorstellung von der Zeit, die es dauern wird. Seien Sie ehrlich mit Ihrem management, so können Sie budget für unerwartete Verzögerungen in der Lernkurve.
EDIT: Sie vielleicht auch sehen, wenn Sie eine "iterative" Frist. In "Pragmatisches Denken und Lernen" von Andy Hunt ist ein guter Punkt, dass die Menschen sind ExpertInnen und-Experten näher an das Ende des Projektes und der am wenigsten kompetenten ganz am Anfang. Es macht nicht viel Sinn, zu tun, alle Ihre design-und Zeitschätzung ganz am Anfang, wenn sich alle Leute die am wenigsten wissen über das Projekt. Wenn Sie "Durchlaufen" die Fristen und das problem lösen, in Stücke schneiden, werden Sie mehr Erfolg haben.
InformationsquelleAutor der Antwort Jordan Parmer
Viel genauere Schätzung ist selbst-Erkenntnis. Wenn du schon viel code geschrieben, wenn Sie ' ve hatte zu lernen, eine Menge von APIs, die Sie starten, um ein Gefühl für Fragen wie:
Während, dass, sollten Sie ein Gefühl dafür bekommen, solche Dinge wie:
Basierend auf all diese Dinge, werden Sie in der Lage, zu entwickeln ein Gefühl dafür, wie lange etwas dauert und in der Lage sein, Ihre Annahmen ("Vorausgesetzt, die API ist gesund..."), auch im Angesicht der beklagenswert unvollständigen Informationen.
InformationsquelleAutor der Antwort plinth
Abschätzen, wie lange Sie brauchen, um zu lernen, genug, um eine bessere Schätzung, zum Beispiel, "ich weiß es nicht: ich habe nie Arbeit mit diesem vor. Es wird wahrscheinlich nehmen Sie mich legen Sie Ihre Schätzung hierum was Sie brauchen, um mehr darüber zu erfahren das müsste ich wissen, bevor ich kann Ihnen eine gute Schätzung für die Nutzung dieses zu beenden Ihr Projekt."
InformationsquelleAutor der Antwort ChrisW
Beim Programmieren habe ich immer genommen, was ich wirklich dachte, er würde mich nehmen und multiplizieren Sie diese mit 3 um eine Schätzung. Wenn ich denke, ich kann einen job in der 1 Woche, Sag ich dem client dauert es 3-wenn ich denke, es wird wirklich nehmen Sie mich 3 Wochen sage ich dem client 9 Wochen.
Dadurch das ich mir gesetzt habe-bis auf "under promise, over deliver" - wenn man das erfolgreich zu tun, das Ihr Leben wird viel besser sein, und Ihre Kunden werden sehr glücklich.
In Ihrem Fall werden Sie sicherlich wollen, um wenigstens ein gewisses Verständnis von dem, was Sie sind, Tauchen in, bevor er einen Kostenvoranschlag. Vielleicht haben Sie sogar brauchen, um eine Schätzung auf wie lange es dauern wird, bis eine Schätzung. Multiplizieren von 3 hält die Kunden glücklich.
InformationsquelleAutor der Antwort Jeremy H
Brechen Sie in Dinge, die Sie haben einige Erfahrung mit. Der Akt der hacken es wird Ihnen eine bessere Idee über, was Sie wissen und was Sie nicht wissen.
Sobald die Stücke sind klein genug, dass Sie gesehen werden können, wie einzelne Aufgaben definiert, ein paar von Ihnen werden ganz un-schätzbar. Für diejenigen, die entweder erste Prototyp, oder lassen Sie einfach sich selbst eine vernünftige Menge an Zeit, abhängig von der Größe des Stückes. Wenn Sie finden, dass Sie habe un-schätzbaren Stücke größer als 2-4 Wochen arbeiten, gehen Sie zurück zu, hacken Sie bis ersten.
Schließlich werden Sie nach unten zu bekommen, einige sehr seltsame technische Lösungen (dass Sie denken arbeiten sollte, aber weiß es nicht sicher), und eine ganze Menge Arbeit getan werden, um wieder das Zeug, sobald es funktioniert. Es werden ein paar bits fehlen design, für die es am besten zu Holen einige bekannte Bibliothek oder einen sehr einfachen Algorithmus für die erste version.
Wenn Sie können nicht brechen die Aufgaben, dann sollten Sie jemanden beauftragen, mit genug Erfahrung, wer kann (seit Ihrer mangelnden Erfahrung wird Euch auch in anderer Weise). Wenn Sie nicht jemanden einstellen, dann sollten Sie einfach Schnäppchen für eine zufällig lange Zeit (6 Monate bis 2 Jahre), und fahren Sie geradeaus in eine chaotisch-Prototyp (bis Sie es geschafft haben, geben Sie sich genug Erfahrung, um zu wissen, was richtig und was falsch ist). Aber, wenn Sie am Ende rudernd an ihm, es ist wichtig, nicht Kind sich selbst und denke, dass Sie es tun, den richtigen "Weg". Prototypen wurden dazu gedacht weggeworfen zu werden. Hoffentlich einmal der Prototyp countdown abgeschlossen ist, sind Sie bereit, es zu bauen für real.
Paul.
InformationsquelleAutor der Antwort Paul W Homer
Du nur erraten, ein außerhalb der Reihe zu bekommen und zu bewerten sofort, lassen Sie Sie wissen, dass die zukünftigen Informationen könnte Auswirkungen auf Ihre Schätzungen, aber Sie bleiben Sie up to date.
Wie Sie bewerten, Sie informieren-entweder durch ein Dokument veröffentlicht auf der web-oder wöchentliche updates, aber immer eine aktualisierte "estimated-end-date", und die Gründe (falls vorhanden) für Erweiterungen.
Meisten Manager sollten verstehen, dass-indem er für Enddaten, Sie sind wirklich sagen: "geben Sie uns eine Vorstellung davon, wie wir planen unsere Termine" und "nicht nur ewig dauern".
Wenn Sie am Ende, die sich mehr als einmal oder zweimal, neu zu bewerten Ihre gesamte Zeitplan basierend auf dem neuen wissen, dass Sie saugen zu schätzen.
InformationsquelleAutor der Antwort Bill K
Ich würde dem hinzufügen, was RB sagte, wenn ich mich in dieser situation, die ich abzuschätzen, wie lange es dauern würde, mit tools, die ich bin vertraut mit, und doppelklicken Sie dann, dass die Schätzung zu bauen, in einigen Lernkurve.
Ist der wichtige Teil der Kommunikation zum management, dass die Schätzung ist eine denkewenn Sie drücken Sie für eine genauere Schätzung oder wenn Sie versuchen - lieber Gott - verkaufen Sie ein Zeitlimit (sicherlich werde es nur nehmen Sie 2 Tagen zu bauen das Raumschiff Enterprise, du bist gut du bist) - STICK, UM IHRE WAFFENnicht gefährden Ihre Schätzung, oder die Tatsache, dass es unzuverlässig ist.
Wenn das management überschreiben Sie und timebox die Aufgabe z.B. "Gut, es hat alles in 2 Tagen", wieder ließ Sie wissen, dass die Ihre Schätzung, die ist genau so zuverlässig wie Ihre eigenen.
Bekommen alles schriftlich.
InformationsquelleAutor der Antwort Binary Worrier
Beschäftige ich mich mit der Einschätzung ziemlich viel in meinem job und es ist eine echte Herausforderung. Eine meiner größten Herausforderungen ist die Schätzung, wie lange es dauern wird, einem anderen Entwickler, um eine Aufgabe zu erfüllen ohne Kenntnis davon, wie gut, dass die Entwickler sein wird.
Während Sie könnten einige erste Erfolge mit "under promise, over deliver" - Methode, Sie werden feststellen, dass im Laufe der Zeit wirst du überboten werden von anderen Menschen, die Folgen, die "über Versprechen, unter liefern" Schule des Denkens. Mangel an Genauigkeit kommen wieder zu beißen, die Sie so oder so. Die Genauigkeit ist sehr stark gebunden an die Erfahrung und die Begrenzung der Anzahl der unbekannten mit der Technologie.
Eine Sache, die ich würde vorschlagen, um eine Vorstellung davon, welche Art von budget, Ihre Schätzung, die gegen. Wenn Sie ein kleines budget haben, don ' T go crazy mit der unbekannten Technik und stick mit was Sie wissen. Wenn Ihr budget ist ein wenig flexibel, dann können Sie sich leisten ein wenig Experimentieren.
Erkennen auch, dass es einige Aufgaben, bei denen alle, die Sie bieten können ist ein Wild-Ass Guess (WAG). Für diese sollte man ein minimum an Zeit, um Ihre Schätzung und machen Sie deutlich, dass Sie nicht wissen, was das max ist. Oft dieser Art von Schätzung ist Grund genug für bestimmte Funktionen/req ' s ausgeschnitten werden, die durch das management.
InformationsquelleAutor der Antwort Karthik Hariharan
Ist eine unverzichtbare Fertigkeit, die sowohl Projekt-manager und Programmierer haben kann (und natürlich auch beherrschen kann!), Ich fand einen Artikel, Estimating Software Development Aufgaben Gemacht (ein bisschen) Leichter die ich erwarten, zu helfen, für eine bessere Schätzung auf Projekt-Aufgaben.
InformationsquelleAutor der Antwort O.Badr
Alle oben genannten Reaktionen abgedeckt haben, so ziemlich alles zu den kommenden up mit der Schätzung selbst.
Eine Sache, die ich betonen möchte ist, zu verfolgen Ihre Schätzung (eine kleine Excel-Arbeitsblatt a la Joel, oder sogar ein Editor-Dokument, wenn es sehr einfach ist), und am Ende eines jeden Tages, aktualisieren Sie diese, um die genaue zahlen können Sie nun liefern. Auch wenn Sie nicht übergeben zu müssen, diese zurück zu Ihren Chef, halten diese up-to-date gibt Ihnen eine bessere Vorstellung über wie die Dinge kommen voran, und noch wichtiger, Sie bekommen ein gutes Gefühl für warum Ihre Schätzung änderungen, wie die arbeiten Voranschreiten.
Tun, so werden Sie besser bei der Schätzung der in Zukunft für diese spezielle Technologie und andere, die Sie nicht verwendet haben, bevor, weil es einfach erfordert, dass Sie auf einer bestimmten Ebene zu bemerken, wenn Sie Ihre Erwartungen verändern in regelmäßigen Abständen, und arbeiten Sie heraus, warum das passiert ist.
InformationsquelleAutor der Antwort Andrzej Doyle
Schätzung, wie lange etwas dauern wird, ist Teil Ihrer Arbeit. So lange, wie es verstanden werden, um eine Schätzung, sondern als eine Frist, die Sie sollten nichts zu befürchten haben. Es ist niemand besser aufgestellt, um eine Schätzung als die person, die den code schreiben. Wenn Sie nicht bieten kann eine gute Schätzung, dann werden Sie brauchen, um das management des Risikos bewusst befestigt, um Ihre schlechte Schätzung, so können Sie überdenken, ob es Wert ist das Risiko auf die Programmierung gegen diese unbekannten 3rd-party-controls.
InformationsquelleAutor der Antwort Sam Meldrum
Dass ist eine sehr Allgemeine situation: die Notwendigkeit umgehen mit dem unbekannten. Ein nützlicher Weg, um diese Situation zu bewältigen ist bewusst, dass neben der eigentlichen Programmierung auch Aufgaben, haben Sie einige lernen zu tun - und das management sollte sich dessen bewusst sein.
Sind, wenn Sie in einer situation wie dieser, das Projekt wird plötzlich zu einem R&D project und länger als normal sind, nicht machen Sie sich schlecht, da Sie lernen und produzieren Programme. Ich weiß nicht, wie schnell Sie lernen, oder was Ressourcen, die Sie zu bewältigen haben alle Probleme, die Sie finden können (Stack Overflow ist eine der Optionen, die Sie haben).
Ich würde sagen, Sie sollten einschätzen, wie üblich, und dann multiplizieren Sie entweder durch 1.5 (wenn Sie sind ein schneller Lerner und hast Zugang zu Ressourcen, Ihre Fragen zu lösen) oder um 2,5, wenn Sie eine Durchschnittliche Lerner und verlassen sich nur auf sich selbst.
Ich hoffe, das hilft!
InformationsquelleAutor der Antwort Kwang Mark Eleven
Versuchen Ihre härtesten teilen Sie die Aufgabe in überschaubare Stücke. Mit etwas Glück gibt es spezifische Aufgaben in Bezug auf die 3rd-party-Komponente beteiligt sind, und andere, die sind weniger gekoppelt (und daher einfacher zu schätzen). Geben management des split-up Schätzungen und zeigen, wo die unsicheren Schätzungen Leben.
Ich voll und ganz Zustimmen, wer schlug zu spielen, um und Prototypen. Stellen Sie einen festen timebox für die prototyping-Aktivitäten. ("Ich brauche zwei Tage, ersten, machen diesen Teil meiner Schätzung besser.")
InformationsquelleAutor der Antwort PEZ
Können Sie geben ein Angebot? 40-60 Stunden, die sowas?
Je kleiner die Aufgaben sind, desto schwieriger ist es, wenn Sie können Sie gruppieren, müssen Sie ein wenig mehr "slop" als die Fehler ausgleichen können am Ende des Projekts.
Schauen, in jedem Bereich Sie haben Erfahrung mit und verwenden, wenn als Leitfaden. "Das Letzte mal benötigt, um eine Funktion zu erstellen, die die Datenbank geändert, es hat mich X". Viel Glück.
InformationsquelleAutor der Antwort Dan Williams