Frage:
Wie man mit Frustration umgeht, wenn man mit Spaghetti-Codebasis umgeht und das Gefühl hat, ich kann nicht liefern
Tyg13
2019-05-22 19:31:55 UTC
view on stackexchange narkive permalink

Einige Zusammenhänge: Ich bin ein neu eingestellter Entwickler (1,5 Jahre) bei einem Software-Testunternehmen. Für eine Weile lief es großartig. Ich konnte relativ schnell eintauchen, aber es gab einige Geschwindigkeitsschwankungen.

Insbesondere ringe ich viel mit unserer Codebasis. Es ist besonders haarig (in C ++, Ada und Python geschrieben) und zu diesem Zeitpunkt 20 Jahre alt. Am frustrierendsten ist, dass in einem Tool, das sich über 1,5 Millionen LOC erstreckt, nur sehr wenig bis gar kein Code vorhanden ist. Es gibt eine Art Ad-hoc-Verständnis - das Tool kann in verschiedene Modi unterteilt werden, und dieselben Personen arbeiten in der Regel in denselben Modi, aber das ist nicht immer der Fall.

In letzter Zeit war ich es gebeten, einen Teil des Werkzeugs, der in jedem einzelnen Modus verwendet wird, grundlegend zu ändern. Ich habe bereits Änderungen an Funktionen entworfen und implementiert, aber nichts ist so kompliziert. Mein Chef scheint sehr zuversichtlich zu sein, aber ich habe über einen Monat gebraucht, um genau zu verstehen, wie sich dies auf "meinen" Teil des Tools auswirken würde, und die Änderung dort umzusetzen.

Nun, trotz Bei mehreren Versuchen, meinen Chef um Hilfe bei der Implementierung der Arbeit in anderen Teilen des Tools zu bitten, besteht er darauf, dass ich sie lernen und selbst ausführen muss. Ich äußerte Bedenken hinsichtlich des Besitzes von Code und bat möglicherweise die Leute, die in diesem Bereich arbeiten, etwas davon zu tun, aber die Antwort lautete: "Sie sind beschäftigt und dies ist Ihre Aufgabe." Es wurde klargestellt, dass ich Fragen stellen kann, aber was meine Hauptaufgabe betrifft, bin ich allein.

Er ist sich bewusst, wie groß diese Veränderung ist. Er sagt es sogar selbst und sagt mir, ich solle nicht hart mit mir selbst sein, wenn es eine Weile dauert. Aber trotz seiner Sympathien wird das Projekt einfach nicht abgeschlossen. Es gibt einfach so viel Code, dass ich nicht einmal alles verstehen kann. Manchmal verbringe ich einen ganzen Tag damit, einen völlig anderen Teil des Tools abzubilden, um zu verstehen, wie sich meine Änderung darauf auswirkt, und ich gehe nach Hause, nachdem ich fast nichts erreicht habe. Manchmal mache ich einen Designfehler, erkenne ihn und muss komplett neu anfangen. Ich gehe am nächsten Tag, setze mich, schaue auf meine Notizen und seufze. Hoffentlich schreibe ich einen Code.

In den seltenen Fällen, in denen mir eine andere Aufgabe zugewiesen wird, schalte ich sie immer schnell aus, weil sie sich wie ein Hauch frischer Luft anfühlt, aber wenn ich überhaupt an meine denke Hauptaufgabe, es ist so demoralisierend, dass ich Lust habe, einen neuen Job zu finden.

Wie kann ich mit dem Stress umgehen, das Gefühl zu haben, nichts zu erreichen, und, was noch wichtiger ist, mit einem Projekt umzugehen, das Ich denke, es ist zu groß für mich, um es zu übernehmen?

ETA: Mein Chef war 16 Jahre lang der technische Leiter. Ich glaube nicht, dass sein Mangel an technischem Know-how hier das Problem ist.

