Es hört sich so an, als wären Ihre Probleme allgemeiner.
Das Refactoring-Problem ist sowohl ein Symptom als auch eine potenzielle Linderung eines Teils des Problems.
Der Software-Leiter und das Team teilen die Zeit des Teams ein
Aus meiner Erfahrung denke ich, dass Sie auf ein Problem stoßen, das ich "Jeder ist ein Software-Manager" nenne. Produktmanager, Projektmanager und manchmal Systemingenieure und Tester können dafür berüchtigt sein, Entwickler, die wahrscheinlich bereits einen erfahrenen Software-Manager haben, mit Mikromanagement zu beauftragen. Möglicherweise haben Sie sogar ein paar Mitglieder in Ihrem Team, die glauben, dass es ihre Aufgabe ist, das Management zu übernehmen.
Wenn Sie der Software-Manager sind, nehmen Sie Aufträge für das gewünschte Refactoring vor oder lassen Sie sich von Ihrem Team das Refactoring zur Genehmigung vorschlagen. Um keine Mikromanage durchzuführen, müssen möglicherweise Richtlinien zu Alter / Autor / Größe / Kontext des Codes überarbeitet werden, die frei überarbeitet werden können, anstatt dass eine Genehmigung erforderlich ist. Wenn ein Mitglied Ihres Teams vier große Klassen komplexer alter Codes, die er nicht geschrieben hat und die nicht zu seinem Feature gehören, massiv überarbeiten möchte, ist seine zweiwöchige Umleitung Ihr Problem. Sie müssen also die Chance haben, Nein zu sagen.
Sie können herumschleichen, aber ich denke, es ist besser, Ihre Schätzungen sorgfältig mit der Zeit für Analyse, Design, Codierung, verschiedene Testformen (zumindest Einheit und Integration), Refactoring und Risiko zu erstellen Erfahrung oder Klarheit im Zusammenhang mit der Aufgabe. Wenn Sie zu offen über die Arbeitsweise Ihres Teams waren (oder wenn Mitglieder in Ihrem Team sind), ist es möglicherweise ratsam, die Kommunikationskanäle so einzuschränken, dass sie Sie durchgehen und Ressourcen und Ergebnisse diskutieren, nicht Methoden.
Frühe Projektentscheidungen Erstellen Sie einen Teufelskreis für das Refactoring
Die Software-Wartung ist schwierig. Es ist doppelt schwer, wenn andere in der Organisation Entscheidungen auf Ihre Kosten treffen. Das ist falsch, aber es ist nicht neu. Es wurde von Barry Boehm angesprochen, einem unserer großartigen Software-Autoren, der ein Management-Modell vorschlägt, das er als Theorie W bezeichnet.
http://csse.usc.edu/csse/TECHRPTS/1989/usccse89-500/usccse89-500.pdf
Oft werden Softwareentwickler gezwungen, nach dem Theory-X-Management-Ansatz zu produzieren, der besagt, dass Mitarbeiter im Grunde genommen faul sind und nur dann Leistung erbringen, wenn sie zur Einreichung gezwungen werden. Boehm fasst sein vorgeschlagenes Modell wie folgt zusammen und kontrastiert es:
"Anstatt einen Manager als Autokraten (Theorie X), als Coach (Theorie Y) oder als Moderator (Theorie Z) zu charakterisieren, charakterisiert Theorie W die primäre Rolle eines Managers als Verhandlungsführer zwischen seinen verschiedenen Wahlkreisen und als Paketierer von Projektlösungen mit Gewinnbedingungen für alle Parteien. Darüber hinaus ist der Manager auch ein Zielsetzer, ein Monitor des Fortschritts in Richtung Ziele und ein Aktivist bei der Suche nach alltäglichen Gewinn-Verlust- oder Verlust-Verlust-Projektkonflikten, mit denen er konfrontiert wird. und sie in Win-Win-Situationen zu verwandeln. "
Schnell und dreckig ist oft nur dreckig
Boehm führt weiter aus, warum es Entwicklern im Wartungsteam so schlecht geht.
"Ein schnelles und schlampiges Produkt zu bauen, mag für den Softwareentwickler und den Kunden ein kostengünstiger, kurzfristiger" Gewinn "sein, aber es wird für den Benutzer und den Betreuer ein" Verlust "sein." Bitte beachten Sie, dass der Kunde in Böhms Modell eher ein Vertragsadministrator als ein Endbenutzer ist. Stellen Sie sich den Produktmanager in den meisten Unternehmen als Ersatz für den Kunden vor, oder vielleicht als die Person, die das Produkt für seine Featureliste kauft.
Meine Lösung wäre, das ursprüngliche Entwicklungsteam (oder zumindest den ursprünglichen Lead) erst freizugeben, wenn der Code überarbeitet wurde, um zumindest die Codierungsstandards zu erfüllen.
Für den Kunden halte ich es für vernünftig, den Produktmanager als Ersatz für den Kunden zu betrachten, und die Gruppe von Personen, die für die schnelle und schmutzige Lieferung belohnt wird, kann durchaus erweitert werden.
Refactoring ist nicht verhandelbar
Bitte geben Sie Ihre Rolle als Software-Manager nicht auf. Sie sollten die Autorität und Diskretion haben, die Zeit Ihres Teams für Prozess- und Produktverbesserungen zu nutzen. In dieser Rolle müssen Sie möglicherweise Ihre Entscheidungen aushandeln, um Ihr Team professioneller zu machen. Bezüglich des Prozesses sollten Sie jedoch nicht mit dem Marketing verhandeln, da dies meiner Erfahrung nach ein Verlustspiel ist. Verhandeln Sie mit dem Engineering Management. Es zeigt, dass Sie eine Vision haben. Der Aufbau eines professionellen Softwareteams ist eine Erweiterung ihrer Rolle und wird eher als eine Win-Win-Situation angesehen.