Sollte ich meinen Job kündigen, wenn ich eine schlechte Codebasis mit nicht so guter Unterstützung von den ursprünglichen Entwicklern übernehme?

Ich habe vor kurzem angefangen, als Entwickler für ein Start-up zu arbeiten. Ich habe etwas mehr als zwei Jahre Programmiererfahrung (Hochschule + Praktika) und bei diesem neuen Job baten sie mich, einige Funktionserweiterungen vorzunehmen, und die gesamte Codebasis ist ein Durcheinander. Ich weise im Zusammenhang mit meiner Frage auf einige technische Schwierigkeiten hin, denen ich gegenüberstehe. Jeder vernünftige Entwickler muss sich darauf einigen können, dass einige davon lästig sind.

  • 90 % der Funktionen befinden sich in eigenen "try...außer Exception"-Blöcken (macht das Debuggen zu einer PITA)
  • Keine Kommentare oder Docstrings (auch keine Feature-Dokumentationen; nur Mundpropaganda beim sogenannten "Code Walkthrough")
  • Nicht idiomatischer Code
  • Mit Zeichenfolgenverkettung formatierte Abfrage (nicht sicher, wie gut die Eingaben bereinigt sind)
  • Ein einziges Wörterbuch, das als Ein- und Ausgabe für eine Vielzahl von Funktionen verwendet wird und überall mutiert.

Wenn neue Funktionen oder Fehler zugewiesen werden, finde ich es extrem schwierig, dies zu debuggen, da praktisch alle Fehler unterdrückt und als Protokolle gedruckt werden; Infolgedessen verbringe ich am Ende mehr Zeit, um das zu liefern, was von mir erwartet wird. Das Programm bricht nie ab. Alle Ausnahmen werden erfasst und als Protokolle stummgeschaltet. Es gibt also keine Möglichkeit, herauszufinden, wo ein Fehler auftritt, ohne unordentlich zu werden (mit "Traceback" -Aufrufen usw.), was nicht wirklich erforderlich ist, wenn die Ausnahmen vernünftig behandelt wurden.

Was ich probiert habe

Ich habe natürlich versucht, intern um Hilfe zu bitten. Die Antwort ist da, aber meistens ist es so etwas wie "Debuggen und den Unterschied finden", aber das Debuggen ist nicht wirklich hilfreich, wie ich bereits erklärt habe.

Ich habe mit meinem Manager gesprochen, und seine Antwort war, dass ich diese Codebasis nach einiger Zeit umschreiben kann, aber ich liefere, was erwartet wird, bevor ich mit dem Umschreiben beginne, was wiederum auf den Punkt kommt: Ich kann diesen Spaghetti-Code nicht herausfinden. Wenn ich könnte, müsste ich nicht einmal umschreiben.

Warum ist das ein Problem?

Ich bin nicht in der Lage, Dinge rechtzeitig fertigzustellen, also leiste ich nicht so viel, wie ich möchte. Dies wird mein Wachstum beeinträchtigen und ich werde möglicherweise gefeuert, weil ich nicht pünktlich bin. Aus diesem Grund fange ich an, meinen Job zu hassen, nicht in der Lage zu sein, Code zu schreiben, weil ich keine Zeit damit verbringen möchte, ein Durcheinander zu debuggen.

Andere Informationen

Ich bin in keiner Weise ein erfahrener Entwickler. Ich verbringe einen Teil meiner Zeit damit, Fragen zu Stack Overflow zu beantworten (auch zu stellen), und ich habe eine ziemlich gute Vorstellung davon, wie guter und schlechter Code aussieht. Ich habe keine Erfahrung als professioneller Entwickler außer ein paar Monaten (Praktika beiseite), daher weiß ich nicht, ob dies ein normaler Vorfall ist.

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Aktualisieren

Nachdem ich die Antworten berücksichtigt habe, die ich hier erhalten habe, habe ich mit den Leuten gesprochen, die dies geschrieben haben, und ihre neueste Antwort ist (nicht wörtlich)

"Änderung basierend auf aktuellen Anforderungen. Sie sind jetzt der Besitzer dieser Codebasis. Tun Sie, was Sie wollen, damit es funktioniert."

Das fühlt sich ziemlich so an, als wären sie erleichtert, dass es nicht mehr ihr (Problem) ist.

