Wie geht man mit wirklich schlechtem Quellcode um? [Duplikat]

Ich arbeite gerade an einem Projekt, bei dem ich ein Produkt geerbt habe, das jemand anderes zur Hälfte gemacht hat. Meine Aufgabe ist es, dieses spezifische Projekt abzuschließen. Mir wurde gesagt, ich hätte freie Hand darüber, was zu tun ist, also habe ich mir den Quellcode angesehen und entschieden, dass es Müll ist, und ich habe noch einmal von vorne angefangen.

Innerhalb von zwei Wochen hatte ich einen funktionierenden Prototypen, als mein Chef sah, was ich tat, und sehr enttäuscht war, weil ich das Gesamtdesign der Seite ohne zu fragen geändert hatte (wie gesagt, ich hatte da freie Hand). Aber nun, aus dieser Verlegenheit bin ich zum ursprünglichen Quellcode zurückgekehrt.

Die Sache ist, dass es wirklich schlecht und instabil ist. Es wird von vielen verschiedenen Websites ohne Quellen usw. zusammenkopiert, und wenn ich versuche, einen Fehler zu beheben, tauchen zwanzig andere auf, die von diesem einen Fehler abhängen, den ich behoben habe.

Es gibt praktisch keine Dokumentation (eine txt-Datei mit einer Liste der zu installierenden Pakete) und jetzt hat es schon ein halbes Jahr gedauert (es hätte nach maximal drei Monaten fertig sein sollen).

Ich glaube, in diesem Fall ist es nicht meine Schuld, dass ich mit diesem Quellcode nicht arbeiten kann, denn jedes Mal, wenn ich die Person, die vorher daran gearbeitet hat, befragt hat, hatte sie keine genauen Antworten und sagte mir nur, ich solle weiter googeln und herumspielen, bis Ich bekomme, was ich will. Aber ich schäme mich sehr vor meinem Chef (der ein wirklich netter Mensch ist, aber auch will, dass das Projekt abgeschlossen wird).

Was kann ich jetzt machen? Alles neu starten? (Wenn nein, ist es der Concorde-Fallacy?) Erklären Sie, warum ein so schlecht geschriebenes Produkt nicht verwendbar ist oder nicht weiterentwickelt werden kann?

Ich möchte nicht inkompetent aussehen und ich möchte nicht, dass der vorherige Mitarbeiter in einem schlechten Licht steht, da er ein wirklich netter und lustiger Mensch war. Aber ihr Code war einfach schrecklich.

Wie gehe ich damit um, am besten so, dass ich nicht gefeuert werde?

Sagen Sie einfach, dass der Quellcode in seiner jetzigen Form instabil ist und Sie glauben, dass der beste Ansatz darin besteht, neu anzufangen und das Beispiel zu verwenden, 20 andere Elemente zu beschädigen, indem Sie eines ändern.
„war sehr enttäuscht, weil ich das Gesamtdesign der Seite geändert habe“ – Ihr Chef hat sich also nur die Ausgabe des Quellcodes angesehen? Warum müssten Sie zum ursprünglichen fehlerhaften Code zurückkehren, um dieselbe Ausgabe zu erhalten?
Dies ist etwas, das jedem Entwickler irgendwann in seiner Karriere passieren wird. Könnten Sie in Ihrem Fall nicht das gleiche Front-End (HTML usw.) beibehalten und das Back-End auf etwas Unterstützbareres umgestalten?
Ich denke, Ihr Chef hat seine Erwartung ziemlich deutlich gemacht: Verwirren Sie nicht den Code, ohne zu fragen. Der Code gehört dem Unternehmen und nicht Ihnen. Auch dies mag Sie überraschen, aber Softwareentwickler auf der ganzen Welt erben routinemäßig „schlechten“ Code, aber sie werfen nicht einfach alles weg und erstellen ihn von Grund auf neu. Wenn Sie den Code „verbessern“ wollen, erarbeiten Sie mit dem Chef einen Plan und gehen Sie schrittweise vor.
Wenn Sie hier Ihren richtigen Namen verwenden, sollten Sie stattdessen einen Alias ​​verwenden. Dieser Stapel ist leicht durchsuchbar.
Die falsche doppelte Antwort wird als enger Grund verknüpft. Das hat mit der Frage wirklich nichts zu tun. Dies: softwareengineering.stackexchange.com/questions/155488/… sollte als enger Grund verlinkt werden.

