Die Arbeit an einem gescheiterten Projekt ist eines der wenigen Dinge, die die meisten Programmierer gemeinsam haben, unabhängig von der verwendeten Sprache, Branche oder Erfahrung.
Diese Projekte können großartige Lernerfahrungen und / oder seelenzerstörende Katastrophen sein und aus einer Vielzahl von Gründen auftreten:
- Oberes Management Veränderung des Herzens
- unterqualifiziertes / unterfinanziertes Team
- Hervortreten eines überlegenen Konkurrenten während des Entwicklungszyklus
- über / unter Management
Ist es möglich, frühzeitig zu erkennen, wann ein Projekt zum Scheitern verurteilt ist, wenn Sie an einigen dieser Projekte gearbeitet haben?
Für mich ist es ein großes Zeichen, dass eine harte und schnelle externe Frist mit Feature-Creep verbunden ist . Ich habe gesehen, dass Projekte, die gut geplant waren und pünktlich abliefen, fürchterlich von den Gleisen liefen, als die späten Feature-Anfragen auftauchten und zum endgültigen "Ergebnis" hinzugefügt wurden. Die Antragsteller dieser Anfragen erhielten den Spitznamen Columbo , da sie den Raum nur selten verließen, ohne nach "nur noch einer Sache" zu fragen.
Was sind die Warnsignale, auf die Sie achten, um die Alarmglocken des bevorstehenden Untergangs in Ihrem Kopf auszulösen?
quelle
Antworten:
Heroic Coding
Bis spät in die Nacht zu programmieren, lange zu arbeiten und viele Überstunden zu machen, sind ein sicheres Zeichen dafür, dass etwas schief gelaufen ist. Ich habe außerdem die Erfahrung gemacht, dass es immer schlimmer wird, wenn Sie jemanden zu einem späteren Zeitpunkt im Projekt arbeiten sehen. Er tut es vielleicht nur, um sein einziges Feature wieder im Zeitplan zu haben, und er könnte Erfolg haben. Eine solche Cowboy-Codierung ist jedoch fast immer das Ergebnis eines Planungsfehlers, das zwangsläufig bald mehr davon verursachen wird. Je früher im Projekt Sie es sehen, desto schlimmer wird es schließlich.
quelle
*
und&
mehr oder weniger willkürlich vor die Variablen in meinem C ++ - Code schob , in der Hoffnung, dass das verdammte Ding anfangen würde zu funktionieren. Ich vermisse keinen College-Teil.Wenn die Programmierer anfangen, das Argument zu gewinnen "Der Code ist schrecklich, wir müssen von vorne anfangen." bei jeder ausgereiften Anwendung.
Sie denken vielleicht, Sie können es besser aufbauen oder das Problem besser verstehen, aber Sie tun es wirklich nicht. Oh, und all diese hässlichen Flecken? Es handelt sich um Korrekturen für Probleme in der realen Welt, die Sie wahrscheinlich beim Neuschreiben erneut einführen werden.
Und eines Tages müssen Sie dem Projektmanager erklären, warum Sie nach 6 Monaten Arbeit fast 85% der Funktionen und 150% der Fehler in der Anwendung hatten, als Sie anfingen.
quelle
Ein neues Tool als Problemlöser.
Wenn Leute anfangen, ungewohnte Tools zu verwenden, macht es mir nichts aus, aber ich behalte es im Auge. Wenn sie anfangen, alle angekündigten Vorteile dieser Tools in den Zeitplan aufzunehmen, mache ich mir Sorgen. Lustige Beispiele:
Neue Technologien und Verfahren sind großartig, aber Sie können fast nie alle Vorteile nutzen.
quelle
Für mich ist das größte Problem, und eines, das Sie sofort erkennen können, wenn das Geschäft schriftliche Anforderungen als Zeitverschwendung ansieht.
Also im Grunde genommen; Keine schriftlichen Anforderungen
Es ist der Todeskuss.
quelle
Management-Verbindung trennen
Wenn die Verantwortlichen für Termine, Funktionen, Personal usw. von den Verantwortlichen für die Durchführung des Projekts getrennt werden. Dies kann dazu führen:
Wenn es so aussieht, als wäre das Management nicht an dem Projekt interessiert, kommuniziert schlecht, hört nicht auf die Kunden oder hört nicht auf das Entwicklerteam, rennt auf die Hügel zu.
quelle
Wenn wichtige Entwickler gehen und das Management sich nicht darum kümmert
Wenn wichtige Entwickler gehen und sich keiner der anderen Entwickler darum kümmert
Nummer eins steht normalerweise für Manager, die mit der Teamdynamik nicht vertraut sind (wer ist der "10x Super Star", wer sind die anständigen Programmierer und wie interagieren sie miteinander usw.).
Nummer zwei weist in der Regel auf ein starkes mangelndes Interesse der übrigen Entwickler hin.
quelle
Das erste Mal, dass jemand, normalerweise das Management, sagt: "Wir haben keine Zeit für ..."
Normalerweise vor etwas, für das wir keine Zeit haben, wie Dokumentationen oder Codeüberprüfungen (die statistisch mehr Fehler als alles andere finden und korrigieren, einschließlich aller Arten von Tests)
quelle
Lassen Sie den Kunden, das Marketing oder das Management einen Termin auswählen und versuchen Sie dann, nach einem imaginären Zeitplan zu arbeiten
quelle
Wenn das Management zu schwach ist, um das Geschäft abzulehnen.
Dies führt zu Terminen, die niemals eingehalten werden, was zu einem Mangel an Vertrauen in die IT-Abteilung führt, was dazu führt, dass Entwickler Hacks erstellen (dh auf die Datenbank zugreifen, die auf einem Computer von jemandem ausgeführt wird ... irgendwo), was zu einem Albtraum für die IT führt, wenn ' kritisches System 'muss migriert werden, was zu ...
quelle
Das erste schlechte Zeichen, an das ich denken kann, ist, wenn das Management nicht bereit ist, schlechte Nachrichten an die Kette oder den Kunden weiterzugeben, in der Hoffnung, dass sie verschwinden - dh Management durch Wunschdenken. Ich kann mir nicht vorstellen, wie oft Entwickler bewiesen haben, dass sie die Frist Wochen oder Monate vorher nicht einhalten können, und dennoch möchte niemand dem Kunden davon erzählen. Ich habe selten einen Kunden gesehen, der keine Frist verlängerte, wenn es einen triftigen Grund gab, den Bedarf rechtzeitig zu erläutern. Ich habe oft einen verärgerten Kunden gesehen, als ihm am Tag der Frist mitgeteilt wurde, dass er nicht eingehalten werden würde und dass er auch nicht am nächsten Tag eingehalten werden würde, sondern erst zwei Monate später. An dieser Stelle hinterfragen sie zu Recht Ihre Prozesse - warum haben Sie das nicht früher gewusst?
Ein weiteres sicheres Anzeichen für ein Scheitern ist, dass neue Entwickler eher dem schwierigsten und kritischsten Teil des Prozesses zugewiesen werden als denjenigen, die das aktuelle System bereits verstehen. Beobachten Sie sie dann nicht genau, um festzustellen, ob die Arbeiten tatsächlich ordnungsgemäß abgeschlossen wurden oder ob sie Fragen haben (BIG BIG RED FLAG, wenn keine Fragen vorliegen). Neue Mitarbeiter müssen überwacht werden, bis Sie wissen, dass sie über die Fähigkeiten verfügen, die sie angeblich haben. Ich kann mich immer noch daran erinnern, wie ich einen schmerzhaften Sommer damit verbracht habe, die Arbeit eines neuen Mitarbeiters (bereits nach Ablauf der Frist) zu wiederholen, der einen kritischen Teil eines Projekts erhalten und allen mitgeteilt hat, dass monatelang alles in Ordnung ist, und dann eine Woche nach Ablauf der Frist ohne Vorankündigung gekündigt habe und nichts, was er tat, war brauchbar.
Ein weiteres sicheres Anzeichen für ein Scheitern ist, dass Entwickler an Teilen arbeiten, die davon abhängen, dass andere Dinge zuerst erledigt werden und diese Dinge nicht erledigt oder gar begonnen werden. Wenn das Management die Arbeit nicht in der richtigen Reihenfolge ausführen kann, gehen Sie die Rohre runter.
Natürlich ist es eines der häufigsten Anzeichen dafür, dass die Features schlecht werden, ohne die Deadline jedes Mal zurückzuschieben. Wenn Sie meinem Teller 20 Stunden Arbeit hinzufügen, wird die Frist um 20 Stunden verschoben. Wenn nicht, wird das Projekt garantiert scheitern.
quelle
Ein sicheres Zeichen, das ich in meiner Karriere gesehen habe, ist, dass das Management anfängt, über die Einbeziehung von mehr Körpern zu sprechen, um die Zeit im Zeitplan auszugleichen. Ich habe noch nie mehr Stellen in einer Projekthilfe gesehen.
quelle
Wenn nicht-technische Manager darauf bestehen, technische Entscheidungen zu treffen, für die sie in keiner Weise qualifiziert sind. Große, große rote Flagge!
quelle
Das auffälligste Zeichen ist eine hohe Fluktuation. Wenn alle auf der Suche nach einem neuen Job sind, sollten Sie das wahrscheinlich auch tun.
Das andere offensichtliche Zeichen ist mangelnder Fortschritt. Wenn ein Jahr vergangen ist und Sie dem Ziel nicht näher zu sein scheinen, sind Sie zum Scheitern verurteilt. Dies ist insbesondere dann der Fall, wenn sich Anforderungen schneller ändern, als Sie sie implementieren können.
quelle
Gelangweilte Teammitglieder.
quelle
Du bist "zu 90% fertig", die Lieferung ist nächste Woche, aber es ist in Ordnung, denn alles, was du noch hast, ist "Testen".
quelle
(Entstanden aus Jim McCarthys Dynamics of Software Development ).
quelle
Cowboy-Codierer, große Egos und deren Akzeptanz durch das Management
quelle
Wenn der Projektplan eine einzige Iteration von Design, Entwicklung, Test und Bereitstellung vorsieht - den klassischen Wasserfall - für ein Projekt, das länger als einen Monat dauert, würde ich eine Meile laufen.
Sie müssen nicht vollständig agil sein, aber mit kurzen Entwicklungszyklen können Sie jedem (Kunden, Management und Entwicklern selbst) den Fortschritt demonstrieren und geänderte Anforderungen bewältigen, wenn dies unvermeidlich ist.
quelle
Entwickler rennen wild auf der Strecke
Dies ist vorgekommen, wenn Sie feststellen, dass andere Entwickler (oder leider Sie) eine Komponente entwickelt haben, die erheblich vom Design abweicht, und dass dies erst in den System- / UAT-Tests berücksichtigt wird. Ich spreche nicht von Käfern; Ich spreche von signifikanten Systemkomponenten, denen Features fehlen oder deren Funktionalität nicht erfragt wurde, und die UAT niemals ohne signifikante Überarbeitung bestehen werden. Dieses Problem weist auf Folgendes hin:
quelle
Wenn ein Schlüsselentwickler in einem Projekt seit Wochen keinen Code mehr eingecheckt hat und ein schwerwiegender Meilenstein bevorsteht.
Es war eine Auftragsarbeit, und die erfahreneren Entwickler und PMs beschlossen, sich zusammenzuschließen, um einen größeren Schnitt zu erzielen, sodass der andere Entwickler drei Wochen lang als Geisel für kritischen Code fungierte. Am Ende haben wir den inkompetenten PM gefeuert (der 6 Monate damit verbracht hatte, das Projekt auf einen Ruinenkurs zu setzen) und die Dinge mit dem Entwickler besprochen.
Es genügt zu sagen, dass der Rest des Projekts ein masochistischer Todesmarsch war, das Einfrieren der Spezifikationen verzögert wurde, der Kunde eine Reihe von Konzessionsmerkmalen erhielt, um die schreckliche Planung auszugleichen, mit der der PM das Projekt verlassen hatte, und die Qualität des Projekts litt rundum deswegen.
Der Premierminister hatte sogar den Mut, für CDR (Critical Design Review) nach unten zu fliegen, nur um die Besprechung mit dem Kunden zu beenden und einen zischenden Anfall zu bekommen. Als er verlangte, dass seine Reisekosten im Rahmen des Projekts bezahlt würden, wurde ihm höflich gesagt, er solle mit sich selbst verderben.
Ich kann mich leicht mit mindestens 5 der anderen hier gefundenen Antworten identifizieren, die das Projekt betrafen. Kurz gesagt, ich habe bei meinem ersten ernsthaften Programmierprojekt viele schwierige Lektionen gelernt.
quelle
Mein erstes Anzeichen war, als sie fragten, wie viele Überstunden wir jeweils für die nächsten zehn Wochen leisten würden, und den Angestellten einen Bonus für die geleistete Arbeit anboten, der auf dem Erfolg des Projekts und der Einhaltung der Fristen beruhte.
Andere wichtige Anzeichen, die ich gesehen habe: Die Definition der Anforderungen liegt über dem Zeitplan und das Enddatum wird nicht verschoben. Wir waren zurück, bevor wir überhaupt anfangen können. Sie haben sich die Zeit für das Design genommen, sodass wir zunächst kein Datenbankdesign und kein Site-Design vorgenommen haben. Wir hatten jedoch erwartet, dass dies pünktlich erfolgen würde, indem wir unter anderem Importe in Tabellen durchführen, die noch nicht entworfen und erstellt wurden.
Wenn Elemente auf dem kritischen Pfad gleichzeitig und nicht in der richtigen Reihenfolge ausgeführt werden. (Wenn ich das Tool X verwenden muss und Programmierer A gerade mit dem Erstellen beginnt, wird dies meine Aufgabe verzögern.)
Wenn Manager Code für Thanksgiving schreiben.
Wenn Sie E-Mails mit einem Datums- / Uhrzeitstempel nach 23 Uhr und vor 6 Uhr abrufen.
Wenn jede Frage zum Umgang mit Komplexität mit der gleichen Antwort beantwortet wird: "Mach dir darüber noch keine Sorgen."
Wenn sich die Anforderungen an dem Tag ändern, an dem Sie zur Qualitätssicherung gehen oder live gehen.
Wenn Sie anfangen, tägliche Besprechungen abzuhalten, die mehrere Stunden dauern, um Ihre mangelnden Fortschritte zu besprechen. Oh, das wäre, weil ich den ganzen Tag in Meetings bin. Tägliche 5-minütige Besprechung in Ordnung, tägliche Besprechung, die über eine Stunde dauert, nicht in Ordnung.
Wenn das Datenbankteam und das Anwendungsteam nicht miteinander sprechen.
Wenn der Kunde die versprochenen Informationen nicht rechtzeitig zur Verfügung stellen kann. Insbesondere, wenn es sich um Datenimportdateien handelt und Sie diese Daten in der Datenbank benötigen, um zu überprüfen, wie der Code funktioniert.
Wenn Sie erwägen, eine Ampel vor dem Büro eines Managers zu installieren, um Sie zu informieren, ob es sicher ist, sich an diesem Tag an ihn zu wenden.
quelle
Ich denke, es ist im Allgemeinen leicht, ein scheiterndes Projekt zu erkennen, wenn die Frist näher rückt. Wie Sie sagten, ist Feature-Creep in Kombination mit einer festgelegten Frist eine sichere Möglichkeit, ein Projekt zu beenden.
Der Schlüssel ist jedoch, ein scheiterndes Projekt rechtzeitig zu erkennen. Ich denke, das einzige wirkliche "Zeichen des Untergangs" in diesem Fall wäre ein völliges Fehlen der Definition von "Wann sind wir fertig?". Sofern wir dies nicht am Offset wissen, sind wir für den Ausfall IMO zum Scheitern verurteilt.
quelle
Ich war in den letzten fünf Jahren in drei Todesmärschen. Hier sind ein paar Dinge, die zu meinem Gefühl des bevorstehenden Untergangs beigetragen haben.
quelle
Für mich ist es der Moment, in dem diejenigen, die für den Funktionsumfang verantwortlich sind (auch bekannt als Manager, Produktbesitzer, Kunden ...), aufhören, sich um ihre Antworten zu kümmern oder sich hoffnungslos zu äußern. Fragen zu Funktionen stoßen auf Apathie und Entmutigung. Es ist klar, dass sie ihre Investition oder ihr Vertrauen in das Projekt verloren haben.
Dies geschah für mich, als ein Projekt, an dem ich beteiligt war, von der "oberen Führungsebene" getroffen wurde. Ich stellte Fragen, wie es funktionieren sollte, und plötzlich hatte niemand eine echte Meinung.
Etwas später wurde das Projekt abgebrochen und der ganze schöne Code, den ich geschrieben hatte, wurde verschrottet.
quelle
Paul Vick hat vor einigen Jahren einen hervorragenden Beitrag über Black-Hole-Projekte geschrieben . Ich denke, alle Ratschläge sind relevant. (Ich habe die Elemente und Zusammenfassungen der Länge nach bearbeitet.)
quelle
Ich übersetze mental: "Alles ist in Ordnung. Wir müssen uns keine Sorgen machen." zu "Wir sind alle beschissen", jedes Mal, wenn ich es von der Geschäftsleitung sagen höre. Man hört normalerweise, wie Manager es in nicht verwandten Besprechungen nebenbei einwerfen ("Oh, übrigens, alles läuft gut. Es gibt keinen Grund zur Sorge!"), Aber es ist eine noch größere rote Fahne, wenn eine Besprechung speziell dazu aufgerufen wird.
Ich habe noch keinen Manager gehört, der etwas in diese Richtung gesagt hat, und es hat sich nicht als Lüge herausgestellt.
quelle
Ein paar Punkte aus einem toten Projekt, an dem ich beteiligt war:
quelle
Wenn das Management das Projekt gleichzeitig in verschiedene Richtungen zieht und der Wagen stehen bleibt.
Ich war einmal an einem Projekt beteiligt, das von zwei Leuten geleitet wurde. Entweder haben sie nicht miteinander geredet oder jeder hat ein Ego zu lösen, aber sie haben unsere Arbeit ungefähr jede Woche in die entgegengesetzte Richtung befohlen. Es dauerte nicht lange, bis klar wurde, dass es nie ein Ergebnis geben wird. Gerne hat meine Teilnahme nur ein paar Monate gedauert.
quelle
Lesen Sie diesen kurzen Artikel: Wenn IT-Projekte richtig laufen .
Wenn eines der im Artikel genannten Elemente fehlt, sollten die Alarmglocken läuten:
Stellen Sie also sicher, dass Ihr Projekt über Folgendes verfügt, wenn nicht, sollten Sie besorgt sein:
(um den obigen Artikel zu zitieren :)
"Erstens basieren sie auf einer klaren Vision dessen, was erreicht werden soll."
"Das zweite Merkmal betrifft die Unterstützung und das Engagement der verschiedenen Beteiligten im gesamten Unternehmen, insbesondere der Geschäftsleitung."
"Drittens geht es um ein Verständnis der zu lösenden Probleme."
"Das letzte gemeinsame Merkmal ist, dass ausreichende Ressourcen und Fähigkeiten zur Verfügung gestellt wurden."
quelle
Statistisch gesehen ist der Start eines Softwareprojekts ein gutes Zeichen dafür, dass es scheitern wird, wie es eine überwältigende Mehrheit von ihnen tut ...
quelle