Mein Manager hat zugestimmt, mich den Code umschreiben zu lassen, aber erst nachdem ich meinen aktuellen Rückstand abgeschlossen habe, was meiner Meinung nach eine vernünftige Bitte von seiner Seite ist.

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .

Antworten (12)

Viel Legacy - Code nervt. Auch wenn der Code damals nach Best Practices entwickelt wurde, sind Best Practices vor zehn Jahren sehr oft ganz anders als Best Practices heute. Aber mehr als das, da Entwickler kommen und gehen, werden nicht alle Entwickler an der ursprünglichen Vision festhalten, die der ursprüngliche Entwickler hatte. Selbst wenn sie in der Lage sind, diese Vision zu verstehen, möchten sie sie möglicherweise nicht weiter vorantreiben. Einige Entwickler mögen sich darum kümmern, aber andere Entwickler können einfach schnell hässliche Hacks implementieren, um die Arbeit zu erledigen. Nach ein paar Jahren davon und Sie können eine wirklich hässliche Codebasis haben.

Mein Rat wäre, einfach zu versuchen, dabei zu bleiben. Wenn Sie jedes Mal vor einem Job davonlaufen, wenn Sie auf Mistcode stoßen, werden Sie vor jedem Job unter der Sonne davonlaufen. Nun, vielleicht mit Ausnahme von Green-Field-Startups. Wenn Sie sich jetzt daran gewöhnen, mit Mistcode zu arbeiten, können Ihre Erfahrungen Geschichten sein, die Sie später in Interviews teilen!

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .

Es gibt eine Reihe von Arten von Programmiererjobs. Dies ist einer von ihnen.

"Legacy-Code unterstützen" ist ein großer Teil der Branche, mit unterschiedlichem Grad an Hässlichkeit. Wenn Sie entscheiden, dass Sie nicht damit einverstanden sind, in diesem Teil des Bereichs zu arbeiten, dann ja, können Sie gehen und sich einen anderen Job suchen, aber Sie sollten sich darüber im Klaren sein, dass Sie einen Großteil des möglichen Karriereraums ausschneiden. Wenn Sie mit Legacy-Code im Allgemeinen einverstanden sind, aber denken, dass dieser spezielle Legacy-Code einzigartig hässlich ist, und Sie sich nicht speziell mit diesem Zeug befassen möchten? Nun, du könntest recht haben. Darauf würde ich aber nicht unbedingt wetten.

Es hört sich so an, als müssten Sie im Laufe der Zeit am Refactoring arbeiten. Ihr Chef wird Ihnen wahrscheinlich in absehbarer Zeit keine Gelegenheit bieten, größere Refactoring-Vorgänge durchzuführen, aber er wird Sie nicht davon abhalten, den Code, den Sie berühren, zu verbessern. Sobald Sie herausgefunden haben, was ein Codeabschnitt tut, kommentieren Sie ihn. Wenn Sie einen Teil des Codes berühren und diese Wrapper "alle Fehler schlucken" sehen, überlegen Sie, wo Sie es sich leisten können, sie informativer zu gestalten. Selbst wenn Sie sie weiterhin in den Protokollen ausführen, können Sie den gesamten Stack-Trace dort ablegen. An diesem Punkt sollte es ohnehin relativ einfach sein, die benötigten Informationen zu erhalten. Wenn Sie die Dinge besser verstehen, arbeiten Sie daran, sich zu verbessern, wo Sie können.

Ist das in Bezug auf „Dinge pünktlich fertigstellen“ nur Ihre Wahrnehmung oder bekommen Sie irgendeine Art von Feedback von Ihren Chefs, dass sie Ihre Arbeit für inakzeptabel halten? Es stimmt, dass es länger dauert, mit Legacy-Code mit viel Code-Schuld zu arbeiten, besonders wenn Sie gerade erst anfangen. Es ist möglich, dass sie dies berücksichtigen und Sie nicht. Dies wird wahrscheinlich besser, wenn Sie ein tieferes Verständnis dafür bekommen, wie das System funktioniert (und es schaffen, einiges davon umzugestalten). So weit wie "Ihr Wachstum beeinflussen"? Nun... ja, aber nicht so, wie du denkst. Es hat keinen Einfluss darauf, ob Sie wachsen oder wie viel Sie wachsen. Es wird beeinflussen , wie Sie wachsen. Wie ich bereits sagte, ist die Verwaltung von Legacy-Code ein großer Teil der Branche. Zu lernen, wie man es gut macht, ist kein verschwendetes Wachstum.

