Einwöchiger Release-Zyklus: Wie mache ich das möglich?

12

In meinem Unternehmen (3 Jahre altes Startup der Webbranche) haben wir häufig Probleme mit dem Produktteam, das sagt: "aaaah, das ist jetzt ein Krisen-Patch!" (Nicht jeder?)

Dies hat Auswirkungen auf die Produktivität (und die Arbeitsmoral) des technischen Personals, einschließlich des Personals. Das Management hat eine Weile darüber nachgedacht, wie die Häufigkeit dieser Anfragen am selben Tag verringert werden kann, und hat die Lösung gefunden, die wöchentlich veröffentlicht wird. (Früher hatten wir alle zwei Wochen eine gemacht, was normalerweise ein paar Tage oder so verging.)

Es gibt 13 Entwickler und 6 lokale / 9 Offshore-Tester; Die Theorie besagt, dass nur 4 Entwickler (und alle Tester) an geradzahligen Releases arbeiten werden, es sei denn, es kommt eine Arbeit zustande, die wirklich spezifisches Fachwissen von einem der anderen Entwickler erfordert. Jeder Zyklus enthält zwei Tage Entwicklungsarbeit und zwei Tage QS-Arbeit (plus 1 Tag Scoping / Triage / ...).

Meine Fragen sind:

(a) Hat jemand Erfahrung mit dieser Länge des Release-Zyklus?

(b) Hat jemand davon gehört, dass dieser Release-Zyklus überhaupt versucht wurde?

(c) Wenn (a) oder (b), wie um alles in der Welt bringen Sie es zum Laufen? (Zu vermeidende Fallstricke usw. sind ebenfalls willkommen.)

(d) Wie können wir den Schaden minimieren, wenn dieser Versuch fehlschlägt?

Arkaaito
quelle
Was meinst du mit "Krisenjob"?
Wizard79
Anfragen, dass wir angewiesen werden, am selben Tag auszubessern, an dem sie eingehen. Bearbeiten Sie die Frage, um sie kurz zu verdeutlichen.
Arkaaito

Antworten:

8

Sie können sicherlich jede Woche liefern - oder sogar noch häufiger. Momentan veröffentlichen wir in der Regel alle zwei Wochen, aber es ist nicht ungewöhnlich, Funktionen bereitzustellen, wenn etwas ohne Benachrichtigung eines unserer Partner eingetroffen ist, das irrelevant wäre, wenn wir auf den nächsten Zyklus warten würden. Irgendwann in den nächsten Monaten möchte ich, dass wir zur kontinuierlichen Zustellung übergehen (Artikel werden veröffentlicht, sobald sie "fertig" sind, sobald dies praktisch ist), aber wir sind noch nicht zuversichtlich genug, dies zu tun weit.

Entscheidend ist, dass Ihre Website durch automatisierte Tests stark abgedeckt ist - sowohl Unit-Tests als auch End-to-End-Akzeptanztests / ausführbare Spezifikationen. Implizit bedeutet dies auch, dass Ihr Build vollständig automatisiert ist. Auf der Akzeptanzebene verwenden wir Robot Framework, das sich dank seines Keyword-Ansatzes hervorragend für den schnellen Aufbau einer wartbaren Testsuite eignet. Unser Vor-Ort-Tester prüft das Aussehen und Verhalten vor Ort auf Fehler, aber wir haben auch ein paar Leute in Indien, die eine gründlichere Prüfung in verschiedenen Browsern durchführen (es gibt Websites, die Ihnen dabei helfen, indem sie Screenshots für Sie machen, z. B. BrowserLab) ).

Wir automatisieren die Bereitstellung nicht vollständig (der letzte Schritt erfordert ein manuelles Eingreifen, dies ist eine bewusste Entscheidung für uns) - aber wir automatisieren alle Dinge wie die Sicherstellung, dass die richtigen Datenbankverbindungen verwendet werden, usw. mit kurzen Bereitstellungszyklen es wäre zu leicht, mit so etwas einen Fehler zu machen.

Es gibt ein ziemlich gutes aktuelles Buch über kontinuierliche Lieferung, das Sie vielleicht lesen möchten. Ich habe es überflogen, aber noch nicht im Detail durchgearbeitet. Was ich bisher gelesen habe, stimmt jedoch mit unseren Erfahrungen überein: Kontinuierliche Bereitstellung: Zuverlässige Softwareversionen durch Build-, Test- und Bereitstellungsautomatisierung

