große Änderungen vorschlagen / als Praktikant umschreiben [geschlossen]


15

Der Kontext:

  • Es ist ein internes Projekt (von dem ich glaube, dass es nicht viele Leute benutzen)
  • es ist alt
  • wir aktualisieren es

Die Probleme:

  1. Es missbraucht das MVC-Framework (keine Verwendung von Modellen, Geschäftslogik in Ansichten usw.)
  2. Was wir tun sollen, ist klein, aber aufgrund des geringen Zusammenhalts haben wir zwei Möglichkeiten:
    1. weiterhin Dinge verpfuschen
    2. Bewegen Sie große Codestücke oder schreiben Sie das Ding neu

Die Lösungen (ich sehe):

  1. Arbeiten Sie weiter damit, ignorieren Sie bewährte Methoden, um möglichst bald fertig zu werden, und führen Sie keine neuen Fehler durch Umgestalten / Umschreiben ein
  2. refactor / umschreiben

Ich denke, meine Frage ist wirklich: Wenn ich große Änderungen an diesem Projekt vornehmen möchte, wie kann ich das vorschlagen, ohne jemanden zu beleidigen? Oder wäre es besser für mich, einfach mit dem Fluss zu gehen, auch wenn das manchmal (metaphorisches) Klebeband bedeutet?


7
Überlegen Sie sich zuerst, warum es so ist, wie es ist. Es kann gute Gründe geben, von denen Sie noch nichts gelernt haben.

Wie in anderen Ländern wahrscheinlich ein guter Grund - denken Sie daran, dass dies möglicherweise an Sie weitergegeben wird, da es eine niedrige Priorität hat. Sie haben nicht die Zeit / das Budget, um jedes Projekt, an dem Sie arbeiten, neu zu schreiben, zu verpfuschen - wahrscheinlich haben es alle anderen.
Jonno

2
Denken Sie daran, dass die von Ihnen vorgeschlagene Lösung 2 der folgenden 3 Bedingungen erfüllen muss: gut, schnell, billig. Anscheinend schlagen Sie nur vor, was Sie für "gut" halten. Ich glaube nicht, dass Ihre Empfehlung für das Unternehmen schnell oder billig ist. Sie werden es also schwer haben, die Leute zu überzeugen, von denen erwartet wird, dass sie dafür bezahlen.
Joel Etherton

1
Ich weiß nicht, warum Sie Refactor und Rewrite geschrieben haben, als ob sie gleich wären. Sie sind nicht.
CaffGeek

Ich weiß, dass dies nicht der
Fall ist

Antworten:


5

OK hier geht.

Sie denken, die Anwendung ist schlecht strukturiert und schlecht geschrieben.

Der Kunde glaubt, es macht den Job.

Sie möchten es nur umschreiben, um seine "innere Schönheit" zu verbessern.

Sie fordern den Kunden auf, Geld dafür auszugeben, dass die Anwendung genau das tut, was sie jetzt tut - nur die Teile, die der Benutzer nicht sieht oder versteht, sind irgendwie "besser".

Der größte Einwand gegen schlecht geschriebenen, schlecht strukturierten Code ist, dass er schwer zu verstehen ist.

Der Code ist schwer zu verstehen und verfügt über Funktionen und Features, die nur in schlecht strukturierten Anwendungen leicht implementiert werden können. Wenn Sie nicht sehr gut darin sind, wird die neue Anwendung nicht genau das tun, was die aktuelle Anwendung tut, und da Sie nicht vollständig verstanden haben, was der ursprüngliche Code tat, wird es wahrscheinlich falsch sein.

Ihr Kunde hat jetzt eine Menge Geld ausgegeben, um eine Bewerbung zu erhalten, die deutlich schlechter ist als die ursprüngliche Bewerbung. Sie werden nicht beliebt sein!

Glücklicherweise sind Ihre erfahreneren Colleges bereit, Sie zu unterhalten (wahrscheinlich, weil sie denselben Fehler gemacht haben, als sie angefangen haben, und vielleicht sogar das Unglück hatten, die Genehmigung des Managements für solch ein unglückliches Projekt zu erhalten).