Danke für die Antwort Ben, ich habe nicht darüber nachgedacht, dass mein Chef die von Ihnen erwähnten Faktoren tatsächlich berücksichtigen könnte. Ich werde versuchen, mit ihm darüber zu sprechen
Schieben Sie auch Fristen hinaus, verwalten Sie und bauen Sie informelle Beziehungen auf - wenn Sie bei bestimmten Dingen Unterstützung von den früheren Entwicklern benötigen, lassen Sie es Ihren Manager wissen oder versuchen Sie, sich mit den alten Entwicklern anzufreunden. Gehen Sie nicht so an, als wären sie inkompetent, sondern akzeptieren Sie, dass die Codebasis, die Sie geerbt haben, im Laufe der Zeit aufgebaut wurde, mit Schichten von Entscheidungen und Kompromissen auf dem Weg. Versuchen Sie zu verstehen, warum dieses ruckelig aussehende Skript so geschrieben wurde. Es könnte einen guten Grund geben, und je mehr Sie davon aufnehmen können, desto besser.
Nach meiner Erfahrung von ~5 Jahren Arbeit ist das Hinzufügen einer einfachen Funktion nicht so trivial, wie Sie dachten, als Sie lernten. Sie können die Lösung schnell finden, das Endziel in Ihrem Kopf sehen, aber oft nehmen Implementierung, Tests und Bereitstellung 85 % Ihrer Zeit in Anspruch. (Gutes) Management weiß das, je mehr Sie an einem Produkt arbeiten, desto weniger Implementierung (und hoffentlich auch Testen, wenn Sie das Testframework aufbauen) und wie Ben sagtLearning how to do it well isn't wasted growth
Das Hinzufügen guter Kommentare kann der Codebasis viel Wert hinzufügen, ohne tatsächlich etwas zu ändern (wo Sie erneut testen müssen usw.). Heutzutage sind Markdown-Dateien neben dem Code ein vernünftiger Kompromiss, wenn Sie die Kommentare nicht in den Code selbst einfügen können.
Legacy-Code kann so einfach sein wie "Code von jemand anderem". Menschen denken anders und ihr Code spiegelt dies wider.

Legacy-Code macht den größten Teil der Entwicklung auf dem Markt aus. Sie können selten neue Projekte mit modernsten Tools und Praktiken von Grund auf neu entwickeln.

Legacy-Code ist an sich nicht schlecht, aber es kommt immer noch so häufig vor, dass Sie lernen müssen, wie man in einer solchen Umgebung arbeitet.

Ich sage nicht, dass Sie es aufsaugen und dabei bleiben müssen, aber dass Sie Ihrem Arbeitsplatz eine Chance lassen müssen. Sie müssen lernen, wie man mit Legacy-Code umgeht (Sie können zum Beispiel „Effektives Arbeiten mit Legacy-Code“ lesen) und Sie müssen Ihren Kollegen und Vorgesetzten über die Kosten von schlechtem Code aufklären.

Wenn Sie Menschen bessere Praktiken beibringen und bewährte Praktiken und Tools an Ihrem Arbeitsplatz einführen können, gewinnen Sie wertvolle berufliche Fähigkeiten und Glaubwürdigkeit. Wenn sich die Situation jedoch nicht bessert und Sie darunter leiden, suchen Sie sich auf jeden Fall einen anderen Arbeitsplatz.