Zusammenfassend benötigt man ein hochdiszipliniertes Team, einen hohen Automatisierungsgrad und vor allem ein extrem hohes Maß an Vertrauen in diese Automatisierung. Für mich scheint es ein Fehler zu sein, zu wöchentlichen Zyklen überzugehen - Krisenpatches weisen auf andere Probleme hin, und Sie sollten daran arbeiten, diese zu beseitigen. Eine Erhöhung des Tempos könnte die Situation möglicherweise verschlimmern ...

FinnNk
quelle
7

Wenn Sie sich ständig im "Crisis Release" -Modus befinden, ist es empfehlenswerter, einen Schritt zurückzutreten und Ihren Code und Ihren Prozess neu zu bewerten. Offensichtlich gibt es dort eine Art Fehler, der sich immer wieder wiederholt.

Möglicherweise ist dies nicht in vollem Umfang im Produktionsmaßstab möglich, aber es lohnt sich wahrscheinlich, mindestens ein hochrangiges Mitglied und eine andere Untergruppe von Entwicklern und Testern dieser Bewertung zu widmen.

Der "4 auf einmal Ansatz" klingt für mich nicht nach einem klaren Gewinner. Das bedeutet ständiges Umschalten des Kontexts, was eine weitaus geringere Effizienz bedeutet.

Denken Sie daran, dass Sie, wenn Sie sich ständig beeilen, Änderungen vorzunehmen, mit größerer Wahrscheinlichkeit Fehler bei diesen Änderungen machen und dabei etwas anderes kaputt machen.

Wonko der Vernünftige
quelle
Wenn ich meine eigenen Kommentare zu @ Wonkos großartiger Antwort hinzufügen darf ... Unsere Firma hat mehrere Jahre damit verbracht, Dinge zu tun, die denen des OP ähneln. Wir sind von 6 auf 16 gewachsen. Vor ungefähr 2 Jahren haben wir uns für Agile entschieden. Wir haben eine Sr. Dev w / Agile-Erfahrung angeheuert, zweiwöchige Iterationen gewechselt, kontinuierliche Integration implementiert usw. Wir sind immer noch weit von einem Lehrbuchladen entfernt und es war von Zeit zu Zeit holprig, aber wir haben den Kontext wirklich eingeschränkt Switching, das ist ein großer Gewinn.
DevSolo
1

Das Management hat eine Weile darüber nachgedacht, wie die Häufigkeit dieser "Krisenjobs" verringert werden kann, und hat die Lösung gefunden, die wir jede Woche veröffentlichen werden.

Sieht so aus, als wären Sie Weltmeister. Warum nicht in Ihren Teamgeist investieren? Sie werden sehen, dass die Probleme von selbst verschwinden werden.

(a) + (b) IMHO, je nach Größe Ihres Teams sollten es maximal zwei Wochen sein. Eine Woche wird für Ein-Mann-Shows oder sehr kleine Teams (wie 2 oder 3) funktionieren.

(c) + (d) Unabhängig von der Größe Ihres Teams oder Projekts ist eines der ersten Dinge, die ich tue, die Automatisierung der Erstellung und Bereitstellung. Ich spare Tage, wenn nicht Wochen Arbeit, indem ich das in den frühen Tagen eines Projekts mache.

Ihre Bereitstellungen müssen mit einem Klick durchgeführt werden. Von der Quelle zur Inszenierung, dann von der Inszenierung zur Produktion. Dafür gibt es viele Tools. Von Ant / Nant bis zu superschweren Sachen wie Automated Build Studio .

Von der Bereitstellung von Dateien bis zum Datenbank-Upgrade kann alles automatisiert werden, einschließlich Backups, Benachrichtigungen, Berichterstellung usw.


quelle
Sie sind sich nicht ganz sicher, was Sie hier vorschlagen. Wollen Sie damit sagen, dass das Problemmanagement auf einen Mangel an Teamgeist abzielen sollte? Oder sagen Sie, dass ich einen Mangel an Teamgeist zeige, indem ich versuche, herauszufinden, wie ich diese Arbeit machen kann (und nervös über die Aussichten auf Erfolg bin)?
Arkaaito
Ich kann keine objektive Meinung zu Ihrer Situation abgeben, wenn ich sie in wenigen Textzeilen beschreibe. Ich habe jedoch festgestellt, dass der Mangel an Teamgeist in der Regel die Ursache für viele Probleme in der Organisation wie der Ihren ist. Unabhängig von diesem Problem, das Sie ansprechen sollten, wird die Automatisierung des Bereitstellungsprozesses Ihre Erfahrung verbessern