Das Team wendet schlechte Praktiken beim Programmieren an. Soll ich trotzdem bleiben?

Ich arbeite als Programmierer, hauptsächlich als Webentwickler, für eine Firma, die sich einer Nischen-Programmiersprache bedient, die einen schlechten Ruf hat.

Im Grunde haben es die Entwickler gemacht, die das Unternehmen verlassen haben

A: Undokumentierter Code (ohne Kommentare zu den Klassen, die sie erstellt haben, warum also etwas, das die Suche nach Datensätzen durchführt, JBFX heißt und nicht die intuitive SEARCH, die ich nie erfahren werde)

B: stark gekoppelte und statische Systeme

  • (SQL-Abfragen werden in die Anwendung "injiziert", ihr Argument ist, dass dies der schnellste Weg zur Entwicklung ist, ohne sich um gespeicherte Prozeduren usw. zu kümmern.)

  • (Anstelle eines Servers, der verschiedene "Standorte" des Unternehmens über ein Feld bedienen kann (z. B. Tabellen, die eine Bereichsspalte enthalten, die Datensätze für "Manila" oder "Dubai" enthalten würde) hat jeder Standort seinen eigenen Server , und können daher nicht miteinander in Beziehung stehen, es sei denn, es handelt sich um Middleware für jede bestimmte Tabelle)

C. Webanwendungen werden dazu ermutigt, wieder POST statt Responsive zu sein. Denn so machen sie Webentwicklung. Ich habe versucht, eine Webseite anzuzeigen, die von Natur aus ASYNCHRONOUS ist, und wurde dafür diskriminiert, indem ich sagte, dass ich die Dinge komplex gemacht habe und dass Kunden Seiten mit POSTBACK nicht bemerken würden. (Ich vermute, dass sie so sehr daran gewöhnt sind, die Nischensprache in einer POSTBACK-Manier zu entwickeln, dass sie sich nicht die Mühe machen wollen, über Asynchronität zu lernen.)

D. Kein Softwareentwicklungsplan, und Standard des Managements ist, dass (Sie machen dieses Projekt 3 Monate lang) ohne den Anschein eines Plans. Kein Einsatz von AGILE oder SCRUM. Und das Ergebnis ist, dass zum Zeitpunkt der Präsentation MEHR Anforderungen hinzugefügt werden, die das aktuelle Setup der Lösung durcheinander bringen, wobei Ihnen die vorgegebene Zeit, Dinge zu ändern, nur 3-4 Tage beträgt, WEIL das Management dies für eine kleine Änderung hält.)

Wie auch immer die Sprache für eine Nische sein mag ( Hinweis ), ich dachte, sie könnte gerettet werden, wenn wir unsere Entwicklungstechniken ändern. Das Problem ist, dass die Entwickler, mit denen ich derzeit arbeite, keines der bestehenden Probleme beheben wollen und sich auf diese Weise weiterentwickeln. Sie werden immer noch nicht dokumentieren, sie werden immer noch Code erstellen, der von Natur aus nicht SOLID ist, sie werden immer noch nicht studieren, wie AJAX ist, selbst wenn es mit jQUEry so einfach ist (und ich habe ihnen gezeigt, wie es damit gemacht werden könnte die besagte Nischensprache.) und sie zeigen keinen Wunsch, eine Softwareentwicklungsplanung zu betreiben, sondern diskriminieren die Idee selbst ("ein guter Programmierer muss sich anpassen", sagen sie. Ich sage: "Ich werde nie wissen, was Sie genau von mir erwarten, es sei denn sagst du mir, was das ist")

Ich vermute, dass sie sich aufgrund der zusätzlichen Arbeit und Mühe bei der Anwendung all dieser nicht anpassen wollen und dass alles, was sie tun, funktioniert. Infolgedessen stecken wir mit einem System fest, das von Zeit zu Zeit ausfällt (jeden Tag gibt es einen Ausfall), und wir werden aufgefordert, es zu unterstützen.

Meine Frage ist, wie kann ich ihnen klar machen, dass diese Techniken nicht nur zusätzliche Arbeit sind, sondern letztendlich dem Team zugute kommen? Kann man eine so tief verwurzelte Kultur verändern? oder sollte ich letztendlich einfach gehen, da ich das Gefühl habe, dass dies eine schlechte Erfahrung ist, die in meinen Lebenslauf aufgenommen werden sollte (nicht in der Lage, moderne Entwicklungsstrategien zu ändern oder anzuwenden, schlechte Praxis, zu Nischentechnologie, die für bessere verschrottet werden sollte)?

