Ich überprüfe derzeit ein System, das von einigen Entwicklern erstellt wurde, die zuvor in meinem Job gearbeitet haben. Das System funktioniert aus Sicht des Benutzers ziemlich gut, aber wenn man sich mit der Codeüberprüfung befasst, ist es ein völliges Durcheinander. Ich bin mehr als überzeugt, dass die Art und Weise, wie die Anwendung erstellt wird, zukünftige Aktualisierungen nicht aushält, geschweige denn die Nutzung stark zunimmt.
Das Problem ist, dass ich weiß, wie schlimm es ist, aber meine Vorgesetzten nicht. Wie kann ich es meinem Manager beweisen, damit er das Problem tatsächlich erkennt und überzeugt ist, die aktuelle Codebasis auf ein Minimum zu beschränken und in naher Zukunft eine neue Entwicklungslinie für die nächste Version der Anwendung zu starten?
quelle
Antworten:
"Aber es funktioniert jetzt" ist die Standardantwort des Managements auf die berechtigten Frustrationen der Softwareentwickler. Das erste, was ich tun würde, wäre, die Dokumentation (falls vorhanden) zu kompilieren und diese zu verwenden, um Widersprüche zwischen dem Code und der Dokumentation aufzuzeigen.
Wenn Sie können, stellen Sie eine umfassende Suite von Komponententests zusammen. Führen Sie diese bei jeder Änderung aus, damit Sie Regressionen dokumentieren können, die auf die vorhandene Codebasis zurückgeführt werden können.
Wenn Sie einen Entwickler aus einer anderen Abteilung anwerben können, dessen Arbeit Sie vertrauen, erhalten Sie ein zweites Paar Augen für den Code. Ein Entwickler, der sagt, "das ist Mist", ist leichter zu verwerfen, als wenn ein leitender Entwickler, der schon eine Weile für ihn bürgt und sagt: "Nein, Jim, er hat Recht." Das ist Mist auf einem Mistknacker. '
Natürlich hängt alles von Ihrer Umgebung, der Unternehmensgröße usw. ab.
Ich empfehle immer einen Blick auf The Pragmatic Programmer zu werfen, wenn Sie es nicht gelesen haben. Es sollte nicht nur für jeden Software-Fachmann eine Lektüre erforderlich sein, sondern es enthält auch einige gute Vorschläge für den Umgang mit Management, Mitarbeitern, Benutzern usw., die Software-Engineering nicht als Handwerk betrachten.
quelle
Aus Sicht des Managements ist das System nicht in Ordnung, und Sie beschweren sich nur, weil [Sie es einfach umschreiben möchten / Sie nicht verstehen, was frühere Ingenieure getan haben / Sie möchten, dass Ihre Arbeit einfach ist]. Ein bisschen wie ein Strohmann, aber wenn jemand an der Spitze sieht, dass die Dinge gerade gut funktionieren, ist er nicht geneigt, eine Krise zu sehen, in der Sie sich befinden (ich bin sicher, dass es irgendwo eine Allegorie des Klimawandels gibt ...) .
Bis zu einem gewissen Grad haben sie einen Punkt. Das Management sieht Probleme, wenn die Veröffentlichungen weit über die ursprüngliche Schätzung hinausgehen, die Schätzungen für die auszuführende Arbeit zu hoch erscheinen, "dies ist mit unserer vorhandenen Codebasis unmöglich" und das Auftreten von Fehlern, die über die Qualitätssicherung hinausgehen. Wenn die Dinge gut laufen, ist es einfach, dir auf den Kopf zu klopfen und dir zu sagen, dass du dein Bestes geben sollst, da dies keinen Einfluss auf das Endergebnis hat.
Was zu tun ist, hängt von Ihrer Organisation und der Software selbst ab. Grundsätzlich empfehle ich jedoch, alle Komplikationen zu dokumentieren, die als Ergebnis eines schlechten Legacy-Codes auftreten. Machen Sie dem Management beim Abschätzen von Aufgaben klar, warum dies Ihrer Meinung nach so lange dauern wird, und erläutern Sie ausführlich, welche Aspekte der alten Codebasis diese zusätzlichen Kosten verursachen. Geben Sie bei der Einführung von Fehlern in den Code an, warum dieser Fehler aufgetreten ist und wie die Probleme in der alten Codebasis verursacht werden.
Ich würde vorschlagen, Ihre Bedenken gegenüber den Stakeholdern so auszudrücken, dass die Software über das ursprüngliche Design hinausgewachsen ist und nun problematisch ist, die Verbesserungen fortzusetzen.
quelle
Es stehen verschiedene Tools zur Verfügung, mit denen Code-Coverage und Code-Review durchgeführt werden können. Google-Tools, die für Ihre Technologie geeignet sind. Dies sind normalerweise branchenübliche Tools. Ich würde vorschlagen, dass Sie diese Tools verwenden, einen Bericht zur Codequalität erstellen und dem Manager vorlegen. Stellen Sie sicher, dass Ihre Kritik konstruktiv und unpolitisch ist.
quelle
Wählen Sie ein Beispiel aus, das leicht zu verstehen ist, wo das Management es für eine einfache Änderungsanforderung hält, das jedoch aufgrund des vorhandenen Designs sehr viel schwieriger ist.
Sie möchten nicht, dass sie sich mit der spezifischen Anfrage befassen, aber stellen Sie sicher, dass Sie ihnen mitteilen, dass JEDE Änderungsanforderung so sein wird. Niemand möchte mit einer Bewerbung in eine Ecke gestrichen werden. Entwickler glauben an YAGNI, aber das Management glaubt an CYA.
Die Vorschläge für Lasttests könnten ein guter Ansatz sein, sie sind jedoch möglicherweise nicht davon überzeugt, dass die zunehmenden Bedenken hinsichtlich der Nutzung einem realen Wachstumspotenzial entsprechen (das Unternehmen wird sich in einem Jahr nicht verdoppeln).
Alles ist relativ. Möglicherweise möchten sie die Ressourcen nicht in dieses Projekt stecken, wenn sie Pläne für wichtigere Projekte haben, für die Sie Ihre Zeit aufwenden können. Lass dich nicht beschriften, wenn du das große Ganze nicht siehst.
quelle
Wenn Sie davon sprechen, etwas zu beweisen, kommt all dieses wissenschaftliche Methodenmaterial ins Spiel. Wenn Sie objektive Maßstäbe für die Entscheidung über die Richtigkeit akzeptieren wollen, müssen Sie die Möglichkeit akzeptieren, dass diese lästigen Tatsachen bei der Untersuchung berücksichtigt werden Es stellt sich heraus, dass Sie nicht auf Ihrer Seite sind.
In Ihrem Fall sind meines Erachtens zwei Dinge zu beweisen.
Erstens, dass die aktuelle Codebasis "schlecht" ist. Was Sie wahrscheinlich beweisen können, ist, dass "die professionelle Meinung fast aller Entwickler, die diesen Code untersuchen, ist, dass es schlecht ist".
Zweitens, dass das Unternehmen besser dran ist, die Codebasis neu zu schreiben. Dies ist ein Problem, denn selbst wenn der erste Punkt wahr ist, ist der zweite möglicherweise nicht wahr. Sie wissen auch nicht genug, um diese Entscheidung zu treffen. Dies ist die Aufgabe des Managements, und wenn Sie möchten, dass sie Ihr professionelles Urteil über den ersten Punkt respektieren, sollten Sie ihr Urteil über den zweiten Punkt respektieren.
Sie können jedoch nicht über den zweiten Punkt entscheiden, ohne die von Ihnen angegebenen Informationen einzuholen. Sie müssen mitteilen, was Sie darüber wissen, wie sich die Probleme im Code auf das Geschäft auswirken, und was Sie darüber wissen, wie sich ein Umschreiben auf das Geschäft auswirken würde. Dies ist schwierig, da beide eine Zukunft voraussagen müssen, die eine Menge Unsicherheit birgt.
Sie können jedoch versuchen, das Problem in geschäftlicher Hinsicht darzulegen. Wie viel zusätzliche Zeit wird für Änderungen und Regressionen aufgewendet? Was würde ein Umschreiben kosten? Wie schnell werden die Kosten des aktuellen Systems mit der Zeit steigen, wenn sie nicht umgeschrieben werden? Was ist, wenn die Nutzung zunimmt? Wie groß ist die Wahrscheinlichkeit einer Katastrophe, wenn der aktuelle Code beibehalten wird? Sie können nichts davon wissen, aber Sie können besser raten als jeder andere. Geben Sie einen Bereich an oder etwas, um zu kommunizieren, wie genau Sie diese Dinge vorhersagen können.
Die meisten Entwickler mögen es nicht, lausigen Code zu pflegen. Aus diesem Grund kann es bedauerlich sein, dass Code, der aus Entwicklersicht ohne weiteres umgeschrieben werden muss, aus geschäftlicher Sicht möglicherweise nicht umgeschrieben werden kann.
Selbst wenn das Umschreiben rentabel ist, kann es beispielsweise weniger wert sein als die Opportunitätskosten für das Ausgeben des Geldes an einer anderen Stelle im Unternehmen. Oder es kann länger dauern, bis sich die fehlerhafte Codebasis ändert und mehr Regressionen vorliegen, aber nicht genug, um ein Umschreiben rentabel zu machen. Möglicherweise versuchen sie, in den nächsten Monaten aufgekauft zu werden, und das Ausgeben von Geld für ein Umschreiben wird in den Büchern erscheinen, Buggy-Software jedoch nicht.
Versuchen Sie, aus geschäftlicher Sicht darüber nachzudenken, und kochen Sie nicht die Zahlen, um das zu bekommen, was Sie wollen. Eine umfassende Neufassung ist aus geschäftlicher Sicht fast nie ein Kinderspiel. Wenn Sie etwas beweisen möchten, das nicht direkt beweisbar ist, versuchen Sie nach besten Kräften, es zu widerlegen. Wenn Sie Ihr Bestes immer wieder versuchen , einen Weg zu kommen nicht von Grund auf neu zu schreiben , aber nichts kommen Sie mit macht Sinn, vielleicht dann ist es wirklich Zeit von Grund auf neu zu schreiben. Und wenn Sie diese Anstrengungen unternehmen, zeigt dies Ihrem Management, dass Sie es ernst meinen, die Interessen des Unternehmens zu vertreten, nicht Ihre eigenen (Sie vertreten die Interessen des Unternehmens, nicht Ihre eigenen, oder?).
quelle
Ich denke, es hängt davon ab, was an der Codebasis schlecht ist. "Nicht so, wie ich Dinge tun würde" bedeutet nicht, dass es eine schlechte Codebasis ist.
Dinge, die eine schlechte Codebasis ausmachen:
Sicherheitslücken
Probleme, die den Server, die Anwendung und / oder die Daten anfällig machen. Insbesondere alles, was sensible Unternehmens-, Kunden- oder Kundendaten gefährdet. Diese sollten leicht zu dokumentieren sein.
Arbeitet kaputt
Es funktioniert nur, weil Sie die Daten massieren und die Anwendung fast ununterbrochen warten, damit sie weiterhin funktioniert. Wenn du gehen würdest und niemand das Spiel aufnimmt, würde es nicht mehr funktionieren. - Dokumentieren Sie, wie viel Zeit Sie damit verbringen. Und beachten Sie, wie viel Sie sparen könnten. Nicht selten sind diese Prozesse auch für Benutzer ineffizient, und Sie können dies möglicherweise auch dokumentieren.
Funktioniert eigentlich nicht
Es scheint zu funktionieren, aber die Ergebnisse sind falsch. Dies führt im Allgemeinen zu Problemen auf der ganzen Linie, wie nicht übereinstimmende Zahlen, hohe Fehlerrate usw.
Was ist keine schlechte Codebasis (nur nicht gut):
Beachten Sie die Vorteile der Migration auf eine neue Technologie. Versuchen Sie, einen Migrationspfad zu finden, der Teile gleichzeitig verschiebt, um das Risiko zu minimieren und das Vertrauen der Benutzer und des Managements zu stärken. Stellen Sie sicher, dass die Logik im Grunde die gleiche ist wie das Original.
Dies ist für Sie am einfachsten zu beheben, da Sie im Allgemeinen Kommentare hinzufügen und die Formatierung korrigieren können, ohne dass sich dies tatsächlich auf den Code auswirkt. Es ist jedoch kein Umschreiben erforderlich. Wenn Sie der Meinung sind, dass dies mit anderen Problemen verbunden ist, müssen Sie dies zunächst beheben, damit Sie die Funktionsfähigkeit des Codes besser einschätzen können.
quelle
Sie haben Ihre eigene Frage in gewisser Weise beantwortet.
Sie können sie davon überzeugen, Geld für das System auszugeben, indem Sie warten, bis es für den Benutzer nicht mehr richtig funktioniert. Wenn Sie der Meinung sind, dass es sich nicht skalieren lässt, warten Sie, bis dies eintritt, oder führen Sie einen Belastungstest durch, um dies zu beweisen.
Es ist dann ein einfacher Vorschlag, diese maßstabsgetreu zu reinigen, der X Stunden kostet.
quelle
I told you so
, ist das eine giftige Schuldkultur und kein Ort, an dem die OP lange arbeiten möchte. Ein guter Manager gibt keinen Vorwurf, ein guter Manager erkennt Probleme an und stellt einen Plan auf.Dies ist eine schwierige Situation, da sich aus Sicht des Benutzers jetzt alles in einem akzeptablen und stabilen Zustand befindet. Vor allem bei nicht-technischen Managern gibt es im Moment nichts, worüber man sich Sorgen machen müsste, aber das Umschreiben der Codebasis ist eine enorme Entscheidung, die nicht leichtfertig getroffen werden sollte, insbesondere nicht in Bezug auf die Meinung und die Bemühungen eines einzelnen Mannes (Sie selbst). .
Sie sind also in einer schwierigen Situation, weil Sie eine überwältigende technische Verschuldung haben (Ihrer Meinung nach haben wir keine Beispiele und müssen Ihr Wort dafür nehmen) und sich in einer schwierigen Situation befinden die Schwierigkeit zu haben, Funktionen in diesem System zu pflegen und hinzuzufügen.
Ihre Schätzungen für neue Funktionen werden hoch sein, rechtfertigen Sie diese hohen Zahlen mit Fakten und beweisen Sie, dass diese Dinge tatsächlich viel Zeit in Anspruch nehmen werden. Wenn Sie dies nicht richtig vermitteln, geht Ihr Vorgesetzter möglicherweise davon aus, dass Sie inkompetent sind, und das möchten Sie auf keinen Fall. Wenn er die hohen Schätzungen in Frage stellt, erklären Sie, warum Sie der Ansicht sind, dass die angesammelte technische Verschuldung die Möglichkeit behindert, der aktuellen Software schnell und kostengünstig Funktionen hinzuzufügen. Wenn Ihr Manager zwei Gehirnzellen hat, die aneinander reiben können, beginnt er sehr schnell zu verstehen.
Der Punkt ist, dass Sie nicht versuchen sollten, Ihren Manager zu überzeugen, sondern Ihren Manager mit geeigneten (und sorgfältig ausgewählten) Informationen steuern, damit er sich selbst davon überzeugen kann , dass ein Umschreiben ein akzeptabler Kurs ist. Sie müssen den Manager die ganze Zeit denken lassen, dass es seine / ihre Idee war.
quelle
Bestimmen Sie zunächst die akkumulierten technischen Schulden in Ihrer Codebasis. Dann werfen Sie einen Blick auf diese Frage und die Antworten , in denen erläutert wird, wie Sie das Management davon überzeugen können, die technischen Schulden zu begleichen, bevor Sie fortfahren.
quelle
Es gibt Grund , warum alle Software sieht aus wie Chaos reifen:
quelle