Ich denke, ich werde es noch ein paar Monate versuchen und versuchen, ihnen die Kosten verständlich zu machen, auch danke für die Buchempfehlung :)
Eins außer den "Kosten von schlechtem Code". Bei Legacy-Code ist es normalerweise egal, wie viele Nachteile Sie sich einfallen lassen, die Pro-Spalte lautet immer "macht den Job gut genug". Beim Upgraden wird die Gewissheit, dass es seine Aufgabe erfüllt, gegen das Versprechen eingetauscht, dass es dies weiterhin tun wird. Den meisten Managern ist es egal, ob es Macken hat, ob es ruckelig und ineffizient ist, solange es seinen Job macht. Ich denke, praktisch geht es weniger um die Kosten von schlechtem Code als vielmehr darum, die Vorteile von Upgrades zu quantifizieren, und dass die Glaubwürdigkeit, die Sie brauchen, darin besteht, dass Sie sie pünktlich und im Rahmen des Budgets liefern können.
Dies ist nur eine Meinung, aber meiner Meinung nach, wenn ein Legacy-System einen Vollzeitmitarbeiter benötigt, um Probleme zu beheben, macht es die Arbeit nicht gut genug.

Ich würde weiter arbeiten. Geben Sie Ihr Bestes mit der Codebasis, so wie sie ist, Sie werden bald den Dreh raus haben, wie sie zusammenhängt.

Bereinigen Sie den Code, während Sie an Elementen arbeiten, so gut wie möglich in den Bereichen, in denen Sie arbeiten. Nach einer Weile sollten Sie in der Lage sein, etwas Zeit für umfassendere Arbeiten freizugeben.

Aber für den Moment, hochfahren und nach Bedarf anpassen. Betrachten Sie dies als eine Lernerfahrung.

Auch wenn Sie gegangen sind und einen anderen Job gefunden haben, ist die Wahrscheinlichkeit, dass Sie in einem Team landen, das eine fabelhaft organisierte Codebasis verwendet, minimal. Perfekter Code ist ein Ideal, aber es wird immer einen Kompromiss zwischen Perfektion und "erledigen" geben. Die meiste Zeit gewinnt "Get it done".

Ihr letzter Absatz ist der anderen Antwort sehr ähnlich, und der Teil "Get it done" war etwas, das ich mir immer wieder sagte, als ich mir den Code ansah, danke für die Antwort!

Wie andere sagten, gibt es jede Menge Mistcode da draußen, und viele von uns werden ihn am Ende warten.

(Es ist auch fair zu sagen, dass wir diejenigen sind, die ihn erstellen, unter Druck oder am Anfang unserer Karriere oder weil wir es nicht besser wissen. Nehmen Sie es nicht persönlich, wenn andere Ihnen solchen Code aufzwingen! )

Ihre Entscheidungen zu Beginn Ihrer Karriere sind jedoch von Bedeutung. Viel . Wenn Sie Ihre ersten paar Jobs mit der Wartung einiger Spaghetti-Code-Apps verbringen, wird es schwierig sein, Ihre feineren technischen Fähigkeiten zu entwickeln. Es wird schwierig sein, gutes Design zu lernen. Und schlechte Designs zu erkennen ist nicht dasselbe wie zu wissen, wie man gute entwirft.

Meiner Erfahrung nach wird dies Ihre späteren Karrierechancen verkümmern. Ich interviewe viele Software-Ingenieure und habe aus genau diesem Grund Bewertungen abgelehnt. Sie sind nett, freundlich und kennen grundlegende Programmierkenntnisse, aber nachdem sie jahrelang in einem schlechten Umfeld gearbeitet haben, scheinen sie nicht weiter zu sehen. Sie wissen nicht, wie man Probleme gut löst. Nachdem ihnen oft gesagt wurde, dass sich die Dinge nicht ändern können (oder sich ändern, aber langsam), verloren sie ihren Funken. Ihre Go-to-Engineering-Lösungen werden durch ihre (schlechten) Erfahrungen gefärbt sein.

Wenn einem frischgebackenen Absolventen feinere Fähigkeiten fehlen, sucht ein Personalchef nach der Fähigkeit zu lernen. Wenn jemandem mit 5 oder 10 Jahren Erfahrung diese Fähigkeiten fehlen, ist das ein großes Warnsignal. Warum haben sie es noch nicht gelernt? Werden sie jemals Sind sie trainierbar?

Wenn Sie zu Beginn Ihrer Karriere wählerisch in Bezug auf Ihre Jobs sind, werden Sie Ihre Auswahl einschränken. Nicht wählerisch zu sein, schränkt später auch Ihre Auswahl (und Ihr Gehalt) ein.