Diese und diese Frage hängen zusammen , aber es gibt Unterschiede: A. Ich bin auf einer „Supervisory“-Ebene, aber alle anderen in meinem Team sind es auch. Es mag albern klingen, aber es ist wahr. Ich habe keine Leute unter mir. Wir haben einen Manager über uns, dem ich folgen muss.

B. Ich bin herzlich mit dem Team, ich verstehe mich gut mit jedem anderen Gespräch. aber bei solchen dingen wird das thema oft verdrängt/abgelehnt (was mich jeden tag aufs neue deprimiert und demotiviert).

C. Ich habe niemanden dafür beleidigt, wie er codiert, ich versuche sogar, ihn ein wenig zu loben („Wow, das ist eine gute Methode, die du da gemacht hast“) und versuche dann, ihm einen Rat zu geben („Was wäre, wenn wir uns beschäftigen Abhängigkeitsinjektion, damit diese Methode wieder verwendet werden kann für ..."), aber ich werde meistens belächelt und dann wird das Thema abgetan.

Diese Frage ist auch verwandt, aber ich bin am anderen Ende des Fragestellers. Ich "will" die Ideen dieses Chefs unterstützen, der die Idee vorschlägt (wenn er ein Kollege wäre)

@JoeStrazzere Ich habe vor, ihnen zuerst zu danken und ihnen zu sagen, dass ich viel gelernt habe und dass ich glaube, dass meine derzeitigen Praktiken nicht zum Team passen. Ist das akzeptabel? oder wirke ich arrogant?
@JoeStrazzere Ich werde versuchen, die folgenden Punkte, die ich in diesem Beitrag gemacht habe, zu wiederholen. Ah, verstehe, wird das so klingen, als würde ich schlecht reden?
"Infolgedessen stecken wir mit einem System fest, das hin und wieder ausfällt" - Dann schlagen Sie Änderungen vor, die dies direkt ansprechen. Die Dinge, die Sie erwähnt haben, wie SOLID-Prinzipien, das Umbenennen einer Klasse in "JBFX" in "SEARCH" usw., beziehen sich nicht auf die Zuverlässigkeit. AJAX befasst sich mit der Benutzererfahrung, nicht mit der Zuverlässigkeit. AJAX kann sogar die Zuverlässigkeit verringern, wenn Clients eine schlechte Verbindung haben. Die SQL-Abfragen sind möglicherweise anfällig für SQL-Injection, aber dies sollte als Sicherheitsproblem betrachtet werden, unabhängig von dem, was Sie derzeit beschreiben.
Um Brandins Kommentar hinzuzufügen, können Sie die neuesten Technologien perfekt nutzen und haben immer noch ein schreckliches System, das jeden Tag Probleme hat.
Ein Unternehmen, das keine agile Entwicklung einsetzt, ist kein Fehler. Das klingt, als ob Sie in Ihren Wegen feststecken würden.
Dies ist die EINZELNE AM MEISTEN DOPPELTE Frage auf der Website.
Sie haben vielleicht eine starke Meinung darüber, was Best Practice ist, aber Sie müssen auch lernen, zu schätzen, was „gut genug“ ist – da dies in der Regel das ist, was die Leute, die Sie bezahlen, interessieren. Ein Jobwechsel wird daran nichts ändern.
Äh, das sind ganz andere Situationen @Fattie
@MartinTournoij , ich habe vielleicht nicht das beste Duplikat ausgewählt, aber etwa 5 % aller Fragen auf der Website lauten: „Als neuer Programmierer bin ich schockiert, schockiert über die geringe Qualität von Softwareentwicklung / Dokumentation / Ausrüstung / Planung / Manager / etc ..."
Äh, okay @Fattie. Ich denke, 5% sind ein bisschen viel und entsprechen nicht meinen Beobachtungen, aber ich war seit ein paar Monaten nicht mehr hier. In jedem Fall ist es keine gute Lösung, Fragen als doppelt zu markieren, wenn dies nicht der Fall ist. Denken Sie daran, dass ein „Duplikat“ vorliegt, wenn ALLE Antworten auf beide Fragen gut auf beide Antworten zutreffen. Wenn ich eine Antwort geben kann, die nur auf eine der Fragen zutrifft, dann ist sie verwandt, aber KEIN Duplikat. Ich sehe, dass viel zu viel Zeug geschlossen wird, weil die Fragen ungefähr ähnlich sind, sich aber in Details unterscheiden. Details sind bei solchen Fragen sehr wichtig und können die Antworten radikal verändern.
1) Sie sind in Ihrem Arbeitsumfeld nicht glücklich. 2) Ihre Arbeitsumgebung wird sich nicht ändern. 3) Wie lange möchten Sie unglücklich bleiben?

