(Karriere) Ich kann aufgrund des Paradigmas (oder der Teams) nicht produktiv sein - Job wechseln [geschlossen]

Kontextualisierung:

Hallo, ich bin 25 Jahre alt und arbeite seit 8 Jahren als Freiberufler. Ich habe hauptsächlich mit Stacks gearbeitet: NodeJS , React, React Native und mit TypeScript als Stack-Superset. Programmieren hat mir schon immer gefallen, und ich habe immer Sprachen studiert wie: "C/C++/Rust/Go, Java/C#, Haskell, Python/Ruby, Elixir/Erlang, Clojure, Scala, Elm, PureScript.. . . " (obwohl ich nicht professionell darin programmiert habe, aber ich habe immer gelernt, einige persönliche Projekte zu machen). Obwohl ich ein Generalist bin (weil ich Freiberufler bin), habe ich es immer gemocht, meine Arbeit auf die beste Art und Weise zu liefern, mit sauberem, einfachem und skalierbarem Code.

Problem:

In diesem Jahr habe ich das Leben als Freiberufler „ausgelassen“ und bin in den kaufmännischen Bereich eingestiegen. Ich fing an, mit anderen Leuten zu arbeiten und bekam viele „Kopfschmerzen“, die Arbeit anderer zu verstehen (wir verwenden NODEJS), hauptsächlich weil es Teams gibt, die Vanilla JavaScript verwenden, andere TypeScript, einige tun es auf OO-Weise und andere funktionaler. .und das ist schrecklich für mich. Obwohl ich kein großer Fan von Java (und OO) bin, denke ich zumindest, dass es organisierter ist, da sie einem strengen Muster folgen, das vollständig objektorientiert ist (oder theoretisch sollte es sein, nachdem Java 8 Lambdas eingeführt hat).

Fragen:

Obwohl ich eine leitende Position im Unternehmen habe, mache ich mir manchmal Sorgen, dass ich nicht mein Bestes gebe. Ich weiß nicht, ob es an der Gewohnheit liegt oder ob die Arbeit in einem Team mit OO und gemischten Paradigmen (insbesondere in JS) wirklich ein Chaos ist.

Ich studiere seit langem funktionale Programmierung und möchte WIRKLICH den Job wechseln, um an einer funktionaleren Sprache (wie Clojure oder Elixir) zu arbeiten, weil ich Code viel besser verstehen kann als eine OO-Abstraktion. (Oder zumindest schlechten Code vermeiden, denke ich)

Irgendwelche Tipps für mich? Danke!

Verstehe, dass du dich wirklich einschränkst. In der Wissenschaft werden häufig funktionale Sprachen und Paradigmen verwendet. In der realen Welt zerstörte OO funktional. 99 % der Jobs werden ein OO-Paradigma verwenden. Ich wechsele total den Job, weil ich die Sprache oder die Tools nicht mag (das hat mit meinem kürzlichen Jobwechsel zu tun), aber kein OO zu bekommen, ist etwas, an dem Sie arbeiten sollten. Sie werden es in dieser Karriere nicht vermeiden.
Ich habe mich schwer getan, das so freundlich wie möglich zu sagen; Aber sind Sie angesichts der Zeit, die Sie in der Branche verbringen, sicher, dass Sie Ihre Sprache beherrschen? Es kann Jahre dauern, bis man mit einer Lösung nicht vollständig zufrieden ist, um bessere Lösungsmuster für Probleme zu finden. Wie können Sie die neuen Sprachen wirklich einschätzen, wenn Sie bedenken, dass Sie sich in dieser Wirbelwindphase befinden, in der Sie „alle Vorteile“ und „keinen der Nachteile“ von Lambda-Sprachen sehen, beschränken Sie sich nicht genug, um das wirklich große Durcheinander zu verhindern. Du entdeckst, dass dein sauberes Denken nicht so sauber ist, wie es hätte sein sollen.

Antworten (2)

Ich denke, es ist organisierter, da sie einem strengen Muster folgen, das vollständig objektorientiert ist (oder theoretisch sollte es sein, nachdem Java 8 Lambdas eingeführt hat).

Bei einem Satz wie diesem frage ich mich, ob Sie wissen, wovon Sie sprechen. Objektorientierung ist ein Grundnahrungsmittel in Java, aber Lambdas sind kein Teil der Objektorientierung, sondern Teil von Lambda Based Calculus, das oft mit Lisp oder Scheme verwandt ist, Sprachen, denen im Allgemeinen Objekte fehlen (es sei denn, Sie entscheiden sich dafür, sie mit nicht-nativen Mitteln zu implementieren ).

Ich bin bereit zu sagen, dass ein gemischtes Paradigma der Programmierung schwieriger ist als ein einzelnes Paradigma, aber ehrlich gesagt ist JavaScript auch objektorientiert, also frage ich mich, wo der Paradigmenmix seinen Platz findet.

Ich freue mich zu hören, dass Sie Lambda-basierte Sprachen studieren und dass Sie sie mögen; aber um ehrlich zu sein, werden Sie wahrscheinlich nicht effektiv sein, bis Sie Ihre Zeit investieren. Es dauert Jahre in einer Sprache, um von „in der Lage zu sein, Dinge zu tun“ zu „sehr gut darin zu sein, Dinge zu tun“.