Worauf man bei diesem – oder anderen – Jobs achten sollte. Es kommt nicht so sehr auf die Technik an, sondern auf die Mentoren. Finden Sie einen Ort, an dem Sie wirklich von jemandem lernen können, und kleben Sie sich dann an ihn oder sie. Lernen Sie so viel wie möglich, bevor Sie zur nächsten Gelegenheit übergehen.

Ihr Vorschlag hat sicher eine andere Herangehensweise, was meiner Meinung nach sehr ähnlich ist: "Wenn nicht jetzt, wann dann?" Du hast klar erklärt, was ich im Sinn hatte :D
Mir gefällt, wie diese Antwort sie in eine potenzielle Lernerfahrung verwandelt.
Ich weiß nicht, ob ich diesem zustimme. Jedermanns Code ist mehr oder weniger "veraltet", oder wird es sehr bald sein. Unternehmen verändern sich, Computer verändern sich, Dinge werden möglich, die es früher nicht gab, und so weiter. Mittlerweile verändert sich auch außerhalb des Computers das Geschäft. "Legacy-Code pflegen" ist ein sehr grundlegender Teil des Jobs.
Bis zu einem gewissen Grad hast du recht, Mike. Aber es gibt verschiedene Arten und Ebenen von Vermächtnissen. Einige von ihnen sind "normal". Einige sind hoffnungslose Schlamassel, die deine Seele töten.
Ich stimme dieser Antwort ausdrücklich zu. In der Tat gibt es verschiedene Legacy-Codes. Sie können gut gestaltete Software haben, die alt wird, oder schlecht gestaltete Software, die alt wird. Ersteres kann in Ordnung sein, kann sogar interessantere Herausforderungen haben, als nur etwas Neues zu schreiben. Letzteres wird Sie jedoch nicht nur bremsen, sondern wahrscheinlich wird auch die Umgebung, in der dieser Code entwickelt wurde, schlecht sein.

Sie schrieben:

Ich habe mit meinem Manager gesprochen, seine Antwort ist, dass ich diese Codebasis nach einiger Zeit umschreiben kann, aber ich liefere, was erwartet wird, bevor ich mit dem Umschreiben beginne, was wiederum auf den Punkt kommt, ich kann diesen Spaghetti-Code nicht herausfinden, wenn ich kann, würde ich es tun nicht einmal umschreiben müssen

Das klingt nach einem idealen Fall für ein schrittweises „Refaktorisieren“ der Codebasis.

Nutzen Sie bei der Erledigung Ihrer täglichen Aufgaben die Gelegenheit, die Codebasis zu „refaktorisieren“ (verbessern). Beginnen Sie beispielsweise damit, die Ausnahmebehandlung zu verbessern. Fügen Sie dann Kommentare hinzu. Verbessern Sie dann die Abfragebehandlung. Dann etwas anderes verbessern und so weiter.

Sprechen Sie mit Ihrem Vorgesetzten, teilen Sie ihm Ihre Ambitionen mit und mischen Sie die "Refaktorisierungs"-Arbeit mit Ihren täglichen Aufgaben. Überzeugen Sie sie davon, dass sich das Refactoring mittel- bis langfristig auszahlen wird, da eine bessere Codebasis einfacher zu bearbeiten ist, sowohl für Sie als auch für den nächsten Programmierer (wer das auch sein mag).

Mit der Zeit wird sich die Codebasis verbessern und eines Tages logisch organisiert und übersichtlich sein.

Als Programmierer haben wir alle von Zeit zu Zeit mit schlechtem Code zu tun. Seien Sie nicht verängstigt oder entmutigt – nehmen Sie dies als Herausforderung und Lernaktivität!

Vielen Dank, dass Sie mich mit Ihrer Antwort beruhigt haben. Ich habe mit meinem Vorgesetzten gesprochen und ein Update darüber hinzugefügt, was die Diskussion geführt hat
Gehen Sie beim „Refaktorisieren“ sehr sparsam vor.
Erstellen Sie nach Möglichkeit automatisierte Tests, um den geänderten Code zu überprüfen, bevor Sie ihn ändern. Wenn Sie nicht wissen, was es tun soll, und keine Möglichkeit haben, es zu testen (vorzugsweise automatisch), dann werden Sie nicht wissen, wann Ihr Refactoring etwas kaputt macht. Wenn Sie das Testen Ihren Benutzern überlassen, erhalten Sie ziemlich bald eine „Kein Refactoring mehr, Sie machen alles kaputt“-Anweisung vom Chef.
Ich stimme diesem Ansatz zu. Ich hatte einen Kollegen, der ohne Genehmigung ein ganzes (kleines) Programm umgeschrieben hat, nur weil ihm der Stil nicht gefiel. Entwickler sind teuer und wenn ich der Boss wäre, hätte ich mich über diese unnötigen Ausgaben geärgert. Aber OP hat eine gewisse Genehmigung, und der Ansatz von Vikingsteve ist gut.
Du kannst nicht umschreiben, was du nicht verstehst.

