Der Vater eines Freundes, der Software-Engineering-Manager ist, sagte nachdrücklich: "Die Hauptursache für Planungsüberschreitungen ist Planungsdruck."
Wo steht die Forschung? Ist ein mäßiger Planungsdruck belebend oder ist der von mir erwähnte Manager richtig oder falsch, oder geht es darum, "je mehr Planungsdruck Sie haben, desto länger die Lieferzeit und desto mehr Gesamtbetriebskosten?" Ist es eines dieser Dinge, bei denen Software-Engineering im Idealfall ohne Planungsdruck funktionieren würde, wir aber praktisch mit Einschränkungen realer Situationen arbeiten müssen?
Alle Links zur Software-Engineering-Literatur sind willkommen.
management
scheduling
engineering
Christos Hayward
quelle
quelle
Antworten:
Ich bin nicht einverstanden. Die Hauptursache für Planungsüberschreitungen ist ein Zeitplan, der die Realität nicht widerspiegelt und zu optimistisch ist. Die menschliche Natur schreibt vor, dass ein gewisser Planungsdruck eine absolute Notwendigkeit ist. Nur ein paar der Probleme, die ohne einen gewissen Planungsdruck auftreten, sind interessante Probleme und "das Beste ist der Feind des Guten". Wir Techniker würden es weitaus vorziehen, an den Problemen zu arbeiten, die uns interessieren, anstatt an dem Problem, das gelöst werden muss, um das Produkt aus der Tür zu bekommen. Nehmen Sie Fristen weg (auch bekannt als Zeitplandruck) und wir werden an diesen interessanten Problemen arbeiten, zum Nachteil des Produkts.
Ein weiteres Problem ist, dass das Produkt "gut genug" sein muss. Es muss nicht perfekt sein. Ingenieure und Wissenschaftler sehen die vereinfachenden Annahmen, die unter bestimmten Umständen nicht ganz gültig sind. Grafikdesigner sehen Aliasing-Probleme, die für alle anderen unsichtbar sind. Programmierer sehen Warzen in ihren Architekturen, die keinen Einfluss auf das Produktverhalten haben. "Das Beste ist der Feind des Guten", was bedeutet, dass wir manchmal mit solchen Problemen leben müssen, die nicht wirklich Probleme sind.
Mangelnder Planungsdruck führt zu einem Produkt mit sehr hohen Betriebskosten. Was zu Überschreitungen führt, sind schlechte Zeitpläne. Dies kann in verschiedenen Formen erfolgen. Unterschätzen Sie den Aufwand, indem Sie Abhängigkeiten nicht berücksichtigen und einem bereits verspäteten Projekt Personen hinzufügen. Nur um ein paar zu nennen.
quelle
Zeit, Qualität, Ressourcen und die Anzahl der Funktionen sind miteinander verbunden. Sie können drei beliebige Probleme beheben und die letzte als Ausgabe Ihres Planungsprozesses abrufen.
Die Art und Weise, wie Ihre Frage formuliert ist, impliziert, dass die Zeit Ihre Variable ist und die anderen drei (die Qualität, die Ressourcen und die Anzahl der Funktionen) alle festgelegt sind. Die Frage kann davon profitieren, die Perspektive ein wenig zu ändern, indem Sie die Zeit * festlegen und die Qualität schweben lassen.
Ihre Frage lautet nun: "Beeinflussen zeitliche Einschränkungen die Qualität negativ?" Die Antwort auf diese Frage ist ein klares "Ja": Untersuchungen bestätigen, dass Menschen unter Druck auf mathematische Probleme ** schlechter abschneiden , die sie zuvor noch nicht ausgiebig geübt haben (dh fünfzig Mal oder öfter versucht haben), sodass der Vater Ihres Freundes Recht hat.
* Ein Top-Manager in einem meiner vorherigen Unternehmen sagte immer, dass die Zeit ein Input für den Planungsprozess ist, nicht dessen Output. Er ließ jedoch die Anzahl der Merkmale schweben und bestand auf der einheitlich hohen Qualität der zu erbringenden Leistungen.
** Es gibt hier eine implizite Annahme, dass das Programmieren dem Rechnen ähnlich ist; Ich halte diese Annahme für fair.
quelle
Nun, jede Planung, die vom Manager durchgeführt wird, ohne sie mit dem technischen Leiter zu besprechen, ist dafür anfällig. Es ist sehr offensichtlich, dass Planungen oder Schätzungen, die NICHT auf Fakten basieren, fehleranfällig sind .
Darüber hinaus bewegen sich Manager, die eine evidenzbasierte Planung vermeiden , auf den nächsten Misserfolg ihres Projekts zu. Es gibt eine Reihe von Studien zu diesem Thema, und die auf Metriken basierende Planung ist der richtige Weg.
quelle
Planung von rechts nach links.
Jemand im Management denkt immer, er sei Steve Jobs mit seiner berühmten Reality Distortion Zone. Bis jemand in der Produktentwicklung sie schult, haben nicht-technische Manager oft eine Ansicht über die Planung, die so ausgefeilt ist wie der frühe französische Film "Le voyage dans la lune" ("Eine Reise zum Mond") für die Raketenwissenschaft.
Das Problem gibt es schon eine Weile. Fred Brooks spricht im Mythical Man-Month über eine Schätzung ohne Darm . Barry Boehm spricht darüber in seinen Vorschlägen für einen Theory-W- Ansatz für das Management. In jüngerer Zeit hat Steve McConnell (Autor von Code Complete ) das Konzept der prinzipiellen Verhandlung in "Wie man einen unbeliebten Zeitplan verteidigt" in den Mittelpunkt gerückt .
Agile bringt den Umfang von Projekten an einen Ort, an dem er gut sichtbar ist. Das Agile Manifest fordert "Zusammenarbeit der Kunden bei Vertragsverhandlungen". Ich hoffe, es befähigt auch die Menschen, die zur Rechenschaft gezogen werden. Das Planungsspiel vermeidet, dass nicht-technische Stakeholder Entwickler zu Versprechungen zwingen, die sie vor langer Zeit gemacht haben und die von Änderungen der Anforderungen oder neuen Entdeckungen überschwemmt wurden.
Wenn Ihre Organisation Agilität ablehnt, gibt es hervorragende Methoden zur Kalibrierung von Schätzungen, um einen Zeitplan basierend auf dem erzielten Wert neu zu definieren . Ich denke nicht, dass der verdiente Wert bei einigen der wirklichen Probleme mit der Vorhersage einen großartigen Job macht, aber es kann helfen, Wahnvorstellungen über die Geschwindigkeit von Projekten und die Harping auf den Schätzungen, die wir als Fakten haben, zu zerstreuen.
Es gibt ein Sprichwort: Je früher Sie mit dem Codieren beginnen, desto länger dauert es. Der Zeitplandruck kann eine Änderung der Methodik erzwingen. Manchmal geht es vom Wasserfall zum "Code wie die Hölle". Dies kann sich negativ auf die Qualität auswirken, ganz zu schweigen von der Moral, wenn die Arbeitnehmer nicht ihr Bestes geben können und ihre Kollegen und zukünftigen Betreuer sie am schlechtesten und nicht am besten sehen. In einer solchen Umgebung kann ein Teil des Chaos durch Quellcodeverwaltung, tägliche Erstellung und Tests (oder kontinuierliche Integration und Komponententests), Codeüberprüfungen mithilfe eines erfahrenen und hochqualifizierten Teams kontrolliert werden, um der Versuchung zu widerstehen, spät Mitarbeiter hinzuzufügen Das Projekt und der alte Standby machen Überstunden.
In anderen Fällen kann die Änderung der Methodik von Wasserfall zu iterativem Inkremental erfolgen. Ich habe die Erfahrung gemacht, dass das Management Agile nur langsam angenommen hat. Aber nach einer Weile gab es ein neues Management, das Agile besser unterstützte. Zeitboxen kann wie Budgetierung sein - es kann uns zwingen, über die beste Nutzung einer begrenzten Ressource nachzudenken. Scrum hat zwei Zeitfelder - eines ist täglich für Feedback zwischen Teammitgliedern, das andere ist monatlich für den Sprint durch die Burndown-Liste.
Creative Commons-Lizenz - siehe http://en.wikipedia.org/wiki/File:Scrum_process.svg
quelle
Sie benötigen keine Software-Engineering-Literatur. Konzeptionelle Wahrscheinlichkeit und Statistik vom Undergrad sind alles, was Sie brauchen.
Eine Schätzung ist genau das, eine Schätzung. Es ist nicht genau, es ist nicht garantiert. Für jede Schätzung besteht eine gewisse Wahrscheinlichkeit, dass Sie sie unterschreiten oder auf die Nase schlagen, und eine gewisse Wahrscheinlichkeit, dass Sie sie überlaufen.
Wahrscheinlichkeit 101: p (unterlaufen oder genau treffen) + p (überlaufen) = 100%.
Ein auf einer Schätzung basierender Zeitplan weist genau dieselben Merkmale auf.
Sie können die Unsicherheit nicht vollständig beseitigen. Es wird IMMER eine gewisse Wahrscheinlichkeit eines Überlaufs geben. Es mag klein sein, die Wahrscheinlichkeit, dass der Iran Ihr Bürogebäude zerstört, aber es ist immer noch da. Das Beste, was Sie tun können, ist, ALLES zu betrachten und die Unsicherheit so weit wie möglich zu verringern. Sobald Sie dies getan haben, haben Sie, wenn Sie Glück haben, einen Zeitplan mit geringer Unsicherheit und einer Wahrscheinlichkeit von 50% auf jeder Seite.
Denken Sie jetzt darüber nach: Wenn Sie den Zeitplan einlesen, verringert sich die Wahrscheinlichkeit, dass Sie den Zeitplan unterschreiten oder genau treffen. Die Summe muss noch 100% betragen. Wohin geht diese Wahrscheinlichkeit? Antwort, es geht in die Überlaufwahrscheinlichkeit.
General Dynamics / Fort Worth Division hat dies auf die harte Tour gelernt. Sie machten ihre anfängliche Schätzung für die Entwicklung von F-16C / D und schickten sie die Nahrungskette hinauf. Jemand weiter oben hat willkürlich ein Jahr davon abgeschnitten und das an die Luftwaffe geschickt. Als direktes Ergebnis war GD / FW ein Jahr zu spät zum Flugtest und die Luftwaffe war NICHT glücklich. (Beachten Sie, dass "ein Jahr zu spät" dem überarbeiteten Zeitplan entsprach, was bedeutet, dass der ursprüngliche Zeitplan direkt auf das Ziel ausgerichtet war.)
quelle
Ich denke, dass ein gewisser Druck in einem Projekt in Ordnung ist, weil es hilft, den Fokus aufrechtzuerhalten.
Wenn der Druck jedoch nicht realistisch ist oder wenn die Kommunikation zwischen Management und technischen Mitarbeitern nicht ordnungsgemäß funktioniert, besteht das Risiko, dass die Planung des Drucks zu schlechter Qualität und / oder verspäteter Lieferung führt.
Ein erfahrener Entwickler wird wissen, dass von ihm nicht erwartet wird, dass er die perfekte Lösung produziert, sondern eine Lösung, die gut genug ist . Die Schätzung eines solchen Entwicklers spiegelt also bereits sein Verständnis dafür wider, was für ein bestimmtes Projekt gut genug ist.
Es gibt viele Faktoren, die die Definition von gut genug beeinflussen.
Wie viele Monate dauert das Projekt beispielsweise? Wenn das Projekt ein Jahr dauert, können Sie zu Beginn des Projekts ziemlich schnell einen Prototyp dieses besonders schwierigen Moduls schreiben. Anschließend haben Sie mehrere Monate Zeit, um es als Nebenaktivität für die Entwicklung anderer, routinemäßigerer Module zu testen und zu debuggen. (Sie können dieses Modul über mehrere Monate reifen lassen, bis es gut genug ist, sodass Sie nicht von Anfang an versuchen müssen, es richtig zu machen.) Ich finde diese Strategie sehr effektiv, aber Sie brauchen einen Manager, der Ihnen vertraut und Sie lässt Halten Sie ein Projekt monatelang offen. Ein anderer (misstrauischer) Manager könnte Sie dazu drängen, das Modul so schnell wie möglich fertig zu stellen (unabhängig davon, ob Sie es später reparieren müssen und ob dieser Ansatz letztendlich insgesamt viel mehr Zeit kostet).
Ein weiteres Beispiel: Das Projekt bezieht sich auf ein Produkt mit nur einer Version. Dann können Sie versuchen, es schnell zu erledigen und sich auf umfangreiche Tests verlassen, um sicherzustellen, dass das Produkt wie erwartet funktioniert (schnell und schmutzig ist gut genug ). Wenn das Produkt jedoch zwei oder drei Versionen haben soll, sollten Sie einige Zeit mit dem Entwerfen verbringen, um ein umfangreiches Umschreiben des Codes für spätere Versionen zu vermeiden. (In diesem Fall ist schnell und schmutzig nicht gut genug, da die gesamte Entwicklungszeit über die drei Releases größer ist.)
Fazit: Ich denke, dass eine schlechte Kommunikation zwischen Management und technischen Mitarbeitern und das Fehlen eines gemeinsamen Verständnisses dessen, was für das jeweilige Projekt gut genug ist, zu übermäßigem Planungsdruck führen kann, was zu schlechter Qualität / verspäteter Lieferung führt.
Es ist nie genug Zeit, um es beim ersten Mal richtig zu machen, aber es ist immer genug Zeit, um es später zu beheben.
quelle