In letzter Zeit wurde ich zunehmend von dem geplagt, was ich als eine meiner frustrierendsten und moralisch tödlichsten Erfahrungen in diesem Beruf bezeichnen müsste: Auf einer Veröffentlichung sitzen zu müssen , die getestet, erneut getestet, inszeniert und in jeder Hinsicht und Zwecke ist bereit zu versenden / bereitzustellen .
Als Allround-Lösungsspezialist und nicht nur als Hardcore-Programmierer verstehe ich die Notwendigkeit einer angemessenen Änderungskontrolle und habe sie sogar befürwortet. Aber in letzter Zeit ist das Gleichgewicht zwischen der Deckung unserer Stützpunkte und der pünktlichen Lieferung völlig schiefgegangen, und es ist mir wenig bis gar nicht gelungen, etwas Vernünftiges wiederherzustellen.
Ich suche nach überzeugenden Argumenten, um das risikoaverse Management davon zu überzeugen, dass:
Das Entwicklerteam sollte (oder muss) in der Lage sein, seinen eigenen Veröffentlichungszeitplan festzulegen - selbstverständlich (1-3 Monate sollten konservativ genug für alle außer den größten Fortune 500-Unternehmen sein);
Software-Releases sind wichtige Meilensteine und sollten nicht rücksichtslos behandelt werden. Mit anderen Worten, unnötige Verzögerungen / Unterbrechungen sind äußerst störend und sollten nur als letzter Ausweg für ein kritisches Geschäftsproblem betrachtet werden. und
Externe (Nicht-Entwickler- / Nicht-IT-) Einheiten, die als Stakeholder einbezogen werden möchten (oder dies verlangen), sind dafür verantwortlich, mit dem Entwicklerteam zusammenzuarbeiten, um den Veröffentlichungszeitplan einzuhalten, insbesondere in der letzten Woche oder so vor dem geplanten Schiff Datum (dh Benutzer testen / Staging).
Die obigen Behauptungen stimmen für mich aus Erfahrung, aber es sieht so aus, als ob ich es jetzt beweisen muss - also bitte ich hier um etwas Fleischigeres, wenn so etwas existiert.
Kann jemand, der die Idee eines festen (oder vielleicht semi-flexiblen) Release-Zyklus an das Management "verkaufen" musste, Hinweise geben, welche Argumente / Strategien effektiv oder überzeugend sind und welche nicht? Gibt es abgesehen von den offensichtlichen Terminkonflikten und den gesunkenen Kosten irgendwelche harten Daten / Beweise, die nützlich wären, um festzustellen, dass der Versand tatsächlich wichtig ist, selbst in einem "Unternehmensumfeld"?
Alternativ bin ich offen für konstruktive Argumente, warum die Flexibilität des Zeitplans (auch über einen Zeitraum von Wochen / Monaten) wichtiger ist als der termingerechte Versand. Es ist schwer für mich, im Moment zu glauben, aber vielleicht wissen sie etwas, was ich nicht weiß.
Beachten Sie, dass wir Veröffentlichungen inszeniert haben, die bis auf die Produktion alle Phasen durchliefen. Probleme werden mit einem kommerziellen Bug-Tracker nachverfolgt, und jedes Problem - zu 100% -, das dieser Version zugewiesen wurde, wurde geschlossen. Mir ist klar, dass es schwer zu glauben ist und genau das ist der Punkt. Es macht keinen Sinn, dass eine 100% ige, vollständige, vollständig getestete und von den Stakeholdern genehmigte Veröffentlichung vom Management aus ungeklärten Gründen verzögert wird. Aber genau das ist passiert. Das ist, was passiert ist, das ist das Problem, das gelöst werden muss.
quelle
Antworten:
Joel Spolsky sagt, dass ein Software-Entwicklungsteam ein Programm zur Umwandlung von Kapital (Geld) in funktionierende Software ist. Ihrer Frage nach scheint Ihr Team darin gut zu sein: Sie erhalten eine anständige Software für einen angemessenen Betrag.
Der nächste Schritt ist natürlich die Inbetriebnahme der Software. Solange Ihr Unternehmen dies nicht tut, haben sie keine Möglichkeit, eine Rendite auf ihre Kapitalinvestition zu erzielen. Software, die einsatzbereit im Regal steht, ist eine Art Inventar im Lager: Die Kosten sind gesunken, das Kapital des Unternehmens ist bereits ausgegeben. Es gibt auch Opportunitätskosten: Ihre Gruppe hat sich für dieses Projekt entschieden und nicht für etwas anderes.
Darüber hinaus entspricht der Wert neu entwickelter Software, die im Regal steht, dem Wert einer Käseschachtel im Kühlschrank eines Restaurants: Sie verrottet langsam. Ihr Wert sinkt, weil Ihre Konkurrenten aufholen. Es lehnt auch ab, weil es schwieriger und riskanter wird, neue Software in Betrieb zu nehmen, wenn die Entwickler andere Dinge tun. Nach ein paar Jahren im Regal kann es tatsächlich wertlos sein. In diesem Fall hat Ihr Unternehmen beschlossen, das in die Entwicklung investierte Kapital zu verwerfen. Es ist möglich, dass die Eigentümer des Unternehmens - die Aktionäre - darüber unzufrieden sind.
Eines müssen Sie als Entwickler herausfinden. Ist Ihre Software wirklich bereit, am Ende des von Ihnen vorgeschlagenen Release-Zyklus bereitgestellt zu werden? Ist es bereit zu gehen, oder gibt es eine ganze Menge mehr Arbeit zu tun und Geld auszugeben, während Ihr Unternehmen es in Produktion setzt? Besitzt Ihr Unternehmen die Server und Softwarelizenzen, die Sie für die Bereitstellung Ihrer Software benötigen? Enthält Ihr Arbeitsprodukt einen Bereitstellungsplan? Wurden die Endbenutzer geschult? Wurden die Produktionsdaten konvertiert? Wenn Ihre neue Software eine Änderung der Art und Weise beinhaltet, in der Ihr Unternehmen Geschäfte tätigt, ist das Unternehmen dann bereit, diese Änderung vorzunehmen? Haben Sie ein Schema ausgearbeitet, um Dinge parallel laufen zu lassen, um sicherzustellen, dass das neue Zeug genauso gut funktioniert wie das alte?
All diese Rollout-Kosten können die Kosten für die reine Entwicklung der Software leicht in den Schatten stellen. Ein kluges Projektmanagement-Team gibt sein Bestes, um all diese Dinge zu planen, zu budgetieren und zu terminieren. Hast du diese Arbeit gemacht? Haben Sie dem Management deutlich gemacht? Wenn nicht, ist es möglich, dass sie bei Ihren Rollouts langsam vorgehen.
Es ist möglich, dass ein moderner, flexibler Software-Rollout-Zeitplan nicht mit dem von Ihrem Unternehmen erwarteten Änderungstempo übereinstimmt. Ihre Endbenutzer - Ihre Stakeholder - sind möglicherweise nicht in der Lage, Änderungen so schnell zu verarbeiten, wie Ihr Team sie produzieren kann.
Es ist auch möglich, dass Ihr Management-Team gestört ist. Hat Ihr Team etwas entwickelt, das der Rest des Unternehmens nicht will? Bedroht Ihr neues Personal Ihr Verkaufs- oder Produktionsteam? In diesem Fall könnte eine Führungskraft das Torpedieren, indem sie sagt, es sei zu riskant, um es einzuführen. Sie können nichts dagegen tun, wenn Sie nicht der CEO sind.
Sie haben nach überzeugenden Argumenten für die rechtzeitige Einführung von Software gefragt. Es gibt ein wirklich überzeugendes Argument: Return on Investment. Das Unternehmen entschied sich für eine Investition in diese Software und beschloss nun, die Investition zu verschwenden, da Ihre Software langsam im Regal verrottet.
Ein sekundäres Argument für die rechtzeitige Einführung ist die Moral Ihres Teams. Beeilen Sie sich und warten Sie nicht, um kreative Entwickler zu guter Arbeit zu motivieren. Sie können Ihr Team verlieren, wenn sie nicht die Zufriedenheit haben, ihre Arbeit in Betrieb zu nehmen.
quelle
Schauen Sie sich zuerst dieses Video an:
http://the99percent.com/videos/5822/Seth-Godin-Quieting-the-Lizard-Brain
Zusammenfassung:
Produktänderungen in den Wochen vor dem Veröffentlichungsdatum sind aus offensichtlichen Gründen sehr störend. Dies gilt unabhängig davon, ob es sich bei der Änderung um eine neue Funktion, eine Änderung des Softwareentwicklungsprozesses oder um den Versuch handelt, einen langjährigen Fehler zu beheben, der nicht im Entwicklungsplan enthalten ist.
Wenn sich jemand zu einem späteren Zeitpunkt im Entwicklungszyklus an mich wendet, frage ich ihn immer: "Was soll ich nicht erledigen, damit ich deine Sache erledigen kann?"
Wenn Sie einen Geldmotivator benötigen, dann ist dies: Studien belegen, dass die Implementierung einer Funktion oder eines Fixes umso teurer ist, je später Sie im Software-Lebenszyklus warten. Exponentiell. Es ist nicht schwer, das zu beweisen.
quelle
Sie haben die Probleme, mit denen Sie konfrontiert sind, klar beschrieben, jedoch ist mir nicht klar, warum sich die Manager so verhalten. Könntest Du das erläutern? Sie glauben zum Beispiel, dass es einsatzbereit ist. Ist jemand anderer Meinung, wenn ja, wer und warum? Sind sie Ex-Beaurokraten der Regierung?
Dies klingt sehr nach einem Problem zwischen Fähigkeit und Wunschausrichtung. Sie möchten das Problem lösen, aber nicht die Fähigkeit (Autorität). Diejenigen mit der Autorität haben nicht das Bedürfnis.
Sie müssen herausfinden, warum ihnen das Verlangen fehlt - es ist ein Marketinggrund (halten Sie es für ein weiteres Jahr, während wir die alte Version noch ein bisschen länger melken), ist es Angst / Zuversicht (Wenn es Fehler gibt, werden wir schlecht aussehen , kostet uns Geld ..., mangelnde Ressourcen (Ich kann mir die Kosten für Versand / Verpackung / PR nicht leisten), ist es kommerziell, wenn Ihre undurchsichtigen Gewinne schlecht sind und sie nicht wollen, dass Sie Geld verdienen ( Nicht so dumm, wie es sich anhört.
Ich vermute auch, dass der Respekt zwischen den Beteiligten gering ist, weshalb keine vernünftigen Diskussionen mit Erwachsenen stattfinden.
Entschuldigung - nicht die spezifische Antwort, nach der Sie gefragt haben, hoffentlich ein paar Dinge, über die Sie nachdenken sollten.
quelle
Als Erstes sollten Sie sicherstellen, dass Ihre Veröffentlichungen kein hohes Risiko aufweisen .
Im Idealfall sollten Ihre Änderungsanforderungen einen Abschnitt mit der Bezeichnung " Risikominderung" enthalten, der Anweisungen zum Zurücksetzen auf eine frühere Version enthält, wenn Probleme auftreten. In Bezug auf das Risiko kann keine Menge vorheriger Tests eine einfache Option zum Zurücksetzen der Änderung ersetzen.
Wenn viele / die meisten Ihrer Releases in diese Kategorie fallen, sollten Sie Ihre Architektur überdenken.
Das Risiko, NICHT freizugeben, ist auffällig, wenn Sie möchten, dass der Zeitplan des Entwicklerteams ernst genommen wird.
Wenn Ihre Releases Korrekturen für Produktions- / Supportprobleme und Ausfälle liefern, ist dies relativ einfach, indem Sie diese nur auflisten und darauf hinweisen, dass die Produktion Gefahr läuft, diese zu wiederholen, es sei denn, es wird ein Upgrade durchgeführt.
Eine wirklich effektive Maßnahme, die dem Entwicklerteam zur Verfügung steht, um Release-Ausrutscher zu bekämpfen und sicherzustellen, dass das Risiko einer Nichtveröffentlichung mit der Zeit zunimmt . Dies kann mit internen Releases erreicht werden, die nach einem festen Zeitplan ausgeführt werden und eine "kumulative" Liste von Lösungen für Produktionsprobleme bieten.
XX
, nicht nur darüber im Klaren sein, dass sie das Risiko haben, dassN
Produktionsprobleme ungelöst bleiben, sondern auch, dass sie eine Woche (oder einen Monat) später die FreigabeXX+1
in ihrer Genehmigungswarteschlange haben und diese blockieren Das Risiko vonN+M
Produktionsproblemen bleibt ungelöst - und das wird auch beiXX+2
und weiteren "internen" Releases der Fall sein, die vom Entwicklerteam bereitgestellt werden.Durch die oben beschriebene Vorgehensweise wird die Verbindung zwischen Anwendungsaktualisierungen und Produktionsproblemen im Wesentlichen enger und eindeutiger.
Aus diesem Grund können Sie eine stärkere Einbeziehung in die Eskalation von Produktionsproblemen erwarten . Sie können diese als Gelegenheit nutzen, um Ihre Vision von strengeren geplanten Updates voranzutreiben. Sie können sogar selbst einige Eskalationen auslösen, um die Umsetzung Ihres gewünschten Ansatzes zu beschleunigen.
XX
oder eine neuere Version ) in Betracht zu ziehen . Die derzeit in Ihrer Umgebung (XX-2
) bereitgestellte Version ist stark veraltet - zwei Hauptversionen hinter der aktuellen Codebasis. Daher werden Details für solche einfachen Fehler angegeben Tief verborgen in Protokollen und nicht entzifferbarem Müll wird die Anwendung den Clients gemeldet, anstatt eindeutige Fehlerbeschreibungen zu hinterlassen. Dies führt dazu, dass Benutzer und Support Zeit damit verschwenden, wirklich einfache Probleme zu untersuchen. "Oben ist ein Kommentar, den ich vor einiger Zeit im Support Issue Tracker für das Ticket hinzugefügt habe im Zusammenhang mit bestimmten Produktionsvorfall. Kurz danach wandten sich die "Stakeholder" an das Entwicklerteam und fragten, wie sie den Überblick über unsere Releases behalten und wie sie bei der Bereitstellung in ihrer Umgebung helfen können. Oh und sie haben auch schnell von upgegradet
XX-2
Version auch. :)Wenn die Produktion eskaliert, sollten Sie besser darauf vorbereitet sein, Ihre Vision schnell und klar darzustellen.
Eine Sache, die Sie nützlich finden, ist, herauszufinden, wer für einen bestimmten Release-Fehler verantwortlich ist. Grundsätzlich müssen Sie in der Lage sein, Fragen wie "Wer ist für die Tatsache verantwortlich, dass die geplante Veröffentlichung nicht stattgefunden hat?" Schnell und klar zu beantworten. Wenn Sie nicht bereit sind, wählen sie möglicherweise den Weg des geringsten Widerstands und geben Ihnen die Schuld. In Kommentaren zu einer anderen Antwort heißt es: "Sie könnten sich in heißes Wasser stürzen, vor dem Ihr Management Sie zu schützen versucht."
Nicht zuletzt,
Es wird einige Zeit dauern
(Das wissen Sie wahrscheinlich schon, aber es scheint sich zu lohnen, es ausdrücklich zu erwähnen.)
Was Sie suchen, kann als Einstellungsänderung beschrieben werden, von "Es ist riskant , es freizugeben " zu "Es ist riskant, es NICHT freizugeben ". Einstellungsänderungen treten selten über Nacht auf. Möglicherweise ist Geduld erforderlich, um die Schicht abzuschließen.
quelle
Über Ihrer Frage hängt ein großes Fragezeichen, und aus diesem Grund möchte Ihr Unternehmen die Software nicht freigeben. Es ist nicht immer nur ein einfacher Fall von Risikoaversion. Oft liegen andere Ursachen zugrunde, die von den hohen Managementhöhen nicht oft weitergegeben werden. Meine Frage an Sie lautet also: "Haben Sie sich mit Ihrem Chef zusammengesetzt und ihn gefragt, warum die Produktfreigabe aufgeschoben wird?".
Es gibt einen großen Unterschied zwischen dem Managen von Risiken und dem Vermeiden von Risiken. Es kann rechtliche oder Marketinggründe für die Verzögerung einer Produktfreigabe geben. Es könnte sich um Vertrauensprobleme zwischen dem Management und dem Entwicklungsteam handeln. Das Produkt entspricht möglicherweise nicht den Anforderungen des Kunden, auch wenn es genau den Anforderungen entspricht, die der Kunde vor Monaten gestellt hat. Es kann sich sogar um jemanden in der Geschäftsleitung handeln, der ernsthaft versucht, die Schuld für die Verzögerung an eine andere Stelle zu verlagern, oder sogar um eine Verzögerung durch einen Dritten, die erforderlich ist, um etwas zu erledigen, bevor Ihr Produkt ausgeliefert wird. Ich könnte mir Dutzende von Szenarien einfallen lassen. Sehr oft geht der Entwickler von einer Risikoaversion aus, ohne die andere Seite der Gleichung zu verstehen, die nicht offengelegt wurde. Auf der anderen Seite kann es einfach Selbstzufriedenheit sein, Konflikt zwischen Personen innerhalb eines Unternehmens,
In jedem Fall ist es wichtig, mehr Informationen über die Gründe für Verzögerungen bei der Produktfreigabe zu haben und diese Informationen zu verwenden, um so schnell wie möglich einen Fall für die Freigabe Ihres Produkts zu erstellen. Ja, es kann sehr frustrierend sein, aber es gibt andere Möglichkeiten, mit diesen Situationen umzugehen, ohne die Konfrontation mit Ihren Vorgesetzten oder einen Burnout zu riskieren. In ähnlichen Situationen habe ich selbst Informationen gesammelt, meine Fortschritte dokumentiert und im schlimmsten Fall einfach das Projekt zurückgestellt und mich mit etwas anderem befasst. In der Regel war es das Ergebnis eines soliden Geschäftsmodells, das auf den Informationen beruhte, die ich als Feedback zu den von mir aufgeworfenen Fragen erhalten hatte, um ein Projekt wieder auf den Weg zur Veröffentlichung zu bringen. Wenn ich die Geschäftsleitung nicht davon überzeugen konnte, dass das Produkt versandt werden sollte, Ich habe die Zurückhaltung bei der Auslieferung als bloß abgeschlossenes Projekt dokumentiert und erwarte die Freigabe durch das Management. Ich stelle dann sicher, dass mein Vorgesetzter mein Dokument als vom Management akzeptiert und verstanden signiert, damit mein eigener Hintern abgedeckt wird, falls sie versuchen sollten, mich später für eine Nichtfreigabe zu beschuldigen.
Sie müssen immer Ihre Ichs und die T-Shirts ankreuzen, um zu vermeiden, dass Sie später für Verzögerungen beim Versand verantwortlich gemacht werden (egal wie unfair), und es ist auch wichtig, dass Sie nicht zu emotional an solche Probleme gebunden werden, es sei denn, Sie mögen die Idee eines gut verdienten Geschwürs. Wenn Sie Ihre eigene Situation mit einer gewissen professionellen Distanz betrachten, können Sie eine Lösung finden, weil Sie sich sozusagen auf eine größere Distanz zum Problem gebracht haben. Wenn Sie nicht in der Lage sind, Ihren Fall zu vertreten, müssen Sie ihn möglicherweise eine Weile warten lassen. Um Ihren Fall jedoch in den Vordergrund zu stellen, müssen Sie professionell distanziert wirken und Argumente haben, die auf Informationen beruhen, mit denen ein enger Zusammenhang besteht Ihr Unternehmen und sein Innenleben.
Ich habe gerade darüber nachgedacht, was für Sie hilfreich sein könnte, indem Sie vielleicht die Lean-Software-Entwicklung lesen und prüfen , ob darin etwas Wertvolles enthalten ist, das möglicherweise mit der Situation Ihres Unternehmens zusammenhängt, insbesondere in den ersten Kapiteln. Ich denke, es war Kapitel 4, in dem das Problem der schnellstmöglichen Lieferung erörtert wird und das sich auf Verzögerungskosten bezieht.
quelle
Ich würde sagen, der einfachste / effektivste Weg, eine Veröffentlichung zu verkaufen, besteht darin, die Tools für eine Weile herunterzufahren, wenn sie einsatzbereit sind. Mach etwas anderes, starte ein neues Projekt, arbeite an Fehlern für das bestehende Projekt. Tun Sie nichts mehr mit diesem, bis es aus der Tür geschickt wurde - warum tun Sie es dann überhaupt nicht, wenn es nicht geht, wenn es fertig ist?
aber in der realen Welt ist das eigentliche Release das Problem eines anderen. Sie sollten es an ihn senden und es dann als Release behandeln. Sobald es aus Ihrer Tür ist, wird es verschickt. Wenn sie nur drauf sitzen, ist es nicht dein Problem (in der Tat ist es großartig, es werden keine Bugs gemeldet! W00t! Boni für eine fehlerfreie Veröffentlichung;))
Sie benötigen also ohnehin ein Änderungskontrollsystem und einen Freigabemanager. Dann ist alles ganz einfach (mit der Ausnahme, dass Sie die Änderungskontrolle verwalten müssen, sodass Versionskontrolle und Bereitstellungsbuilds sehr wichtig sind. Es erfordert Organisation, aber wenn Sie organisiert sind, ist es einfach).
quelle
Ich kann mir nicht vorstellen, dass es eine "gute Sache" ist, das Entwicklerteam so zu machen, wie Sie es beschreiben. Es könnte das eigentliche Problem verschleiern, aber es sei denn, das Entwicklerteam ist in der richtigen Position, um die Inputs aus Vertrieb und Marketing abzuwägen usw. usw. Sie riskieren die Freigabe aus den falschen (und möglicherweise schlechten) Gründen.
Wenn ich Ihr Problem verstehe, haben Sie das Projekt abgeschlossen und ein Ergebnis erhalten, das Sie niemandem außerhalb Ihres Unternehmens zeigen können. (Ich hoffe, das fasst es zusammen, ich habe den ganzen Thread gelesen und ich habe Probleme, meinen Finger darauf zu legen.)
Hast du es versucht:
Um Ihre andere Frage zu beantworten: "Warum sollte das Management auf einer Veröffentlichung sitzen?" Unternehmen tun dies die ganze Zeit in Nicht-SW-Bereichen und ich denke nicht, dass es beispiellos ist. Zum Beispiel haben Sie eine neue Version, die einsatzbereit ist, alle getestet und fertig. Aber die alte Version wurde von der Konkurrenz noch nicht verdrängt. Sobald der Wettbewerb ein konkurrierendes Produkt veröffentlicht, gibt das Management die im Regal wartende Version frei und stört den Markt, setzt den Wettbewerb zurück und erhält den Umsatz und den Ruf als Marktführer. Zu frühes Loslassen gibt Wettbewerbern die Hand, die vielleicht eine bessere Vorstellung von Ihrer Roadmap haben und versuchen, Sie bis zum Ende zu schlagen.
Nach alledem ist Hanlons Rasiermesser wahrscheinlich die richtige Antwort :-)
quelle
Gehen Sie weg von dieser Firma, sie verstehen keine Software. Aber im Ernst, Software ist es, was das System zum Funktionieren bringt. Stellen Sie sich vor, wenn Sie Autos bauen, sind Autofabriken langsam? Warten sie auf Auto-Releases? Sind sie inkrementell und bürokratisch? Nein, sie versuchen, die Dinge so schnell und sauber wie möglich zu machen. Sie haben ein Managementproblem und sollten es als einen Managementkonflikt behandeln. Versuchen Sie, sie in ihre Begriffe zu fassen. Fragen Sie, was das Risiko für sie bedeutet, und versuchen Sie, es zu minimieren. Die Gefühle Ihrer Entwickler sind ebenfalls wichtig, da sie mit den Entscheidungen, die durch Ihre Intervention getroffen werden, fertig werden müssen. Werden sie glücklich sein, alle Nachtschwärmer pünktlich zum Versand zu bringen? Was wären die Preise / Strafen? Jetzt werde ich Ihnen einen praktischen Ansatz für dieses Problem geben, ein bisschen extrem, aber um ein Audit bitten.
quelle