Was Lambda Calculus betrifft, das dabei hilft, "schlechten Code zu vermeiden", gibt es noch mehr schlechte Nachrichten. Der ursprüngliche "schlechte Code" wurde in den 60er Jahren auf Lisp-Maschinen zurückgeschrieben. Schlechter Code existiert in jedem Paradim, und auf der Lambda Calculus-Skala kann ein Fehltritt bedeuten, „dieses Lambda zu reparieren“ oder „alle Lambdas neu zu schreiben“, je nachdem, wie sich die Korrektur in die Codebasis einfügt. Es gibt Gründe, warum diese Sprachgruppe vom „Besitzer der meisten Programme“ in eine Nische übergegangen ist und nur langsam wieder an Boden gewinnt.

Also ich würde bremsen. Vielleicht bist du wirklich da, wo du denkst, dass du bist; Aber mit der Art von Fehlern in Ihrer eigenen Frage und den Fehlern, die neue Sprachen bieten können, denke ich, dass Sie gesegnet sind, in einer leitenden Position zu sein (und in Ihrem Bereich sind Sie wahrscheinlich auf einer höheren Ebene tätig). ), aber außerhalb deiner Nische bist du etwas zu selbstsicher.

Nimm dir etwas Zeit und lerne dann neue Sachen. Die Beherrschung von mehr als einer Nische braucht Zeit und bringt Vorteile, die schwer zu messen sind. Ich denke, es lohnt sich. Ich denke nur (keine Beweise für mich, um es zu untermauern), dass Sie das neue Zeug überfliegen, desillusioniert werden und dann das Schiff verlassen, bevor Sie das Material wirklich kennenlernen. In ein paar Monaten werden Sie vielleicht Lambdas fallen lassen und zum nächsten nicht wirklich gemeisterten coolen Gegenstand übergehen. In jedem Fall viel Glück!

Hey, danke für die Antwort! Mit dem Lambda von Java 8 meinte ich das: "Nicht das aktuelle Java ist zu 100% objektorientiert", weil sie Lambda (das funktionsfähig ist) aus Version 8 eingeführt haben", ich denke, es war mein Schreibfehler, der Sie zu einer Fehlinterpretation verleitet, sorry .
JavaScript ist nicht objektorientiert, ich meine, derzeit mit ES6 ja, aber es ist ursprünglich prototyporientiert. Bezüglich der Mischung von Paradigmen in den Projekten (die ich kommentiert habe): Ich habe mich nicht auf dasselbe Projekt bezogen! Denn hier verwenden wir JS für viele Dinge, und einige Teams führen einige Projekte in reinem JS aus, andere bevorzugen die Verwendung von TypeScript, andere verwenden ein funktionales JS (RamdaJS), und wenn ich den Projekten anderer helfe, „mische“ ich gewissermaßen. das Paradigma. Jedenfalls meinte ich das :)
Ja, es gibt Probleme und schlechten Code in allen Sprachen, so viel weiß ich. Aber ich habe auf Folgendes verwiesen: Es ist einfacher, sich in OO zu irren als in etwas Funktionalem (Neulingsmeinung), weil es einfacher zu verstehen ist.
Wie auch immer, wie gesagt, ich wollte nur einen Weg, besseren und einfacher zu wartenden Code zu bauen, also fragte ich hier, da ich keine Erfahrung mit funktional habe, wollte ich die Meinung derer, die von OO zu funktional gewechselt haben, wissen, wie der Übergang ist War . Ich habe mir sogar Stellenangebote hier angesehen: Functional.works-hub.com jobs.braveclojure.com (Clojure war nur ein funktionales Beispiel, es könnte auch Haskell oder Elixir sein) trotzdem danke für deine Zeit
@srluccasonline Ah ja. Ich habe auch oft Dinge getippt, die sich nicht gut lesen ließen. Ich sehe, Sie haben die Frage bearbeitet, ich werde meine auch aktualisieren. Das heißt, es gibt eine Menge Objektorientierung, die ich erst nach Jahren in diesem Paradigma glatt gebügelt habe. Ich kann auch sagen, dass Sie keinen wirklich chaotischen Code gesehen haben, bis Sie Ihr erstes großes Programm in Lambda-basierten Kalkülen haben. Lambda hilft Ihnen, die von Ihnen erzwungene Struktur beizubehalten, aber es kann so gut oder so schlecht sein wie Ihre eigene Fähigkeit, Disziplin in Ihrem Code durchzusetzen. Im Grunde genommen ist es mit Lambda so gut (oder schlecht), wie Sie nur sein können.
@srluccasonline - Java wurde schon immer als objektorientierte Sprache betrachtet. Wenn etwas an Ihrer Frage unklar ist, sollten Sie sie bearbeiten, anstatt einen Kommentar einzureichen, in dem Sie bestätigen, dass etwas unklar war, und dies in einem temporären Kommentar klären
@srluccasonline Zusätzlich zu Donalds Kommentaren zu Java ist JavaScript weithin als objektorientiert bekannt. Es ist schwer, eine Referenz zu finden, die nicht besagt: „JavaScript ist eine auf Prototypen basierende objektorientierte Sprache“.

In der Fachwelt ist die objektorientierte Programmierung das am weitesten verbreitete Paradigma, aber realistisch gesehen ist die meiste moderne Softwareentwicklung multi-paradigmatisch . Ich würde empfehlen, Ihr Verständnis des objektorientierten Paradigmas zu erweitern, um Ihr Wissen über das funktionale Paradigma zu ergänzen, aber es gibt kein Paradigma, das alle beherrscht.

Und alle Versuche, „ein Paradigma zu haben, um sie alle zu beherrschen“, enden oft damit, dass „die Dunkelheit sie bindet“ – das Projekt scheitert oder die Komplexität übernimmt, da das Paradigma verbogen wird, um sich mit den Problemen der realen Welt zu befassen.