Also, willkommen in der eigentlichen Welt der Softwareentwicklung, nicht in der Welt, wie Sie sie gerne hätten. In der Welt, wie ich es mir wünsche, wäre jeder Code stark kommentiert, hätte richtige Testpläne, Designs, Anforderungsspezifikationen und viele andere Dinge.

Ich mache das seit 42 Jahren für Geld, ich bekomme immer noch nicht, was ich will.

Dies ist eher auf die Situation zugeschnitten, in der Sie sich befinden.

Bis Sie genug Erfahrung haben, was viel näher an 10 Jahren sein wird als dort, wo Sie sind, werden Sie nicht den professionellen Ruf haben, Organisationen zu Veränderungen zu bewegen. Was Sie jetzt, zu Beginn Ihrer Karriere, tun können, ist, diesen Ruf aufzubauen. Das bedeutet:

  1. Hinterlassen Sie Code besser, als Sie ihn vorgefunden haben.
  2. Codieren Sie idiomatisch in welcher Sprache auch immer. Machen Sie es nicht zu Ihrem persönlichen Stil, aber tun Sie es klar und lesbar und in der Sprache dieser Sprache.
  3. Seien Sie wirklich vorsichtig, wenn Sie erfahreneren Entwicklern Vorträge halten. Wir alle wissen, dass wir von Managern, die damit aufhören müssen, gezwungen werden, Dinge zu tun, die wir nicht tun wollen.

Die Art von Problemen, die Sie beschreiben, sind etwas, das Jahre dauert, um es zu beheben. Zum einen gibt es eine Menge Legacy-Code, der im Laufe der Jahre verrottet ist. Zum anderen müssen Sie Ihre Kollegen von der Idee überzeugen.

Aber was Sie nicht tun können, wenn Sie jemals guten Code haben wollen, an dem Sie arbeiten können, ist aufhören. Denn am nächsten Ort ist es mehr oder weniger genauso schlimm.

Ihr 3-Punkt ist pures Gold. Ich werde das tatsächlich in Großbuchstaben auf mein Whiteboard schreiben, damit es mich jedes Mal ablenkt, wenn ich aufschaue, weil es einfach zu leicht ist, etwas zu vergessen, das so viel Schaden anrichten kann.

Das Wichtigste zuerst: Nein, das ist kein normaler Vorgang. Ich habe über 15 Jahre als Softwareentwickler, in einem Startup (in Grossbritannien), in einer Regierungsbehörde (in Neuseeland), in einer grossen Forschungseinrichtung, in der Telekommunikation und in einem milliardenschweren Investmentinstitut (alle in der Schweiz) gearbeitet. Keiner von ihnen hatte auch nur annähernd diesen schlechten Code. Sicher, ich bin mehr als einmal auf all diese Probleme gestoßen (nicht auf den „90 %“-Teil, sondern alle separat), und insbesondere nicht-idiomatischer Code ist ziemlich häufig, aber eine Codebasis, die mit allen übersät ist, ist a Todesfalle.

Ein Manager, der sein Geld wert ist, wird wissen, dass Umschreibungen sehr riskant und ziemlich kostspielig sind, selbst wenn sie wirklich gut laufen. In einem Startup wäre es naiv zu erwarten, dass eine Neufassung irgendwo innerhalb des finanziellen Horizonts des Unternehmens liegt.

Ob Sie bleiben sollten, es gibt jede Menge Jobs, wo Sie die entsprechende Ausbildung bekommen, wo sich die Leute wirklich um Dinge wie Qualität und Sicherheit kümmern, wo Manager realistisch und ehrlich in Bezug auf Umschreibungen sind, wo Sie sich an Leute mit intimen Kenntnissen wenden können vorhandenes System für Hilfe, und, wenn auch nur ein bisschen Glück, alle oben genannten.

