Software-Disaster-Recovery, wenn ein Techniker plötzlich nicht mehr verfügbar ist

8

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?

Sherif
quelle
3
Wenn Ihr Teil der Arbeit ohne Schulung oder Weitergabe von Informationen von Ihnen ausgelagert werden kann, können Sie möglicherweise nicht viel Wert hinzufügen. In der Regel muss in einem gut verwalteten Projekt eine gewisse Notfallzeit (basierend auf der Projektdauer, jedoch nie weniger als einer Woche) eingeräumt werden, um solche Risiken zu managen.
James McLeod
Warum gab es niemanden, der den Job beendete?
Euphoric
7
"Vor kurzem hatten wir in meiner Firma ein Projekt, bei dem die Frist sehr eng war" - mit anderen Worten, (a) der Projektmanager hat eine Frist erstellt, bei der nichts schief gehen konnte, und (b) der Projektmanager war Ich konnte keine Risiken vorhersehen (z. B. wenn ein Entwickler für einen bestimmten Zeitraum nicht verfügbar ist, was nicht gerade ein exotischer Umstand ist) und konnte sie daher nicht planen. Klingt so, als bräuchten Sie einen neuen Projektmanager, es sei denn, dieser kann aus seinen Fehlern lernen.
Kyralessa
4
@Kyralessa: Oder (c) der Projektmanager war gezwungen, alle Puffer aus der Planung herauszupressen, weil jemand anderes dem Kunden unrealistische Versprechungen gemacht hat. "Das kann nicht so schwer sein, also versprechen wir einen Liefertermin, bevor wir die Entwickler nach ihren Schätzungen fragen."
Bart van Ingen Schenau
3
@BartvanIngenSchenau, in einer solchen Situation besteht seine / ihre Aufgabe als Projektmanager darin, zurückzudrängen.
Kyralessa

Antworten:

10

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:

  • Peer Reviews stellen sicher, dass das Wissen über die Entwicklung zwischen mehreren Entwicklern geteilt wird. Im Falle einer Nichtverfügbarkeit könnte sich der Rest des Teams neu organisieren, um zu übernehmen, oder im schlimmsten Fall einen neuen Codierer hinzuziehen und einen Wissenstransfer organisieren.
  • Integrierte Colocated-Teams, die eng zusammenarbeiten, um Entwurfsentscheidungen zu treffen, können die Nichtverfügbarkeit auf dieselbe Weise verringern. Das gemeinsame Wissen über das Gesamtdesign erleichtert die Umverteilung der Arbeit und die Einweisung von Neuankömmlingen.
  • formale Dokumentation könnte schließlich helfen. In der Praxis funktioniert dies jedoch nur dann gut, wenn die von einem Entwickler erstellte Dokumentation von einem anderen Entwickler (oder von Modellen, die in Tools zur Codegenerierung verwendet werden) verwendet wird. Eine Dokumentation, die nur von sich selbst gelesen wird, scheint häufig viel mehrdeutiger zu sein. Wenn ein neuer Entwickler solche Arbeiten übernehmen muss, wirft die Selbstdokumentation möglicherweise so viele Fragen auf, wie er beantwortet.

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.

Christophe
quelle
1
Das ist ziemlich nah. Das Wichtigste ist, aktiv sicherzustellen, dass jemand Sie kurzfristig abdecken kann.
candied_orange
Im Projektmanagement gibt es ein Konzept für diese Fälle. Die Planung sollte diese Art von Situationen berücksichtigen. Jetzt ist es für das Unternehmen zu spät, um die Auswirkungen zu minimieren. Seien Sie ehrlich mit den Stakeholdern und machen Sie sie wissen, dass die Frist verschoben werden sollte. Das Einhalten von Fristen ist fast nichts im Vergleich zu den erwarteten Erwartungen. Wenn Sie versuchen, diesen Mangel an Planung auf Kosten der "Qualität" zu vermeiden, könnte die Lösung teurer sein als Sie denken ... Nach der Veröffentlichung gibt es nur einen "ersten Eindruck".
Laiv
@Laiv Vielen Dank für Ihr Feedback. Ich kann nicht beurteilen, ob in diesem Fall die Frist verschoben werden kann oder nicht. In der Vergangenheit habe ich mehrere kritische Y2K- und EURO-Einführungsprojekte geleitet, für die eine Verschiebung nicht in Frage kam. Aber ich stimme Ihnen in dem Grundsatz zu: Es ist besser, Terminfragen mit dem Kunden zu besprechen, wenn das Risiko zu hoch ist, als zu versuchen, im Verborgenen eine unmögliche Alternative zu finden und zu scheitern. Die Planung der Kontingenz ist natürlich ein Muss. Leider reicht es nicht aus, mit solchen Extremsituationen umzugehen (die Reserven sind am Ende des Projekts tendenziell erschöpft).
Christophe
Ja das stimmt. Ich habe trotz des Budgets für Eventualverbindlichkeiten nicht allzu viele Projekte in Bearbeitung gesehen.
Laiv
5

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!

gbjbaanb
quelle
Sie haben völlig Recht: Jeder Plan benötigt einige Rückstellungen für unvorhergesehene Ausgaben, um mit Risiken umzugehen. Das Problem mit zu viel Kontingenz ist jedoch der sich selbst erfüllende Prophezeiungseffekt: Am Ende wird die Kontingenz sowieso verbraucht. Und in den letzten Wochen des Plans könnten die Menschen immer noch krank werden, obwohl kein Spielraum mehr besteht. Kontingenz allein reicht also nicht aus.
Christophe
1
Eigentlich ist Kontingenz eine Risikominderungsstrategie, aber es gibt auch andere Möglichkeiten, mit Risiken umzugehen, einschließlich des Entfernens (stellen Sie sicher, dass andere übernehmen können, ohne den Zeitplan zu beeinflussen), des Akzeptierens (der Standard, wenn Sie Ihre Risiken nicht verwalten) oder Übertragen Sie es (in diesem Fall informieren Sie den Kunden / Kunden, dass er nicht genug bezahlt, um eine pünktliche Lieferung zu gewährleisten, und dass er bereit sein muss, Verzögerungen zu bewältigen).
James McLeod
5

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.

JacquesB
quelle
2

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.

gnasher729
quelle
1

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.

Jim Kiley
quelle
0

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.

Robbie Dee
quelle