Mein Rat wäre also, die alte Codebasis am Laufen zu halten und ruhig zu bleiben. Der Kunde möchte nur ein funktionierendes System, das ihm egal ist, wenn Sie den Code für hässlich halten.


Ich denke, ich bleibe dabei. Ich werde versuchen, es ein wenig aufzuräumen, bevor ich gehe, aber es scheint, als wären große Änderungen nicht erwünscht.
7983879342

Tut mir leid, dass ich mich so schwer zu diesem Thema geäußert habe, aber Refactoring kann sehr schwierig sein, und es ist ziemlich undankbar, wenn Sie Ihren Benutzern keinen greifbaren Nutzen zeigen können.
James Anderson

22

Schlagen Sie Ihre Änderungen vor. Machen Sie sich für jeden Fall klar, warum Ihre Änderungsvorschläge das gesamte System unterstützen. Ist dies nicht der Fall, müssen Sie mit einem Zurückschieben rechnen. Warum Geld ausgeben, um etwas zu reparieren, das nicht kaputt ist? Gründe wie eine bessere Erweiterbarkeit des Systems und bedenkliche Auseinandersetzungen sind möglicherweise gültig (je nachdem, mit wem Sie sprechen), aber in 99% der Fälle bringt es Sie nicht weiter, wenn Sie nur sagen, dass "es nicht korrekt implementiert ist". Vergewissern Sie sich, dass Sie dem Projekt einen Mehrwert verleihen und nicht nur vorschlagen, dass es funktioniert (auch wenn dadurch der Code bereinigt wird).

Unglücklicherweise bedeutet in der Berufswelt, dass etwas falsch implementiert wurde, nicht, dass es kaputt ist und daher nicht repariert werden muss. Bei der Behebung dieses Problems können Sie auch unvorhergesehene Probleme einführen, die sich auf andere Bereiche des Projekts auswirken können.


11
+1, vor allem für "in der Berufswelt, nur weil etwas falsch implementiert wurde, bedeutet nicht, dass es kaputt ist"
StuperUser

4
+1 und umgekehrt ... wird einfach etwas implementiert, was nicht heißt, dass es funktioniert.
Joel Etherton

11

Beim Lesen Ihrer Frage bin ich eigentlich skeptisch, dass es sich lohnt, die Anwendung neu zu schreiben. Vielleicht haben Sie sich nicht die Mühe gemacht, Ihre Frage vollständig zu beantworten. Aber wie wahrscheinlich ist es, dass der Nutzen des Umschreibens die Kosten wert ist, wenn es sich um eine alte, selten verwendete interne Anwendung handelt? Die Kosten für ein Umschreiben sind wahrscheinlich höher als die Summe aller Updates und Patches, die es jemals geben wird.

Wenn Sie der Meinung sind, dass dies nicht der Fall ist, müssen Sie mehr Argumente dafür anführen, als Sie es hier getan haben.

Bei der Verbesserung der Anwendung besteht möglicherweise die Möglichkeit, dass Sie ein wenig überarbeiten, was natürlich im Verlauf Ihrer Aktualisierungen geschieht.


1
+1 für geringen Nutzen bei einer umfassenden Umschreibung einer internen Anwendung mit geringer Nutzung. Ihre Zeit könnte an anderer Stelle gewinnbringender genutzt werden (es sei denn, sie möchten dies als Trainingsübung für Sie verwenden)
2.

10

Du bist ein Praktikant. Vermutlich bist du brandneu. Sie vermuten Sie wahrscheinlich als Idioten.

Wenn Sie also Vorschläge machen, gehen Sie vorsichtig vor . Sei demütig und bescheiden. Lassen Sie Ihre Ideen im Dialog fließen, während Sie anderen Mitgliedern die Möglichkeit geben, ihre eigenen Ideen zur Codebasis und zum Druck, unter dem sie möglicherweise stehen, zu diskutieren.

Sie wollen ihr Vertrauen verdienen. Sie tun dies, indem Sie guten Code für die Aufgaben schreiben, die Sie erhalten. Schreiben Sie es sauber und verwenden Sie die Best Practices, die Sie gerne implementiert sehen würden, aber nur für das, was Sie tun sollen. Dies werden wahrscheinlich kleine Dinge sein, die der Rest des Teams wahrscheinlich für unbedeutend hält. Mach diese Dinge gut. Erhellen Sie die Ecke, in der Sie sich gerade befinden, und wenn das Team Ihren Code positiv überprüft, werden auch Ihre Ideen an Statur zunehmen.