Vielen Dank, dass Sie mir Ihre Antwort versichert haben. Ich habe ein Update hinzugefügt, das besagt, dass mein Manager mich den Code neu schreiben lässt, sobald ich mit meinen aktuellen Ergebnissen fertig bin, aber ich stimme zu, möglicherweise einen Job anzunehmen, bei dem ich mehr Training bekomme, wenn dies der Fall ist klappt hier so schnell nicht.
Ihre Situation ist eigentlich sehr typisch, und das Gras auf der anderen Seite des Zauns ist nicht grüner.
@MikeRobinson Es hört sich so an, als hätten wir einfach sehr unterschiedliche Erfahrungen gemacht. Ich habe Informationen zu den Standorten hinzugefügt, falls es Unterschiede gibt, aber meine Antwort stimmt auch mit dem überein, was ich von Freunden und Bekannten gehört habe. Bei sehr wenigen Gelegenheiten habe ich von DailyWTF-würdigen Umgebungen gehört, aber ich glaube fest daran, dass sie nicht die Norm sind.
Die Softwarebranche ist riesig und vielfältig. Die Software, an der ich gearbeitet habe, als ich in der Finanzbranche tätig war, war sehr leistungsfähig und von hoher Qualität, denn ein Fehler oder Engpass in diesem Code hätte das Unternehmen buchstäblich finanziell ruinieren können. Die Bildverarbeitungssoftware, die nur von anderen Programmierern verwendet wurde, um Ergebnisse für andere Techniker zu erhalten, war chaotisch, aber nicht schrecklich. Das Web-App-Zeug, das hauptsächlich von Auftragnehmern geschrieben wurde und nicht länger als 6 Monate in der Nähe war, war eine tägliche Dosis WTFF. Mit so wenigen spezifischen Informationen darüber zu streiten, was normal ist oder nicht, ist albern.
Es gibt einen Grund, warum The Daily WTF genug Inhalt hat, um jeden Tag zu posten (und wahrscheinlich für immer).
Es gibt Millionen Jobs für Softwareentwickler. Eine Horrorgeschichte pro Tag zu finden , ist einfach eine Frage der Zahlen: Natürlich gibt es in jeder Stichprobe von Millionen viele schreckliche Beispiele.
@Mike Robinson: Meinst du nicht atypisch (das Gegenteil)?

Mit einer alten Codebasis arbeiten zu müssen, ist an sich kein Problem. Jemand muss es tun. Genauso wie jemand jede Woche oder alle zwei Wochen den Müll der Leute einsammeln muss. Wenn es dir nicht gefällt, solltest du dir natürlich einen anderen Job suchen.

