Meine Erfahrung mit der Softwareentwicklung zeigt, dass es sich um eine Kombination von Dingen handelt:
Nicht genügend Ressourcen für einen Job zugewiesen, kombiniert mit schlechter Planung.
Es gibt diesen Witz, dass Entwickler immer 50% zu der Zeit hinzufügen, in der sie tatsächlich etwas in einem Zitat tun werden, und dann fügen ihre PMs weitere 50% hinzu. Das ist nicht ganz falsch und auch nicht immer eine schlechte Idee. Ein Job, von dem Sie glauben, dass er 4 Stunden dauert, kann tatsächlich ein paar Tage dauern, bis Sie ihn behoben haben, sobald Sie unvorhergesehene Fehler behoben haben und sich mit Komplikationen befasst haben, die neue Anforderungen mit sich bringen (und ich liebe Agile, aber das ist eine Sache, die damit passiert). Unit-Tests, QS-Tests, Codeüberprüfung usw.
Die einzige Möglichkeit, dies zu beheben, besteht darin, im Voraus zu planen, und niemand möchte wie der langsame Entwickler in der Gruppe aussehen.
Sich auf einen Misserfolg einstellen
Als Auftragnehmer mag ich es, neue Jobs zu wechseln, und oft ist es das große, klaffende Probleme, die ich beheben musste. Es ist ganz natürlich, extra zu arbeiten, um diese krassen Probleme zu beheben, und außerdem muss ich sagen, dass es zunächst viel Spaß macht, sich mit völlig neuen Problemen zu befassen. Ich denke, das führt dazu, dass viele Leute zu Beginn eines Auftritts viel OT arbeiten, bezahlt oder auf andere Weise.
Wo diese Idee zusammenbricht, ist das manchmal, besonders wenn Sie es nicht sind Sehr klar darüber, dass Sie zusätzliche Zeit arbeiten, um Termine usw. einzuhalten, bekommen die Nicht-Programmierer in Ihrem Team - insbesondere BAs und Stakeholder - eine falsche Vorstellung davon, wie viel Sie in einer Woche produzieren können. Das macht es besonders schwierig, 3 Monate später zu reduzieren, da Sie dann diskutieren müssen, warum Ihre Produktivität gesunken ist.
Der ständige Todesmarsch
Eine Sache, von der ich auch ziemlich viel gesehen habe, ist, dass sich ein Team in einem ständigen Krisenmodus befindet. Es ist in Ordnung, ein paar 50- oder 60-Stunden-Wochen zu arbeiten, um eine bestimmte Frist einzuhalten, oder wenn es einen großen Fehler gibt, den Sie jetzt beseitigen müssen, aber ich war an Orten, an denen das Management die Dinge so zu arrangieren scheint, dass es immer eine gibt drohende Krise gleich um die Ecke aus ... Gründen. Einige Leute denken, dass dies die Produktivität der Menschen erhöht (ich bin anderer Meinung, aber das ist sowieso der Gedanke). Manchmal kommt man mit einem Minus ins Spiel, weil das vorherige Team ein Jahr damit verbracht hat, etwas zu tun, das sie sechs Monate hätte brauchen sollen, und so weiter
Es ist schwierig, eine gute Lösung für dieses Problem zu finden, da es nicht von Entwicklern, sondern vom Management stammt. Alles, was ich dazu sagen kann, ist, sicherzustellen, dass Sie in ständiger Kommunikation mit dem Management bleiben, damit diese zumindest verstehen, wie viel Stress sie auf Sie und Ihr Team ausüben.
Scope Creep
Wie bereits erwähnt, gefällt mir Agile sehr gut, und eines der Dinge, die mir am besten gefallen, ist die ständige wöchentliche oder zweiwöchentliche Kommunikation mit Menschen, die Ihre verwenden werden Produkt. Sie zeigen, was Sie hinzugefügt haben, sie sprechen mit Ihnen darüber, wie es sich von dem unterscheidet, was sie wollten, Sie nehmen diese Änderungen vor und zeigen sie beim nächsten Sprint usw. Ich denke, es vermeidet ordentlich das wirklich große Problem des Wasserfalls, das ist, dass Sie Monate damit verbringen können, an etwas zu arbeiten, nur um ein Endprodukt zu erhalten, das völlig falsch ist.
Abgesehen davon eignet sich Agile sehr gut für Leute, die bei dieser Planung / Demonstration neue Ideen einbringen Treffen, und es ist wieder einmal schwer, dieser Typ zu sein, der sagt "das steht nicht in der Dokumentation. Wir können es hinzufügen, aber es wird X Wochen zum Projekt hinzufügen". Aber jemand muss dieser Typ sein, wenn Sie vermeiden möchten, dass das Zielfernrohr möglicherweise zum Marsch des ständigen Todes führt.
So arbeiten wir einfach
Ich denke, dies ist wirklich das am wenigsten wichtige Problem, aber wenn ich ein Problem habe, werde ich mich oft hinsetzen und daran arbeiten, bis es gelöst ist. Wenn dies einige 14-Stunden-Tage erfordert, sind einige 14-Stunden-Tage erforderlich. Und wenn ich den Rest der Woche nicht früh abheben kann, habe ich vielleicht mehr als 50 Stunden Zeit.
Dies ist kein normaler Bürojob, bei dem Sie um 9 Uhr morgens einchecken Ich habe festgestellt, dass Nicht-Programmierer dies etwas weniger bemerken, wenn sie einen Entwickler an einem Mittwoch um 2 Uhr nachmittags abheben sehen (sie sehen nicht, Natürlich, dass Sie an diesem Morgen um 5 Uhr da waren, weil es ein Problem gab, das Sie einfach nicht ins Bett bringen konnten, bis Sie es gelöst haben), aber der allgemeine Punkt bleibt: Dies ist ein Job, bei dem Sie am Ende des Tages nicht sind Gemessen an den Stunden, die Sie arbeiten, aber an den Dingen, die Sie liefern.
Start-ups
Sie müssen nicht immer 70 Stunden arbeiten Woche bei einem Start-up, aber denken Sie daran, dass Sie für ein kleines Unternehmen, das gerade erst anfängt, nicht nur für einen Gehaltsscheck arbeiten, sondern auch daran, Ihr Unternehmen im Geschäft zu halten. Entschuldigung, aber manchmal kann man das einfach nicht vermeiden. Wenn Sie sich um die 40-Stunden-Marke halten möchten, suchen Sie sich ein Fortune 500-Unternehmen, für das Sie arbeiten können.