Ich arbeite als Junior-Java-Entwickler. Mein langfristiges Berufsziel ist es, Softwarearchitekt zu werden.
Allerdings habe ich einen großen Anspruch an mich selbst, einen qualitativ hochwertigen Code zu liefern.
Also hier ist die Geschichte hinter meiner Frage:
Ich bin verantwortlich für ein großes Refactoring in einem Kernbereich unseres Buildsystems. Ich sammelte die bekannten Anforderungen, fügte sie mit dem zusammen, was bereits codiert war, und traf einige Entscheidungen zum Codedesign. Ich habe diese ohne die Hilfe unseres leitenden Softwarearchitekten erstellt, da er wollte, dass ich die volle Verantwortung für den Job übernehme. Da ich jetzt schon seit einigen Wochen daran arbeite, kann ich ganz klar sagen, dass ich es genauso wieder machen würde, was ein positives Zeichen ist (, oder?)
Nach dem Refactoring stürzten sie jedoch mit vielen neuen Funktionalitäten herein, weil sie dachten, ich würde einige Zeit brauchen, um diese hinzuzufügen. Nach 3 Tagen war ich mit meiner Arbeit fertig und sie waren wirklich überrascht und konnten mir nicht einmal neue Arbeit aus erster Hand geben.
Ich habe angefangen, den Code hinsichtlich Wartbarkeit zu optimieren, die Architektur dokumentiert usw.
Der leitende Architekt überprüfte meinen Code und fand keinen Grund für die Wahl der Architektur, dachte, er sei dokumentiert und ich könnte alle von mir verwendeten Muster und warum ich sie verwendet habe, erklären. Er sagte mir, mein Code sei „zu lehrbuchmäßig“ mit all den „Entwurfsmustern“. Er fuhr so etwas fort wie „Sie müssen die Funktionalitäten nicht in Klassen aufteilen, ich möchte lieber größere Klassen mit vielen Funktionalitäten sehen, also muss ich nicht zu viele Dateien durchsuchen.“
Nun, die Sache ist, dass er die vorherige Version des Tools geschrieben hat, das ich neu geschrieben habe. Es wurde in 6 Dateien aufgeteilt, jede mit etwa 2000 Codezeilen ohne jegliche Dokumentation und Kommentare. In der umgestalteten Version (bevor alle neuen Funktionen hinzugefügt wurden, die Sie der alten nicht hinzufügen konnten) gab es etwa 20 Dateien mit ~ 200-250 Codezeilen (einschließlich Dokumentation und Kommentaren).
Während ich jetzt in der Lage bin, eine neue Funktionalität innerhalb von 3-8 Stunden hinzuzufügen (getestet) und innerhalb kurzer Zeit feststellen kann, wo ein Fehler aufgetreten ist (normalerweise werden Fehler innerhalb von 1-4 Stunden behoben), sagt er mir, dass ich zu besorgt bin über die Architektur. Beachten Sie hier, dass es inzwischen ~150 Dateien gibt.
Wenn ich mir den Kodex des Entwicklungsleiters, des Senior- und des Junior-Architekten anschaue, fühle ich mich etwas beleidigt. Sie können keine Implementierung ändern, ohne das gesamte System zu beschädigen (was meinerseits möglich ist).
Ich fühle mich sehr unwohl, Code zu schreiben, der nicht meinen persönlichen Qualitätsansprüchen entspricht, aber ich bin mir sicher, dass ich diesen Anspruch nie erfüllen kann, wenn ich anfange, Code so zu schreiben, wie es die anderen wollen, so wie ich es bin 'schneller' (was nicht stimmt, sonst hätte es keinen Grund gegeben, den gesamten Code umzugestalten).
Ich kann in unserer gesamten Codebasis keine Entwurfsmuster finden, und unsere Architekten geben zu, dass sie nichts darüber wissen. Beide Fakten lassen mich zusammenzucken, da uns die Grundlagen wie Statepattern oder Factories fehlen.
Wie kann ich in dieser Situation meinen eigenen Qualitätsansprüchen gerecht werden? Wie kann ich die Arbeitsweise unserer Senioren beeinflussen? Da ich mit dem Code, den die anderen geschrieben haben, arbeiten und ihn verbessern muss, wie kann ich ihn (auf meine Weise) von hoher Qualität machen?
Einige meiner nicht "älteren" Kollegen haben bereits Änderungen an dem von mir geschriebenen Code vorgenommen und waren überrascht, wie einfach dies möglich war.
Mein Fokus lag darauf, eine Framework-ähnliche Architektur zu geben, in der Erweiterungen einfach von jedem angewendet werden können:
Um eine weitere Funktionalität hinzuzufügen, müssen Sie nur EINE EINZIGE SCHNITTSTELLE implementieren , die nur eine einzige Funktion enthält.
Das große Ding drumherum muss nicht ohne Dokumentation verstanden werden, solange es funktioniert.
IMHO denke ich, je einfacher ein solches Tool zu bedienen ist, desto komplexer ist in der Regel der Hintergrund.
Da ich mit dem Code, den die anderen geschrieben haben, arbeiten und ihn verbessern muss, wie kann ich ihn (auf meine Weise) von hoher Qualität machen ?
Das „auf meine Weise“ bedeutet hier viel. Du bist wahrscheinlich, oder behauptest zumindest, ein ausgezeichneter einsamer Wolf zu sein . Allerdings scheinen Sie kein Teamplayer zu sein. Ihr Code muss von einer anderen Person leicht überprüft und geändert werden können, weshalb Ihr Vorgesetzter Probleme mit Ihrer Architektur hatte.
Wenn Sie möchten, dass die Leute genau so arbeiten, wie Sie es möchten, dann seien Sie der Boss. Halten Sie sich an die von Ihrem Team bevorzugten Standards, bis Sie der Chef werden können.
Versuchen Sie, dies aus der Sicht Ihres Seniors zu sehen. Er muss :
Lesen Sie Ihren Code
Lesen Sie die Richtlinien mehrmals
Lesen Sie den Code erneut
Nehmen Sie seine Modifikationen auf eine Weise vor, an die er nicht gewöhnt ist
Dies ist ein Großteil seiner Seniorenzeit . Das wird Ihnen nicht gefallen – aber eines Ihrer Ziele ist es auch, Seniorenzeit zu sparen , auch wenn es mehr Juniorenzeit kostet .
Da ich jetzt schon seit einigen Wochen daran arbeite, kann ich ganz klar sagen, dass ich es genauso wieder machen würde, was ein positives Zeichen ist (, oder?)
Vielleicht haben Sie einen Tunnelblick, vielleicht gehen Sie in eine völlig falsche Richtung, aber Sie sind sich absolut sicher, dass Sie den richtigen Weg gehen. Da du wie ein einsamer Wolf wirkst, solltest du vielleicht jemanden um Rat fragen, um sicherzustellen, dass du die Dinge so machst, wie du es solltest.
Hauptmann Emacs
PagMax
Mücke
Mach Re
Mach Re