Antworten (4)

Ich sehe eine Menge Verwirrung zwischen „Best Practices“ und „Ich denke, das ist der beste Weg, Dinge zu tun“. Eine informierte und vernünftige Person könnte vielen der von Ihnen angesprochenen Punkte widersprechen.

Ihre Kollegen haben Recht, wenn sie sagen, dass die asynchrone Ajax-Programmierung schwierig ist und viel Komplexität hinzufügt. Sie haben auch Recht, wenn Sie sagen, dass die asynchrone Ajax-Programmierung einem System viel Wert verleihen kann. Hier liegt niemand nachweislich „falsch“; Es ist nur eine Frage der Vorlieben und Prioritäten.

Ich schlage vor, dass Sie sich etwas mehr Zeit nehmen, um zu verstehen, warum die Dinge so sind, wie sie sind, denn ehrlich gesagt scheint der Text Ihrer Frage nicht viel Verständnis für die Positionen Ihrer Kollegen zu zeigen. Ihre Kollegen sind vielleicht „tief verwurzelt“ in ihrer Art, Dinge zu tun, aber haben Sie daran gedacht, dass Sie möglicherweise auch „tief verwurzelt“ in Ihrer Art sind, Dinge zu tun? Es gibt mehr Möglichkeiten, einer Katze das Fell zu entziehen, und es gibt mehr als einen Weg, gute Software zu entwickeln.

Wenn Sie etwas ändern möchten, können Sie nur erklären, welche Vorteile „Technik X“ gegenüber „Technik Y“ haben könnte. Zeigen Sie, wie Entwicklerzeit eingespart, die Stabilität verbessert oder ein anderer konkreter Unternehmensvorteil aufgezeigt werden kann. Erwähnen Sie keine Dinge wie „Best Practices“, „besser für das Team“ oder gar „eleganter“. Sie werden niemanden überzeugen. Es ist wichtig, pragmatisch zu sein; du erschaffst kein Kunstwerk, du erschaffst ein Werkzeug, um Probleme zu lösen.

Es hört sich so an, als hättest du das schon versucht und bist jedes Mal gescheitert. Es sieht so aus, als müssten Sie sich entscheiden, ob Sie mehr versuchen, bleiben und es "aufsaugen" oder entscheiden müssen, dass Sie nicht gut in dieses Team passen, und weitermachen.

Ich vermute, dass sie sich aufgrund der zusätzlichen Arbeit und Mühe bei der Anwendung all dieser nicht anpassen wollen und dass alles, was sie tun, funktioniert. Infolgedessen stecken wir mit einem System fest, das von Zeit zu Zeit ausfällt (jeden Tag gibt es einen Ausfall), und wir werden aufgefordert, es zu unterstützen.

Das klingt nicht allzu gut, aber je mehr Sie ändern, desto mehr Fehler werden Sie bekommen. Es gibt einen Grund, warum Banken immer noch COBOL betreiben und Kernkraftwerke immer noch auf PDP-11-Montage laufen.

aber was ist, wenn die Art und Weise, wie sie Dinge tun, die „tief verwurzelt“ sind, direkt gegen bewährte Theorien wie SOLID verstoßen?
@AConcernedProgrammer "Disobey SOLID" ist sehr vage; das ist also nicht wirklich etwas, worauf ich konkret antworten kann. Ich kann sagen, dass Menschen schon viele Jahrzehnte erfolgreich Qualitätssoftware geschrieben haben, bevor SOLID formuliert wurde. Außerdem ist SOLID meines Wissens nach nicht „bewiesen“ im Sinne von „empirischer Evidenz“. Es mag „bewiesen haben, dass es für mich gut funktioniert“, aber das ist nicht dasselbe. Ich stimme zu, dass SOLID eine gute Sache ist, aber ich stimme nicht zu, dass jedes Entwicklerteam, das "SOLID nicht gehorcht", einen Tritt in den Hintern braucht, um sofort damit zu beginnen, "SOLID zu gehorchen". Es gibt mehr als eine Möglichkeit, eine Katze zu häuten.
Wenn ich weiterziehe, wie wirkt sich das auf meinen Lebenslauf aus? negativ?
Warum sollte es @AConcernedProgrammer sein? Reden Sie nur nicht über Ihren vorherigen Arbeitgeber, wenn Sie gefragt werden, warum Sie gehen möchten (Sie könnten etwas sagen wie „tolle Leute, aber anderer Entwicklungsansatz als ich es gewohnt bin“ oder „passt nicht ins Team“).
Gute Antwort. Ich sehe heutzutage viele Entwickler, die gerne alles neu schreiben würden, um es solide oder asyc zu haben, was dem Produkt keinen Wert bringt. Setzen Sie die Abhängigkeitsinjektion, um nur eine Klasseninstanz usw. einzufügen. Gute Antwort.
Diese. Wenn Sie etwas ändern wollen – insbesondere bei erfahrenen Entwicklern – müssen Sie dann NACHWEISEN, dass Ihr Vorschlag eine Verbesserung darstellt. Leider können sie auch NACHWEISEN, dass sie es bereits in Betracht gezogen haben, und Ihnen sagen, warum sie es nicht angepasst haben. Recherchieren Sie – Sie bekommen nur ein paar Versuche davon, bevor sie dieses Spiel nicht mehr spielen wollen.

Ich werde versuchen, jede Praxis anzusprechen, die Sie erwähnen:

A) Ja, das ist eine schlechte Praxis, aber es ist auch eine leider übliche. Es lohnt sich nicht, seinen Job aufzugeben

B) Es könnte legitime Gründe für dieses Design geben. Auch wenn es bezüglich der SQL-Einschleusung einen Streit geben mag, ist dieser Punkt im Grunde strittig, wenn das Webentwicklerteam seine grundlegenden Hausaufgaben gemacht hat und jeden Befehl, auf den es stößt, ordnungsgemäß filtert.

Ich kann sicherlich verstehen, warum sie möglicherweise unterschiedliche Server für verschiedene Länder haben, da verschiedene Länder aus einem möglichen Grund unterschiedliche IT-Gesetze haben, von denen viele miteinander in Konflikt stehen, und es für einen einheitlichen fast unmöglich (oder unglaublich kompliziert) sein kann Server mit allen konform zu sein.

C) Ist Ihre Art, Dinge zu tun, eine Verbesserung oder nur eine andere Art, Dinge zu tun? Was ist eigentlich falsch an dem, was sie tun?

D) Was macht Sie so sicher, dass es keinen Plan oder keine Methodik gibt? AGILE und SCRUM sind nicht das A und O der Softwareentwicklungsprozesse. Und obwohl ich verstehe, dass einige Führungskräfte versuchen werden, strenge Zeitbeschränkungen für ein neues Feature festzulegen, das sie für nachsichtig halten, liegt es an Ihnen als Experte, auf die Schwierigkeiten hinzuweisen und darauf hinzuweisen, dass Sie möglicherweise mehr Zeit benötigen. Sofern Ihre Führungskräfte keine persönliche Programmiererfahrung haben, werden Sie an jedem Arbeitsplatz häufig darauf stoßen.

Verstehen Sie mich jetzt nicht falsch, Ihre Vorgehensweise kann einen objektiven Nutzen haben oder auch nicht. Ich weiß es nicht, da ich ein Solo-Programmierer und kein Profi bin. Und Menschen, die sich Ihrer Arbeitsweise nicht wirklich bewusst sind, kennen möglicherweise nicht die Vorteile, die sie mit sich bringen. Umgekehrt kann es Menschen geben, die zwar Ihre Arbeitsweise kennen, sich aber auch der Nachteile bewusst sind, die Sie nicht kennen.

Schließlich ist das Umschalten der grundlegenden Funktionsweise eines Programms von einem Weg zum anderen fast immer eine ernsthafte harte Arbeit. Dies gilt wahrscheinlich doppelt für professionelle Arbeit, da es bedeutet, dass möglicherweise neue Fehler eingeführt werden und sowohl Programmierer als auch Tester Überstunden machen. Sie brauchen einen wirklich guten Business Case (z. B.: Die Leistung auf Client oder Server wird ernsthaft und sehr merklich verbessert, ermöglicht es dem Unternehmen, ein starkes Alleinstellungsmerkmal zu entwickeln, Sie verstehen die Idee), um dies zu rechtfertigen