Das arbeitsplatzbezogene Problem kann sein, dass Ihre Arbeit nicht geschätzt wird. Es verursacht nur Kosten für das Unternehmen, keine neuen Einnahmen. Und wie Sie sagten, erzielen Sie pro Woche weniger Ergebnisse als in einer anderen Position. Aber es muss Ihrem Vorgesetzten und dem Management im Allgemeinen klar gemacht werden, dass Sie für die geleistete Arbeit bezahlt werden müssen, nicht dafür, wie viel Gewinn sie in die Taschen des Unternehmens einbringt. (Und wenn es nur Kosten verursacht, aber keine neuen Einnahmen, dann würde es wahrscheinlich großen Schaden anrichten, wenn diese Arbeit nicht getan würde, oder sie hätten Sie gar nicht erst eingestellt. Gewinne zu erzielen und Verluste zu vermeiden, ist dasselbe. Oder wir sollten die Feuerwehrleute in den Städten überall loswerden, da sie nie etwas Wertvolles produzieren. Normalerweise gibt es massive Verluste, wenn sie ihre Arbeit tun. Wenn sie ihre Arbeit nicht tun, gäbe es noch viel massivere Verluste,

Machen Sie Ihrem Chef also klar, dass (a) die Codebasis durcheinander gebracht und undokumentiert ist und dass jede Arbeit daran mehr Zeit in Anspruch nimmt als erwartet, und (b) Ihre Bezahlung gleich oder besser sein muss die der Leute, die die ausgefallenen Jobs machen.

Je nachdem, wie lange dieses Produkt voraussichtlich gewartet wird, vereinbaren Sie mit Ihrem Vorgesetzten, dass es Teil Ihrer Aufgabe ist, die Codebasis zu verbessern und zu dokumentieren.

Wenn es Spaß machen würde, müssten sie dich nicht dafür bezahlen. Würdest du es freiwillig tun? Nein. Würdest du es gegen Geld tun? Du solltest.

Ein Teil davon liegt bei Ihnen. Wenn Sie sich für einen Job bewerben, insbesondere für einen Programmier- oder Ingenieurjob, sollten Sie einige der Fragen stellen:

  • Welche Technologie wird verwendet? Wie groß und alt ist die Codebasis?
  • Ist das eine Entwicklung auf der grünen Wiese?
  • Gibt es eine gute Anzahl von Tests geschrieben?
  • Welche Art von Automatisierung wird verwendet (CI/CD)?
  • Was ist der Eincheck- und Zusammenführungsprozess, was verwenden Sie für die Quellcodeverwaltung?
  • Welche Art von Tools verwenden Sie zur Unterstützung bei Entwicklung/Tests/Debugging?

Usw.

Stellen Sie diese Fragen unbedingt während des Vorstellungsgesprächs. Kein Unternehmen ist perfekt, aber es gibt viele Unternehmen/Codebasen da draußen, die einem die Seele rauben.

Wenn Sie unglücklich sind, halten Sie es einfach 6 Monate bis zu einem Jahr durch. Niemand hört gerne, dass ich meinen letzten Job gekündigt habe, weil die Codebasis schrecklich war. Sie könnten noch ein paar Dinge darüber lernen, was Sie NICHT tun sollten, und Sie können möglicherweise während Ihrer Amtszeit kleine Verbesserungen vornehmen, nach denen Ihr zukünftiger Mitarbeiter fragen wird.

Die Kernfrage lautet:

Versteht Ihr Management das Problem, erkennt es es an und beherrscht es seine eigenen Erwartungen in Bezug auf Effizienz und Qualität der Arbeit auf der Grundlage dieser Codebasis?

Wenn ja: Betrachten Sie dies als Chance.

Wenn nein: Laufen :)

Ich habe oft festgestellt, dass der beste Ansatz, diese Angelegenheiten dem Management zur Kenntnis zu bringen, darin besteht, sich nicht über die Komplexität des Codes zu beschweren oder darüber, wie schwierig es ist, dagegen zu entwickeln, sondern eine klare Beschreibung eines Problems zu bringen, das durch verursacht wird diese Struktur.

In Ihrem Fall, in dem viele Ausnahmen verschluckt werden, stellen Sie sich ein leicht erklärbares und reproduzierbares Problem, z. B.:

  1. Client-Protokolle fügt dem Warenkorb ein Foo hinzu
  2. Der Kunde checkt aus, aber der Checkout-Code schlägt bei der Zahlungsannahme stillschweigend fehl.
  3. Wir versenden den Artikel trotzdem an den Kunden

Und das wird wahrscheinlich viel schneller ihre Aufmerksamkeit erregen. Es ist eine Frage des Rahmens:

„Ich habe ein Problem mit der Codebasis, die es sehr schwierig macht, diesen Code zu schreiben und zu warten, ohne Fehler einzuschleusen – kann ich ihn bitte ändern?“

Das ist Dein Problem

„Ich habe ein Problem mit der Codebasis – ich habe [hier ein schreckliches Geschäftsproblem einfügen] gefunden , das sich anscheinend größtenteils aus der Struktur ergibt, die beim Schreiben dieses Artikels verwendet wurde. Kann ich bitte Zeit haben, es zu ändern?“

Das ist dasselbe, aber es ist jetzt ein Problem für Ihren Chef, und daher ist es einfacher, Zeit für Sie einzuplanen, um daran zu arbeiten.

Code, der so schwer zu schreiben und zu warten ist, wie Sie es beschreiben, hat auch viel wahrscheinlicher solche entsetzlichen Probleme. Alles, was regelmäßig Ausnahmen fängt und frisst, wird dazu führen, dass alle Arten von Seltsamkeiten passieren können.