Heim  >  Artikel  >  System-Tutorial  >  Unverzichtbar für Programmierer: Fähigkeiten zur Projektzeitschätzung

Unverzichtbar für Programmierer: Fähigkeiten zur Projektzeitschätzung

王林
王林nach vorne
2024-01-08 18:18:53975Durchsuche
Einführung Eine PM erzählte mir kürzlich von einem Dilemma, mit dem sie konfrontiert war: „Softwareentwickler können nie abschätzen, wie lange ihre Projekte dauern werden?“ Zwei andere CEOs haben mir kürzlich dasselbe gesagt. Auf hoher Ebene besteht das Problem darin, dass Ingenieure, PMs, Manager, PR und alle anderen unterschiedliche Perspektiven haben, wenn es um die Zeitschätzung geht. Die meisten Ingenieure denken instinktiv darüber nach, wie viel Zeit mindestens benötigt wird, um einen brauchbaren Prototyp zu schreiben, wenn alles nach Plan verläuft. Aber was die Leute nachgelagert wissen wollen, ist, wann das Projekt zur Veröffentlichung bereit sein wird – und das ist eine ganz andere Geschichte.

Eine Premierministerin erzählte mir kürzlich von einem Dilemma, mit dem sie konfrontiert war: „Softwareentwickler können nie abschätzen, wie lange ihre Projekte dauern werden.“ Zwei andere CEOs haben mir kürzlich dasselbe gesagt.