Antworten (3)

Ich habe mir den Quellcode angesehen und entschieden, dass es Müll ist, und ich habe noch einmal von vorne angefangen.

Hier haben Sie einen Fehler gemacht, wie das Folgende zeigt:

Innerhalb von zwei Wochen hatte ich einen funktionierenden Prototyp, als mein Chef sah, was ich tat, und sehr enttäuscht war, weil ich das Gesamtdesign der Seite geändert hatte, ohne zu fragen.

Sie können schlechten Code nicht einfach wegwerfen und neu beginnen, wann immer Sie ihn finden – die Arbeit mit schlechtem Code ist eine notwendige Fähigkeit, um sich zu entwickeln.

Ich bin mir ziemlich sicher, dass die meisten Leute, die für längere Zeit in dieser Branche arbeiten, "schlechten" Code geerbt haben - es ist einfach eine Tatsache des Lebens! Es ist natürlich, einfach nach seinen eigenen Bedingungen anfangen zu wollen, aber es wegzuwerfen und ganz von vorne anzufangen, insbesondere ohne Genehmigung, ist nicht der richtige Weg.

Verschiedene Leute werden unterschiedliche Wege haben, mit schlechtem Code umzugehen - aber meine ist es, mir die Zeit zu nehmen, die vorhandene Codebasis gründlich zu untersuchen und sicherzustellen, dass ich zumindest verstehe, wie sie auf einer grundlegenden Ebene funktioniert (oder wie sie nicht funktioniert!). Punkt, ich dokumentiere alles, was ich gefunden habe und von dem ich denke, dass es geändert oder repariert werden muss, und erarbeite ungefähre Schätzungen, wie lange es dauern wird. (Und das ist alles, bevor Sie etwas ändern.)

Wenn Sie die Dinge wie oben beschrieben dokumentieren, können Sie dem Management ein viel konkreteres Dokument vorlegen und ein viel konstruktiveres Gespräch darüber führen, was geändert werden muss und warum.

Nicht neu starten, umgestalten. Wählen Sie ein Bit aus, das falsch aussieht, und korrigieren Sie es, ohne tatsächlich zu ändern, was es tun soll .

Wählen Sie dann ein anderes Bit und beheben Sie das. Korrigieren Sie die Dokumentation auch nach und nach.

Irgendwann wirst du mit etwas enden, das nicht perfekt ist, aber gut genug. Es wird das tun, was das Original tun sollte. Und nach all dem Refactoring sollten Sie ein gutes Verständnis dafür haben, wie alles funktioniert.

Innerhalb von zwei Wochen

Sie haben zwei Wochen gearbeitet, ohne Ihren Chef wissen zu lassen, dass Sie das ganze Projekt umschreiben. Ich bin mir sicher, wenn Sie Ihren Chef wissen ließen, was Ihre Pläne waren und warum Sie es von Anfang an getan haben, wäre es reibungsloser verlaufen.

Sie haben das Wort Design verwendet, aber war es die Ausgabe des Programms, die sich geändert hat und der Chef verärgert war? Wenn ja, würde dies gelöst, indem die Ausgabe mit dem neuen Programm abgeglichen wird? War es das Design des Codes selbst? Wenn ja, müssen Sie entweder mit Ihrem Chef sprechen und ihn davon überzeugen, warum das neue Design besser ist, oder Sie müssen zum alten Code zurückkehren und ihn so korrigieren, dass er verwendbar ist.