Wenn Sie Ihre Kompetenz und Ihr Wissen unter Beweis stellen, können Sie eventuell einen oder zwei Vorschläge machen.


4

Ich würde diesen Vorschlag nur einem Mitentwickler unterbreiten . Ich würde es nicht mit dem Management besprechen, da ich mir vorstellen würde, dass das Management dies als eine Art Überschreitung von Grenzen ansehen würde.

Nachdem Sie einem Entwickler, mit dem Sie arbeiten, einen Vorschlag unterbreitet haben, werden sie wahrscheinlich gute Gründe dafür haben, warum die Codebasis so ist. Die Gründe dafür könnten sein: "Nein, eigentlich ist der Code in Ordnung, Sie verstehen MVC einfach nicht (und deshalb sind Sie Praktikant)" oder "Das ist eine großartige Idee, lassen Sie uns die neue Anwendung gemeinsam entwickeln!".

Denken Sie daran, dass die Antwort auf das Refactoring dieser Anwendung höchstwahrscheinlich Nein lautet. Ich würde nie wollen, dass ein Praktikant das Umschreiben einer internen Bewerbung übernimmt (was passiert, wenn Ihr Praktikum abgeschlossen ist und das Umschreiben erst zur Hälfte abgeschlossen ist?). Außerdem gibt es wahrscheinlich wichtigere Dinge, an denen Sie arbeiten könnten, als in einer internen Bewerbung herumzustöbern .

Aber es tut nie weh, Gleichaltrige zu fragen, und wenn Sie das tun, werden Sie etwas lernen. Und genau darum geht es bei einem Praktikum.


2

Was auch immer passiert, ich hoffe, Sie nehmen die folgende Nachricht mit. Wie in einigen der oben genannten Antworten darauf hingewiesen wurde, ist ein erneutes Schreiben des Codes aus technischen Gründen manchmal aus geschäftlichen / Kostengründen nicht möglich. Zu viele Programmierer leben in der technischen Lösung und weigern sich zu berücksichtigen, dass ihr persönliches Streben nach technischer Eleganz / Lesbarkeit / Best Practice mit den geschäftlichen Erfordernissen in Einklang gebracht werden sollte, um die Dinge zu erledigen. Nach meiner persönlichen Erfahrung wird der Typ, der diese Balance nicht erreicht (aus beiden Richtungen), oft als Verpflichtung innerhalb des Teams angesehen.

Hören Sie nicht auf, Dinge zu hinterfragen, auch wenn Sie ein paar Rückschläge bekommen, so lernen und wachsen wir.


2

Andere Antworten haben viel über die Politik Ihrer Situation gesprochen, und ich stimme eher zu. Sofern Sie keinen überzeugenden Business Case vorlegen können, ist ein erneutes Schreiben wahrscheinlich nicht geplant.

Dies bedeutet jedoch nicht, dass Sie die Pfadfinderregel vergessen sollten :

Verlassen Sie den Campingplatz immer sauberer als Sie ihn vorgefunden haben.

Wenn Sie während der Implementierung etwas auf dieser Codebasis herausfinden können, wie Sie einige Aspekte des Entwurfs oder der Implementierung bereinigen können, sollten Sie dies berücksichtigen. Sie wahrscheinlich nicht brauchen die gesamte Anwendung neu zu schreiben eine bessere Nutzung des MVC - Modell zu machen, und wenn Sie einige neue Business - Logik für eine bestimmte Ansicht implementieren, könnte man bedenkt , aus der alten Ansicht , welche die Logik bewegt in das Modell und das Hinzufügen Ihrer neuen Logik dazu.


1

Bitten Sie einen anderen Entwickler (einer, der mit dieser Anwendung vertraut ist), eine kurze exemplarische Vorgehensweise durchzuführen, damit Sie das Wie und Warum der Implementierung verstehen. Erklären Sie, dass Sie zwar die technologischen Aspekte verstehen, aber in der Lage sein möchten, die Punkte mit den Geschäftsanforderungen zu verknüpfen (Geschäftsanforderungen haben Vorrang vor allen anderen).