„Warum können Programmierer die Projektzeit nicht genau einschätzen?“ 》(http://blog.jobbole.com/24924/), wir alle verstehen es zutiefst. Ich bin einmal auf ein Projekt gestoßen, dessen Fertigstellung eigentlich zwei Tage dauern sollte, am Ende aber vier Monate gedauert hat. In diesem Fall besteht selbst unter Verwendung der empirischen Schätzung der „doppelten Zeit“ immer noch ein Unterschied von einer Größenordnung. Das wirkt sich wirklich auf das Geschäft aus. Ich habe erlebt, dass ganze Unternehmen mit der Ausrichtung einer Einführungsveranstaltung zu kämpfen hatten, diese dann aber um Monate verschieben mussten.

Auf hoher Ebene besteht das Problem darin, dass Ingenieure, PMs, Manager, PR und alle anderen unterschiedliche Perspektiven haben, wenn es um die Schätzung der Zeit geht. Die meisten Ingenieure denken instinktiv darüber nach, wie viel Zeit mindestens benötigt wird, um einen brauchbaren Prototyp zu schreiben, wenn alles nach Plan verläuft. Aber was die Leute nachgelagert wissen wollen, ist, wann das Projekt zur Veröffentlichung bereit sein wird – und das ist eine ganz andere Geschichte.

Unverzichtbar für Programmierer: Fähigkeiten zur Projektzeitschätzung

Für Ingenieure ist es eine lebenslange Aufgabe, die für die Schätzung eines Projekts erforderliche Zeit zu erfassen. Das Ignorieren dieses Problems wird Ihnen und allen, mit denen Sie direkt oder indirekt in Kontakt kommen, Probleme bereiten. Wenn Sie die Dauer eines Projekts genau einschätzen, zeichnen Sie sich aus und Kollegen werden dies mit Ihrer Professionalität, Stabilität und Qualität Ihrer Arbeit assoziieren.

Warum brauchen wir eine Zeitschätzung? Lassen Sie mich zunächst eine von Ingenieuren häufig gestellte Frage beantworten: „Warum müssen wir die Zeit schätzen?“ Viele Ingenieure beschweren sich (zu Recht), dass dies indirekte Kosten sind. „Wenn ich Vollgas gebe, beende ich das Projekt schneller!“

Es gibt zwei Hauptgründe: externe Abhängigkeiten und Prioritäten.

Externe Abhängigkeiten

Keine wirksame Kampagne funktioniert im luftleeren Raum. Projekte weisen häufig externe Abhängigkeiten auf, beispielsweise die Zusammenarbeit mit nicht-technischen Teams (Kommunikation, Finanzen, PR, Kundenservice), anderen technischen Teams oder sogar den Endbenutzern selbst. Die Koordination dieser externen Abhängigkeiten liegt in der Regel in der Verantwortung des Managers, PM oder CEO. Dies bedeutet, dass die Personen, die am besten für die Durchführung von Zeitschätzungen qualifiziert sind (Ingenieure), nicht die Personen sind, die die Zeitinformationen für die Schätzungen am meisten benötigen. Diese Asymmetrie führt zu einem grundsätzlichen Widerspruch.

Priorität

Zeitschätzung ist auch der Schlüssel zur Priorisierung der Arbeit. „Ob das Geld sein Geld wert ist“ ist ein wichtiger Indikator im Projekt. Ohne eine echte Schätzung lässt sich nicht feststellen, ob das Geld sein Geld wert ist. Auch wenn die Funktion, an der Sie arbeiten, die beste der Welt ist: Wenn Sie sich die Zeit für eine gründliche Schätzung nehmen, werden Sie möglicherweise feststellen, dass die Fertigstellung lange dauern wird.

Angenommen, Sie arbeiten an einem Projekt, das die Website um 50 % schneller macht, aber in der gleichen Zeit können zwei Projekte abgeschlossen werden, die die Website jeweils um 40 % schneller machen. Wenn Sie sich nicht die Zeit nehmen, eine erste Schätzung vorzunehmen, werden Sie nie wissen, dass Sie eine schnellere Website erstellen können!

Erste Schritte mit der Zeitschätzung

Da sich nun alle darin einig sind, dass eine Zeitschätzung in den meisten Fällen erforderlich ist, sprechen wir über Techniken.

Wir unterschätzen die Zeit, weil wir denken: „Wie lange werde ich brauchen, um diese Basisversion zu schreiben?“

Aber es bietet noch mehr als nur die Basisversion. Berücksichtigen Sie auch die Zeit, die zum Schreiben, Testen, Debuggen und Polieren erforderlich ist. Vergessen Sie nicht, dass auch Dinge wie Besprechungen, Interviews, Codeüberprüfungen und das Versenden von E-Mails Zeit brauchen.

Ein weiterer Grund, die Zeit zu unterschätzen, besteht darin, dass wir beim Codieren fast immer auf „Unbekannte“ stoßen, die sich nicht vollständig vorhersagen und berücksichtigen lassen. Vielleicht wird die IDE aktualisiert, das Projekt bricht ab und Sie verbringen den Tag damit, es zu reparieren. Dies kann bei Zeitschätzungen nicht berücksichtigt werden.

Allerdings können wir es immer noch besser machen als unsere anfängliche Intuition. So mache ich es:

Schritt eins: Entwickeln Sie einen technischen Plan

Bevor Sie mit der Arbeit beginnen, sollten Sie bereits über einen technischen Plan oder ein Designdokument verfügen, das bei jedem wichtigen Projekt hilfreich sein kann. Sie können dies nutzen, um anderen mitzuteilen, was Sie tun, und Feedback zu erhalten. Die Entwicklung eines technischen Plans ist die ideale Phase für die Erstellung von Zeitschätzungen. Wenn Sie die technischen Details des Entwurfs vervollständigen, werden unbekannte Probleme entdeckt und Sie werden die geschätzte Zeit auf magische Weise revidieren. Vielleicht stellen Sie fest, dass Sie möglicherweise eine von Ihnen verwendete Bibliothek auf eine neue Version aktualisieren müssen, was Ihre Arbeit um einen Tag verlängern kann. Möglicherweise stellen Sie sogar fest, dass die Bibliothek, die Sie verwenden möchten, tatsächlich nicht existiert und Sie sie selbst schreiben müssen. Granularität ist hier wichtig. Wenn sich ein Schritt vage oder unklar anfühlt, haben Sie ihn möglicherweise übersprungen (sollten Sie mehr erfahren) oder müssen ihn in kleinere Schritte aufteilen. Wenn ein Schritt jedoch zu detailliert ist, kann er in der Praxis angreifbar sein und den gesamten Plan unwirksam machen.

Welche Aspekte bei der Technologieplanung berücksichtigt werden sollten, erfahren Sie in diesem Artikel von Alicia Chen „Was meinst du mit ‚wir brauchen mehr Zeit‘?“ Einer der wichtigsten Punkte besteht darin, mögliche Unklarheiten mit dem PM oder anderen Stakeholdern zu beseitigen, damit Sie nicht am Ende von vorne beginnen müssen, weil Sie etwas falsch gemacht haben.

Schritt 2: Zeitbudget für jeden Schritt hinzufügen

Schätzen Sie, wie lange die Ausführung jedes Schritts der technischen Lösung dauern wird. Dabei geht es in der Regel darum, sich mit den Details zu befassen („Hat jemand bereits implementiert, was diese Bibliothek leistet?“). Abhängig von der Art des Projekts kann die Entwicklung eines einfachen Prototyps dazu beitragen, viele potenzielle zukünftige Schwachstellen aufzudecken.

Schritt 3: Planen Sie viel zusätzliche Zeit ein

Jetzt haben Sie eine vorläufige Schätzung, aber alle zuvor genannten Punkte müssen noch berücksichtigt werden.

  • Debuggen für unterwegs: Es gibt immer Fehler. Das Debuggen hängt weitgehend von Ihrer Erfahrung mit einer bestimmten Codebasis und der Reife der Codebasis ab.
  • Besprechungen, Interviews, Urlaub usw.: Vielleicht werden Sie nicht die ganze Zeit an Ihrem Arbeitsplatz programmieren. Wie viele Stunden muss man wirklich programmieren? Bei der Schätzung sollten Sie zumindest einen Blick in Ihren Kalender werfen.
  • Abschließende Tests und Fehlerbehebung: Normalerweise sollten Sie beim Codieren Tests schreiben, aber viele Teams müssen vor der Veröffentlichung eine Runde Polierarbeiten oder Integrationstests durchführen. Planen Sie im Kostenvoranschlag ein angemessenes Budget für diese Aufgaben ein. Wenn die Einführung stufenweise erfolgt, können die ersten 1 % des Inhalts Fehler aufdecken, die behoben werden müssen, daher muss dies berücksichtigt werden.
  • Codeüberprüfung: Wie viele Codeüberprüfungsrunden benötigt das Projekt? Wie lange dauert es normalerweise? Stellen Sie sicher, dass genügend Gutachter zur Verfügung stehen (und überprüfen Sie auch deren Zeitpläne). Wenn es sich um ein Projekt mit nur einem Gutachter handelt, sollten diese gebeten werden, im Voraus eine Bereitschaft zu vereinbaren, falls der Gutachter im Urlaub ist oder zu einem kritischen Zeitpunkt zu beschäftigt ist.

Sobald Sie beginnen, den gesamten Zeitaufwand in Ihr Projekt einzubeziehen, werden Sie feststellen, dass Ihre Zeitschätzungen viel besser übereinstimmen als zu Beginn des Projekts. Ja, es kann tatsächlich länger dauern als erwartet, und Sie fühlen sich möglicherweise unter Druck gesetzt, die Frist zu verkürzen. Aber die Leute werden Ihre Schätzungen zu schätzen wissen, wenn sie wissen, dass sie sich auf Sie verlassen können.

Schritt 4: Nachdem das Projekt freigegeben wurde, überprüfen und fassen Sie die Zeitschätzung zusammen

Es klingt schmerzhaft, nach Abschluss des Projekts auf die geleistete Arbeit zurückzublicken. Aber durch eine solche Überprüfung können Sie viel daraus lernen und es beim nächsten Mal besser machen.

Welcher Prozess verlief anders als erwartet? Wenn ein Integrationstest doppelt so lange dauert wie erwartet, notieren Sie sich dies und planen Sie beim nächsten Mal mehr Zeit für den Test ein. Oder versuchen Sie, das integrierte Testsystem zu verbessern.

Mit der Zeit werden sich Ihre Schätzungen bestimmt verbessern. Möglicherweise kommen Sie dabei sogar auf einige großartige Erkenntnisse, die dem gesamten Team helfen können.

Am Ende dreht sich alles um Kommunikation

Sie sollten andere im Voraus über Ihren Zeitplan und andere Änderungen informieren. Wenn Sie Ihren Managern einen Monat vor einer Veröffentlichung mitteilen, dass in einer von Ihnen verwendeten Bibliothek eine neue Sicherheitslücke besteht, und Sie bei Null anfangen müssen, haben sie Zeit, PR, Finanzen oder Benutzer entsprechend zu benachrichtigen, dass die Veröffentlichung erforderlich ist verschoben werden.

Wichtiges Feedback aus der Kommunikation mit anderen Mitarbeitern hilft bei der Anpassung der Zeitschätzung. Der Designer könnte sagen: „Oh, wenn diese ausgefallene Animation die ganze Woche dauern würde, könnten wir sie ganz weglassen.“ Der PM könnte hinzufügen: „Dies ist nur ein Prototyp-Experiment in der Benutzerforschung. Wir brauchen nicht zu viel.“ Fehlerbeseitigung für diese Iteration.“ Der Manager könnte sagen: „Sie haben die Hälfte Ihrer Zeit in Besprechungen verbracht?“

Als Ingenieure sollten Sie bei unrealistischen Zeitplänen keine Kompromisse eingehen, nur um Ihren Vorgesetzten zu gefallen. Es ist professioneller, wenn Sie Ihre geschätzte Zeit und Änderungen im Voraus angeben.

Für alle anderen ist es schwierig, die geschätzte Zeit einzuhalten, und es erfordert einen Prozess. Sie können die geschätzte Zeit nur verkürzen, indem Sie sich hinsetzen und Funktionen oder Phasen streichen, die eigentlich nicht freigegeben werden müssen, und nicht, indem Sie Sie dazu drängen, die Zeit zu verkürzen.

Wir können nie genau abschätzen, wie lange ein Projekt dauern wird. Der einzige Weg, dies zu erreichen, besteht darin, offen, kommunikativ und einfühlsam zu sein und entschieden Prioritäten zu setzen.

Das obige ist der detaillierte Inhalt vonUnverzichtbar für Programmierer: Fähigkeiten zur Projektzeitschätzung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:linuxprobe.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen