Kürzlich hatten wir in meiner Firma ein Projekt, bei dem die Frist sehr eng war und alles nach Plan lief, bis ich aufgrund extremer persönlicher Probleme nicht mehr erreichbar war.
Schließlich haben wir die Frist um 4 bis 5 Tage verpasst.
Was sind die üblichen Wiederherstellungspläne für diese Bedingungen? Sollte mein Unternehmen versuchen, einen Entwickler auszulagern, um meine Arbeit zu beenden? Selbst das könnte ein paar Tage dauern, um einen zu finden?
Antworten:
Dies hängt von der vorhersehbaren Dauer der Nichtverfügbarkeit, der verbleibenden Projektdauer, der Verteilung der Aufgaben und den Folgen der Nichteinhaltung der Fristen ab.
Softwareentwickler sind nicht nach Belieben austauschbar. Entwickler bauen Wissen auf dem System auf, wenn das System wächst, und das Hinzufügen einer neuen Ressource erfordert die Bewältigung des fehlenden Kontextwissens über die neuen Ressourcen.
Mehrere bewährte Verfahren verringern die mit der plötzlichen Nichtverfügbarkeit verbundenen Risiken:
Es ist sehr schwierig, neue Entwickler hinzuzuziehen, wenn die Fristen knapp sind, da die Einweisung der Neuankömmlinge in einer Zeit, in der es keine Freizeit gibt, Zeit für das Team kostet. Wenn Sie 1 Woche lang krank sind, macht es keinen Sinn. Es ist in Betracht zu ziehen, ob die Kosten für die Unterrichtung von Neuankömmlingen durch die Vorteile der neuen Ressource kompensiert werden, in der Regel, wenn hohe Kosten für Verspätungen anfallen oder wenn eine Verschiebung nicht möglich ist oder wenn die Nichtverfügbarkeit über einen längeren Zeitraum besteht.
quelle
Die üblichen Pläne hierfür sind, die Kontingenz innerhalb der Frist einzubauen. Dinge passieren, man hält oft nie Termine ein. Sie nicht verfügbar zu sein, war nur ein weiterer Schluckauf in den sorgfältig ausgearbeiteten Plänen, die nie nach Plan verlaufen!
quelle
Dies wird als "Busfaktor" bezeichnet. Grundsätzlich besteht das Risiko für das Projekt, wenn ein Entwickler von einem Bus angefahren wird. Ein Entwickler, der eine Woche lang nicht verfügbar ist, ist ein kleines Problem im Vergleich zum dauerhaften Verlust eines Entwicklers. Es könnte ein Unfall oder eine plötzliche Krankheit sein, aber weniger dramatisch könnte es nur ein Kernentwickler sein, der kurzfristig den Job wechselt oder entlassen wird. Oder ein Kernentwickler wird zu einer anderen Aufgabe mit hoher Priorität in einer anderen Abteilung versetzt.
Kurz gesagt, Sie müssen entweder planen, den Busfaktor zu senken, oder Sie müssen bereit sein, ihn zu verringern, z. B. indem Sie Puffer in Fristen haben oder einfach flexibel genug sind, um die Frist verschieben zu können. Normalerweise können Sie eine komplexe Aufgabe nicht kurzfristig auslagern oder einen neuen Entwickler einstellen. Es würde fast immer länger dauern, einen neuen Entwickler in ein vorhandenes System einzuführen, als eine Woche auf die Rückkehr eines Kernentwicklers zu warten. Wenn ein kleines Team ein Mitglied verliert, ist es natürlich langsamer, aber wenn es auch ein neues Mitglied vorstellen muss, ist es noch langsamer .
Sie können den Busfaktor senken, indem Sie ein Team mit kontinuierlichem Wissensaustausch und Peer-Reviews (oder sogar Paarprogrammierung) beauftragen. Aber das muss natürlich passieren, bevor der Bus fährt.
quelle
Jeder Mitarbeiter kann jederzeit für eine Woche, einen Monat oder für immer ohne Vorankündigung nicht mehr verfügbar sein. Unfall, Krankheit, genug von diesem Job, viele andere Gründe. Es ist Sache des Managements, sicherzustellen, dass ein solcher Anlass ärgerlich, vielleicht teuer, aber keine Katastrophe ist.
Wenn Sie ein zehnköpfiges Team haben, verlieren Sie möglicherweise 10% Ihres Teams. Das Unternehmen sollte in der Lage sein, damit umzugehen, wenn der Rest des Teams motiviert ist (das Bezahlen von Überstunden ist sehr motivierend). Wenn Sie ein Team von einem sind, wird die Arbeit nicht erledigt. Wenn Sie andere Mitarbeiter haben, die eingreifen können, kann die Verzögerung minimiert werden. Es wäre schwierig, jemanden von außen einzustellen, obwohl Sie wahrscheinlich einen Auftragnehmer finden, der einige Wochen im Voraus mit einem sehr hohen Stundensatz beginnen kann.
Das Beste, was Sie tun können, ist, Verträge usw. abzuschließen, damit eine Verzögerung bei der Fertigstellung eines Produkts keine finanzielle Katastrophe darstellt. Und einen geplanten und erreichbaren Endtermin weit vor Ablauf der Frist zu haben. Mitarbeiter zu haben, die sich gegenseitig unterstützen können, hilft (kann aber problematisch sein).
Und wenn Sie eine Frist haben, die eingehalten werden muss , ist der Arbeitsumfang möglicherweise flexibler. Mit anderen Worten, löschen Sie Funktionen, um Ihre Frist einzuhalten.
quelle
Ein wichtiger Weg, um den oben erwähnten "Busfaktor" von @JacquesB zu reduzieren, ist die Paarprogrammierung als Kerntechnik. (Meine eigene Praxis ist es, den Begriff "Lotteriefaktor" zu verwenden, da er weniger krankhaft ist, aber der Effekt der gleiche ist.)
Viele Entwickler hassen Paarprogrammierung. Viele Manager hassen es auch aus ganz anderen Gründen (einige Entwickler hassen es, über längere Zeiträume mit anderen Menschen kommunizieren zu müssen; einige Manager fühlen sich oft falsch, als würden sie doppelt so viel Geld für eine einzelne Ausgabe bezahlen).
Durch die Paarprogrammierung wird jedoch das Risiko eines einzelnen menschlichen Fehlerpunkts nahezu ausgeschlossen, indem sichergestellt wird, dass eine bestimmte Entwicklungsaufgabe von mindestens zwei Entwicklern ausgeführt und verstanden wird.
quelle
Es gibt eine Reihe von Möglichkeiten, wie ich solche Dinge gesehen habe:
Teilen Sie die Arbeit aus
Am naheliegendsten ist es, die Arbeit auf die vorhandenen Ressourcen aufzuteilen (vorausgesetzt, dies ist möglich). Es ist fast eine Antwort für sich, sicherzustellen, dass die Entwickler den ersten Schritt machen, aber letztendlich geht es darum, Anforderungen, Designs und Fortschritte ordnungsgemäß aufzuzeichnen. Dinge wie Paarprogrammierung können hier ebenfalls sehr hilfreich sein.
Schieben Sie die Frist zurück oder versuchen Sie, die Zeit zurückzufordern
Erkundigen Sie sich beim Kunden, ob die Frist verlängert werden kann. Alternativ könnte es möglich sein, durch Arbeitsabende, Wochenenden und Feiertage zusätzliche Entwicklungszeit zu gewinnen.
Löschen Sie andere Aufgaben
Gibt es andere unkritische Aufgaben, die vorübergehend gelöscht werden können, um Platz zu schaffen?
Mach weiter
Sind nach der Entwicklung Arbeiten geplant, die vorgezogen werden können, z. B. Dokumentation, Testskripte und Konfiguration?
Gib zu, es könnte spät sein
Sprechen Sie frühzeitig mit dem Kunden. Es könnte möglich sein, teilweise zu liefern - oder zumindest könnten Sie die relativen Prioritäten anderer Dinge angemessen steuern.
Zusätzliche Ressource
Eine Möglichkeit - aber das birgt selbst Risiken. Es wird einige Zeit dauern, bis sie auf dem neuesten Stand sind, und da sie nur vorübergehend sind, können sie einfach gehen und Sie noch schlechter stellen.
Überprüfen Sie den kritischen Pfad
Wenn andere Parteien beteiligt sind, überprüfen Sie, ob sie noch im Ziel sind. Es macht wenig Sinn, Himmel und Erde zu bewegen, um etwas zu erledigen, wenn das Testteam einen Monat hinterherhinkt, um Dinge zu testen.
Die Realitäten des Risikos akzeptieren
Es gibt eine gemeinsame PhraseIn der Anwaltschaft , die besagt, dass schwierige Probleme zu schlechten Lösungen führen. Es kann verlockend sein, alle dazu zu bringen, alles zu verstehen, um alle Eventualitäten abzudecken. Dies ist jedoch eine Narrenjagd.
Entwickler sollten Zeit für ihre eigenen Entwicklungen aufwenden. Es ist eine höchst fragwürdige Tätigkeit, immer mehr Zeit damit zu verbringen, sich mit anderen Entwicklungen vertraut zu machen. Ein vernünftiger Mittelweg könnte darin bestehen, einen Fachexperten und einen Stellvertreter zu haben.
quelle