Sobald Sie diese Informationen haben, können Sie Ihre Bewertung vornehmen. Wenn Sie persönlich der Meinung sind, dass es neu geschrieben werden sollte, andere es jedoch nicht als sinnvollen Zeitaufwand ansehen, nehmen Sie es als persönliches Projekt an. Auch wenn es hier / da eine Stunde ist, wenn Sie Ausfallzeiten haben, führen Sie die Implementierung "korrekt" durch. Wenn Sie fertig sind, präsentieren Sie es den anderen Entwicklern als "Hey, ich hatte das Gefühl, dass dies eine Bereinigung gebrauchen könnte, also habe ich während meiner Ausfallzeit ein paar Nebenarbeiten erledigt. Was denken Sie?" Drücken Sie das Wechselgeld nicht auf sie - bieten Sie es ihnen einfach als "Hey, gefällt euch das?" An. und von dort gehen.


0

Die meisten Änderungen werden in der Regel schrittweise vorgenommen.

Ein paar Dinge zu beachten;

  • Was ist die Geschichte der Anwendung?
  • Warum ist es heute hässlich?
  • Was ist der Nutzen der architektonischen Veränderungen?

Eine gute Strategie ist es, an den kleinen Dingen zu arbeiten und eine Menge Fragen zu stellen (Fragen, die Sie nicht von Google oder der Quelle lernen können, verschwenden Sie keine Zeit). Nachdem Sie sich mit der Codebasis und den Entwicklern vertraut gemacht haben, sollten Sie ein gutes Gefühl dafür haben, warum der Code so ist, wie er ist. Manchmal ist es nur so: "Ja, wir mussten etwas zusammen hacken und es aus der Tür schieben". Wenn Sie geringfügige Änderungen an kleinen Teilen des Systems vorschlagen können, die im Verlauf Ihrer normalen Arbeit auftreten, erhalten Sie mehr Bodenhaftung als radikale Umschreibungen.


0

Es ist nicht schlimm, ein Umschreiben vorzuschlagen, wenn Sie nett fragen und eine logische Argumentation anstellen (nicht nur eine Vermutung oder der bessere Weg, dies zu tun). Es besteht eine hohe Wahrscheinlichkeit, dass das Neuschreiben einer Anwendung mit geringem Verwendungszweck abgeschafft wird, und es besteht eine gute Chance, dass derjenige, der das System ursprünglich geschrieben hat, immer noch da ist (und in der Hierarchie höher ist als Sie) und Kritik möglicherweise nicht gern nimmt.

Sagen Sie also nicht "Wir müssen dieses schrecklich gestaltete System, das die grundlegenden MVC-Prinzipien verletzt, umschreiben", sondern stellen Sie es als offene Frage den entsprechenden Vorgesetzten (Personen direkt über Ihnen). Etwas wie "Ich frage mich, ob das Umschreiben des Systems im MVC-Modell auf lange Sicht viel Zeit spart. Was denken Sie? Ich wette, wir könnten die Wartungszeit durch ein umfangreiches Umschreiben (in etwa 2 Wochen) halbieren." enthält MVC-Modell, TDD usw. wurde gemacht und nach zwei Monaten Routinewartung werden wir ausgeglichen sein ". Die Antwort könnte lauten: Nein, wir glauben nicht, dass dies erforderlich ist. Ich bin mit Ihren Zeitvoranschlägen und der Wahrscheinlichkeit, dass das neue System ein geeigneter Ersatz sein wird, nicht einverstanden. Oder die Antwort könnte lauten: Gut gemacht, aber denken Sie daran, wenn Ihr neues System nicht funktioniert. t arbeiten so gut / besser als das neue System in dem von Ihnen vorgeschlagenen Zeitrahmen, dass die Leute Ihnen die Schuld geben. Und selbst wenn das System wenig genutzt wird; Es ist möglicherweise nicht akzeptabel, die Aktualisierung mit geringfügigen Korrekturen während des Überschreibungszeitraums abzubrechen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.