Er war über 16 Jahre lang einer der Hauptentwickler des Tools.Er weiß, dass die Codebasis scheiße ist, aber ich denke, er wurde zu lange (in den letzten 4 Jahren) aus dem Problem entfernt.
Vertrauen Sie in diesem Fall seinem Urteil.Dwizums Antwort ist hier wahrscheinlich der beste Rat.Messen Sie die Leistung nicht an der Menge an Code, die Sie geschrieben haben. Ich habe die Anzahl der Tage verloren, die ich tagelang an einer einzelnen Codezeile gearbeitet habe.
Der Frage fehlt derzeit eine bestimmte Sache, bei der Sie Hilfe benötigen.** Was möchten Sie tun? ** Es klingt im Moment eher wie ein Scherz mit allem Mitgefühl für Ihr Problem
@aaaaaa Idealerweise möchte ich von diesem Projekt ausgeschlossen werden.Es ist eine Menge mühsamer Arbeit, etwas zu bekommen, das eigentlich im Tool hätte sein sollen.Wir haben jahrelang auf eine Struktur aufgebaut, die jetzt fast vollständig überarbeitet werden muss.Ich denke nicht, dass dies eine Änderung ist, die ein Entwickler mit einer einjährigen Erfahrung mit einer massiven Codebasis vornehmen sollte.Aber ich fürchte um das Schlimmste, wenn ich dies meinem Chef wörtlich sagen würde
* "Manchmal verbringe ich einen ganzen Tag damit, einen völlig anderen Teil des Tools abzubilden und zu verstehen, wie sich meine Änderung darauf auswirkt, und ich gehe nach Hause, nachdem ich fast nichts erreicht habe" * - hey, das klingt asehr wie mein Job!Und ich bin der Typ, den Sie brauchen, um Informationen über die anderen Teile des Tools zu erhalten (und scheuen Sie sich nicht zu fragen, ob sie gut sind (bitte lassen Sie sie gut sein ...)).Ich bin sicher, sie würden dir lieber helfen, es jetzt zu verstehen, als später zu leiden, wenn du es falsch verstehst.Umarme es!Es ist eine aufregende romantische, rasante STEM-Karriere!
Vergessen Sie die Idee, den Code zu "besitzen".Der Code gehört dem Unternehmen, nicht einem bestimmten Mitarbeiter.Entwickler sollten niemals denken, dass sie einen bestimmten Teil der Codebasis besitzen.
@SimonB Ich bin mir bewusst, dass niemand das Gefühl haben sollte, den Code in dem Sinne zu "besitzen", dass andere ihn nicht berühren sollten, aber (und vielleicht ist dies nur meine Unerfahrenheit) ich habe das Gefühl, dass das Projekt unorganisiert und gezeichnet wird.raus ohne es.Spezialisierung ist eine gute Sache - es bedeutet, dass Sie Dinge in Ihrem Fachgebiet effizienter erledigen können als ein Alleskönner, der ständig zwischen unterschiedlichen Bereichen wechseln muss.Ich erkenne das Verdienst, Entwickler immer auf dem Laufenden zu halten.Aber "es gibt überhaupt keinen Code-Besitz" macht mich wahnsinnig.Ich kann das alles nicht in meinem Kopf halten.
* es ist 20 Jahre alt * Ich denke, das ist ein Problem für sich
@MilkyWay90 gibt es eine erstaunliche Menge an Code, die aus dem Jahr 1999 stammt.
@Tyg13 Verwenden Sie Python 1 oder haben Sie Ihren Code aktualisiert?
@MilkyWay90 Die meisten Python-Teile wurden in den letzten fünf Jahren geschrieben.Das Management hat Teile des Tools in Python verschoben, um "die Entwicklungszeit zu beschleunigen" * shudder *
@Tyg13 Ich verstehe.Der Code * wird * also auf die neuesten Versionen der verwendeten Programmiersprachen aktualisiert, oder?
@MilkyWay90 ist leider immer noch auf C ++ 03
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (https://chat.stackexchange.com/rooms/93990/discussion-between-milkyway90-and-tyg13).
@Tyg13 - Wenn Sie die Frage so bearbeiten, dass sie den Normen von Stack Exchange (gemäß dem obigen Hilfelink) entspricht, wird sie wahrscheinlich zurückgestellt und erneut geöffnet.
@dwizum Ich bin mit der Antwort, die Sie mir gegeben haben, einverstanden.Es ist wahrscheinlich die konstruktivste Antwort, die Sie auf diese Frage geben können.
Ich bin froh, dass Sie mit den Informationen, die Sie erhalten haben, zufrieden sind, aber wenn die Frage in der Warteschleife bleibt, kann niemand anderes antworten, und sie wird schließlich endgültig geschlossen und für die Website viel weniger wertvoll.Ein paar einfache Änderungen und das erneute Öffnen der Frage könnten dazu führen, dass sie für die Community insgesamt wertvoller wird.
@dwizum ist in der Warteschleife, weil ich bei dieser Frage kein festes Ziel vor Augen hatte und es immer noch nicht tue.Ich würde die Frage gerne bearbeiten, bin mir aber nicht sicher, was die Moderatoren zufriedenstellen würde.
Keine Antwort auf Ihre Frage, sondern über die Aufgabe.Wie sehen Ihre Komponententests aus? Haben Sie eine Testabdeckung, um sicher zu sein, dass Sie Fehler erkennen sollten, wenn Sie sie einführen?Wenn Sie keine Unit-Tests erstellen können, die Ihnen dieses Vertrauen geben.
Fünf antworten:
dwizum
2019-05-22 19:43:07 UTC
view on stackexchange narkive permalink

Sie sagten:

Hoffentlich schreibe ich Code.

Einer meiner Mentoren hatte eine Plakette auf dem Schreibtisch: Resist Der Drang zum Code. Ja, Software ist möglicherweise Ihr Arbeitsprodukt, aber das bedeutet nicht, dass Ihre Arbeit nur Code schreibt. Sie müssen verstehen, was Sie tun, und das braucht Zeit. Der Sinn der Plakette bestand darin, die Entwickler dazu zu bringen, sorgfältig über ihre Aufgaben nachzudenken und sicherzustellen, dass sie den Ansatz berücksichtigen, den sie verfolgen, anstatt sofort an einer Tastatur zu sitzen und Code zu schreiben, der auf einer unvollständigen oder halbherzigen Vorstellung basiert. P. >

Um sich an Ihre Wortwahl in Ihrem Titel zu halten, sagte er seinen Entwicklern, wenn sie sich über Spaghetti-Code beschweren würden, sie sollten "eine Gabel und einen Löffel nehmen und anfangen zu drehen". Der Punkt ist, ja - manchmal wird uns ein Chaos serviert und wir können nicht einfach eintauchen und essen, wir müssen das Chaos zuerst organisieren.

Also - wenn Sie einen Tag haben wie

Manchmal verbringe ich einen ganzen Tag damit, einen völlig anderen Teil des Tools abzubilden, um zu verstehen, wie sich meine Änderung darauf auswirkt, und ich gehe nach Hause, nachdem ich fast nichts erreicht habe.

Sie sollten sich nicht vorstellen, dass dies nichts bewirkt, da Sie über die zu erledigende Aufgabe lernen . Das ist eine Leistung. Selbst wenn Sie denken, "Ich habe versucht, dies herauszufinden, und ich habe es falsch verstanden", haben Sie zumindest etwas ausgeschlossen.

Um Ihre Besorgnis auf den Punkt zu bringen, ja - es ist schön, wenn wir in leicht identifizierbaren Paketen arbeiten, die wir mit den Händen umwickeln und in diskreten Stücken erledigen können. Aber manchmal ist das nicht der Fall. Da Sie sich so überfordert fühlen, möchten Sie möglicherweise (entweder über Ihren Manager, leitende Entwickler, das Web usw.) Hilfe bei der Prozesszuordnung oder anderen Meta-Tools und Methoden für Entwickler anfordern, damit Sie besser werden Lernen, wie man große Probleme angeht, anstatt nur das Problem vor Ihnen zu lösen oder sich einfach überfordert zu fühlen.

Es ist auch erwähnenswert, dass Sie einige sehr ermutigende Kommentare zu Ihrem Chef abgegeben haben, die darauf hinweisen, dass er die Schwierigkeit der Aufgabe versteht und bereit ist, Ihnen den Spielraum zu geben, um sie zu erfüllen. Es ist ein Kompliment, dass er so viel von Ihnen hält. Er hat angegeben, dass Sie den anderen Codebesitzern Fragen stellen können. Dies ist ein guter Ausgangspunkt, wenn Sie wirklich feststecken.

Letztendlich müssen Sie entscheiden, ob dies eine akzeptable Arbeit ist, die Sie gerne erledigen, im Gegensatz zu etwas, das Sie dazu bringt, Ihren Job zu kündigen. Nehmen Sie es sich einfach zu Herzen: Wenn Ihre Grenzen verschoben werden, ist dies entweder eine Gelegenheit zum Lernen und Wachsen oder eine Gelegenheit, dem Problem zu entfliehen. Wir alle tun beides an verschiedenen Punkten in unserem Leben. Die Wahl liegt wirklich bei Ihnen.

Diese.Beginnen Sie erst mit dem Codieren, wenn Sie verstanden haben, was es bewirken wird, und geraten Sie nicht in Panik, wenn der verständnisvolle Teil in solchen Fällen viel Zeit in Anspruch nimmt.Jeder Tag, an dem man mehr über das System erfährt, das später Änderungen ermöglicht, ist eine Errungenschaft.Der Erfolg kann nicht in Codezeilen gemessen werden.Lambdas / LINQ wäre in diesem Fall nicht eingeführt worden.
+1 für "Nimm eine Gabel und einen Löffel und fang an zu drehen."
Meine besten Tage sind die Tage, an denen ich Code lösche.
Bis zu diesem Punkt bin ich so weit gegangen, ganze Spaghetti-Module auszudrucken, um den Kontrollfluss zu analysieren, wie das Lesen eines Buches "Wähle dein eigenes Abenteuer", indem ich meine Finger stecke oder Notizen poste, um Punkte zu markieren, zu denen ich zurückkehren möchte, und es wie einen Roman zu lesen.Heutzutage versuche ich, maximal wortreiches Doxygen auf eine undokumentierte Codebasis zu werfen, um zumindest die Anrufdiagramme zu erhalten, bevor ich eintauche.
Manchmal, wenn ich die Codebasis, an der ich arbeiten muss, nicht verstehe, versuche ich, sie zuerst umzugestalten.Es muss kein vollständiger Refactor sein, selbst einfache Dinge wie das Ändern von Variablennamen können Ihnen helfen, es zu verstehen.Es hilft Ihnen auch, das Gefühl zu haben, etwas zu "tun" - was hilft, die Angst abzubauen und Ihrem Gehirn zu ermöglichen, sich auf das Lernen zu konzentrieren.
Simon B
2019-05-23 03:18:56 UTC
view on stackexchange narkive permalink

Eines Tages ist das Zuordnen des Codes im großen Stil nichts. Wenn es sich um eine große Codebasis handelt, kann es Wochen dauern, bis das Slogging langwierig ist. Es macht keinen Spaß, besonders nicht alleine.

Versuchen Sie herauszufinden, über welche Teile Sie Bescheid wissen müssen. Versuchen Sie festzustellen, welche Module von Ihren Änderungen betroffen sind und welche nicht. Dokumentieren Sie, was Sie finden - Diagramme, Hinweise zu den Abhängigkeiten und Schnittstellen zwischen Codemodulen, alles, was Ihnen in Zukunft nützlich sein könnte. Sogar Warnungen, bestimmte Änderungen nicht vorzunehmen, da sie etwas anderes beschädigen.

Messen Sie zunächst den Fortschritt in dem, was Sie dokumentiert haben, und nicht in der Menge an Code, die Sie geschrieben haben.

Das Messen des Programmierfortschritts anhand von Codezeilen entspricht dem Messen des Flugzeugbaufortschritts nach Gewicht.

Bill Gates

Ertai87
2019-05-22 21:03:16 UTC
view on stackexchange narkive permalink

Die Art und Weise, wie Sie es klingen lassen, lässt es so klingen, als ob Ihr Code in "Modulen" geschrieben ist, mit der Ausnahme, dass eine Reihe von Modulen unter anderen, nicht verwandten Modulen mit Spaghetti aufgereiht sind. Was würde passieren, wenn Sie den gemeinsamen Teil, für den Sie verantwortlich sind, herausrechnen und herausfinden, wie Sie eine einheitliche Lösung für das finden, was Sie tun sollen, anstatt jedes Teil einzeln neu zu implementieren?

Andernfalls klingt es nicht so, als würden Sie aufgefordert, ein "Modul" erneut zu implementieren, da ein "Modul" in jedem Fall auf die gleiche Weise funktionieren soll. Es hört sich so an, als würden Sie möglicherweise gebeten, einen sehr großen Teil der Anwendung selbst zu übernehmen, was für mich unvernünftig klingt. Sie sollten sorgfältig herausfinden, welcher dieser Fälle richtig ist.

Wenn Ihr Chef versteht, wie groß das Unternehmen ist, aber auch keine Leute zuweist, die Ihnen helfen, klingt es für mich so, als wäre er es versuche dich unter den Bus zu werfen. Ich hatte schon einmal eine ähnliche Situation und es endete damit, dass ich entlassen wurde, weil ich die erforderliche Arbeit nicht in angemessener Zeit erledigt hatte, obwohl mein Chef wiederholt sagte: "Ich verstehe, wie viel Arbeit das ist, und ich erwarte es nicht." schnell erledigt werden ". Wenn dies das gleiche ist, was mir passiert ist, ist Ihr Chef nicht freundlich und verständnisvoll, er bereitet Sie darauf vor, zu scheitern und lächelt Sie an, während er Ihnen in den Rücken sticht. Geh raus.

Bezogen auf Ihren letzten Absatz.Wir neigen dazu, unseren Laden in zwei Hälften zu teilen: eine von meinem Chef und eine von einem Co-Chef.Beide haben die gleiche Autorität, aber auch ihre eigenen Untergebenen.In Bezug auf die Implementierung dieser Funktion ist mein Co-Chef nicht mit meinem Chef und mir einverstanden und meint, dies hätte auf andere Weise viel einfacher gemacht werden können.Vor kurzem hat ein anderer Entwickler begonnen, an einer parallelen Implementierung dieser Funktion aus einem ganz anderen Blickwinkel zu arbeiten.Ich wusste nicht einmal davon, bis der Entwickler selbst zu mir kam.
@Tyg13 Angesichts dessen gibt es zwei Empfehlungen: Wenn Ihr Co-Chef auch Ingenieur ist, fragen Sie ihn zunächst nach einigen Vorschlägen.Erklären Sie ihm, dass Sie nicht weiterkommen und einen Einblick in diese riesige Codebasis wünschen.Sehen Sie, was er sagt.Wenn er das "Ich kenne die Antwort, aber ich sage es dir nicht, haha!"Taktik, dann renn weg, so schnell du kannst.Dies wäre nicht nur unprofessionell (da Ihr Co-Chef nicht im besten Interesse des Unternehmens arbeiten würde), sondern würde auch deutlich machen, dass Sie eingerichtet werden.
Was den zweiten Ratschlag betrifft, bedeutet die Tatsache, dass Sie doppelte Arbeit erhalten und die andere Person angewiesen wurde, nicht explizit mit Ihnen zusammenzuarbeiten (dies ist meine Ansicht aufgrund der bereitgestellten Informationen), dass Sie wahrscheinlich in Konkurrenz geratenihm.Bestimmen Sie, wer von Ihnen aus arbeitspolitischer Sicht in der besseren Position ist, und diese Person wird wahrscheinlich bald auf dem Hackklotz stehen.Da er derjenige war, der über die duplizierte Arbeit informiert wurde, und nicht Sie, sind Sie wahrscheinlich derjenige, der gehackt werden soll.Geh raus.
Leider ist es angesichts der Struktur dieses Unternehmens wahrscheinlicher, dass niemand diesem Entwickler gesagt hat, dass ich an dem Projekt arbeite.Wir haben keine anderen Besprechungen als die wöchentlichen Einzelgespräche mit dem Manager.Niemand weiß, was jemand anderes tut, es sei denn, wir fragen uns gegenseitig oder unser Manager sagt es uns.
pestatije
2019-05-23 05:59:54 UTC
view on stackexchange narkive permalink

Nun, Sie haben Schwierigkeiten beim Liefern und auch jemand anderes arbeitet an derselben Aufgabe.

Versuchen Sie, sich dem anderen anzuschließen: Er kann Aufgaben an Sie delegieren, die Sie liefern können. Er übernimmt die Verantwortung für seine Lösung funktioniert nicht, Sie sind von dieser Aufgabe befreit, die Sie nicht wirklich erledigen möchten.

Dragan Juric
2019-05-28 03:43:01 UTC
view on stackexchange narkive permalink

Die Frage hier ist: Was ist die Frist - wie viel Zeit wurde Ihnen dafür gegeben? Wenn genügend Zeit vorhanden ist, dann tun Sie es, tun Sie es langsam und vorsichtig, machen Sie es gut.

Wenn Es gibt nicht genug Zeit und das Unternehmen bittet um Unmögliches. Suchen Sie nach einem neuen Job.

Auch Ihre Erfahrung ist mit der Komplexität des Codes vergleichbar ? Etwas in 1,5 Millionen Zeilen bereits durcheinandergebrachten Spaghetti-Codes zu überarbeiten, ist eine Aufgabe für einen sehr erfahrenen Entwickler mit viel Erfahrung. Sind Ihre 1,5 Jahre Erfahrung nur mit ihnen - und Sie haben insgesamt viel mehr - oder ist es mehr oder weniger Ihre gesamte Berufserfahrung? Denn wenn es so ist, werden Sie zum Scheitern verurteilt. Sehen Sie sich den vorherigen Fall an ... wie in Suchen Sie nach einem neuen Job.

Die nächste Frage hier ist, ob das Unternehmen erwägt, diesen Code ernsthaft zu überarbeiten, damit dies nicht der Fall ist ein Spaghetti-Durcheinander, oder machen sie nur eine Korrektur auf einem Patch auf einer Änderung und so weiter? In diesem Fall suchen Sie auch nach einem neuen Job.

Wenn Sie Der Manager verfügt über 16 Jahre Erfahrung als technischer Leiter und macht die oben beschriebenen Dinge. Es ist beabsichtigt, es ist eine bewusste Entscheidung, entweder mehr Arbeit aus Ihnen herauszuholen, als normalerweise möglich ist, oder Sie zum Scheitern zu bringen und In jedem Fall wird er seine Meinung nicht ändern, egal was Sie sagen.

Anhand der Antworten auf diese Fragen werden Sie feststellen, ob dies ein schwieriger, aber erwarteter Teil von Ihnen ist Job oder ein durcheinandergebrachtes Projekt und Team - und das sagt Ihnen alles, was Sie wissen müssen.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...