ein Unternehmen, das eine Nischen-Programmiersprache verwendet

Von hier aus sehe ich ein Problem, dass Sie dieses Wort oft wiederholen. Es scheint, dass Sie sich mit dem Stapel, mit dem Sie arbeiten, nicht wohl fühlen. Wenn diese Technologie nicht Ihren Wünschen entspricht, und Praktiken, die Sie nicht mögen, wird dies eine wirklich schlechte oder ermüdende Erfahrung sein und ich vorschlagen, einen Job mit Ihrer gewünschten Technologie zu finden. Was Sie über SQL-Injektionen gesagt haben, ist eine wirklich schlechte Praxis. Alle Logik sollte so weit wie möglich in gespeicherte Prozeduren eingefügt werden. Dies gilt für jeden Stapel.

Der Rest Ihrer Frage klingt auch so, als ob Sie diese Technologie beherrschen, oder? Wenn ja, dann ist es sinnlos, mit Technologie zu arbeiten, die Sie bereits beherrschen, wenn Sie zu einem neuen Job wechseln. Ich glaube, Lernen ist wichtiger als das Streben nach einer höheren Bezahlung

Meine Frage ist, wie kann ich sie dazu bringen, das Licht zu sehen

Sie können nicht, es gibt einen Grund, warum sie das so machen, und es kostet Geld, Lieferungen zu verzögern, und es ist eine schlechte Idee, zu versuchen, Ihre Praktiken in sie hineinzudrücken, selbst wenn Sie geleitet werden, oder PM, es wäre eine schmerzhafte Erfahrung für alle, Wenn Sie mit einem neuen Team arbeiten, müssen Sie sich an das Team und Ihren Vorgesetzten anpassen

So sehe ich die Dinge:
- Wenn Sie die Technologie beherrschen, dann ist es eine mögliche Sackgasse, dann sollten Sie sich an einem bequemen Arbeitsplatz mit Praktiken befinden, die Ihnen Spaß machen.
- Wenn Ihr neuer Job Technologie verwendet, die Sie lernen möchten, die es Ihnen ermöglicht, höher zu kommen bezahlen, dann glaube ich, dass es in Ordnung ist, ein wenig zu opfern, wie z. B. schlechte Praktiken, veraltete Modelle oder eventuell auftretende Fehlfunktionen. Ich persönlich würde sogar weniger bezahlen, wenn sie mit Technologien arbeiten, die ich lernen möchte

Ich muss zustimmen, dass viele Leute in der Softwarebranche „Best Practices“ mit absoluter Programmierung verwechseln. Best Practice ist eine Grundierung, aber wenn Ihr Team mit dem einverstanden ist, was jetzt gilt, dann ist das gut genug. Wenn Sie neu in der Organisation sind, werden Ihre Vorschläge als unnötig angesehen, insbesondere wenn Sie Hilfe beim "Navigieren" des Codes benötigen. Sie werden nur als schwer zu bearbeiten angesehen.

Nur zeigen, dass Seiten mit "Best Practice" so funktionieren, wie es ist, aber kein zusätzlicher Nutzen, außer viel Arbeit, wird als unnötig angesehen. Stellen Sie sich vor, Sie rufen einen Maler an und er sagt, Ihre Wand ist schwer zu bearbeiten, aber er zeigt Ihnen ein Stück Sperrholz, das er bei Homedepot gekauft hat, und wie einfach es ist, damit zu streichen. Würden Sie zustimmen, dass der Maler Ihre gesamten Wände abreißt, um einen frischen Anstrich aufzutragen, wenn Sie wissen, dass jemand anderes mit der Wand arbeiten kann, die Sie derzeit haben?

Sie müssen sich daran erinnern, dass es ist:

  1. Es funktioniert derzeit.
  2. Es wird einige Zeit in Anspruch nehmen, Legacy-Code mit den aktuellen „Best Practices“ der Branche zu aktualisieren.
  3. Sie sind noch nicht in der Lage, selbstständig zu arbeiten. Möglicherweise verstehen Sie ihren Code nicht, also gehen Sie davon aus, dass sie Best Practices benötigen, nur um Ihnen die Arbeit zu erleichtern. Zu lernen, wie man mit Legacy-Code oder vorhandenem Code arbeitet, ist ein großes Plus und eine Fertigkeit, die frischen Absolventen schwer zu vermitteln ist.