Ich arbeite seit 4 Jahren mit Javascript. Ich bin sehr zuversichtlich, was meine Problemlösungsfähigkeiten angeht, und ich kann feststellen, dass sich meine Codequalität verbessert. Ich versuche mit der Community auf dem Laufenden zu bleiben und arbeite derzeit mit ES2015 und React.js. Ich habe jedoch das Gefühl, dass ich Programmiermuster überhaupt nicht verstehen kann. Ich weiß, wo ich Ressourcen dazu finden kann, und ich habe bereits Bücher darüber gelesen. Ich verlasse mich auf meine älteren Kollegen, um Entscheidungen über die Projektstruktur zu treffen, aber ich habe kein Problem damit, daran zu arbeiten.
Wann immer ich etwas alleine anfangen muss, suche ich nach diesen zwei Wegen: Wenn ich eine große Bibliothek / ein Framework wie React.js verwende, neige ich dazu, zu kopieren, was die Community tut; Wenn ich auf etwas kleinerem bin, verwende ich das Modulmuster. Ich weiß, dass ich, sobald ich dieses Thema besser verstanden habe, bessere Entscheidungen treffen kann, aber im Moment bin ich völlig verloren.
Soll ich mich in diesem Bereich weiterbilden? Benötige ich einen Mentor zu diesem Thema? Bin ich nur dumm? Ist das wirklich so schwer zu verstehen?
quelle
Antworten:
Software Design Patterns sind bekannte Lösungen für bekannte Probleme. Sie verstehen sie, indem Sie die Muster lernen, verstehen, wie sie funktionieren, und wissen, wann es angebracht ist, jedes auf Ihr Software-Design anzuwenden.
Die Art und Weise, wie Sie Software-Design-Muster lernen, besteht darin, sie einzeln zu studieren. Es ist ein kontinuierlicher Bildungsprozess. Wenn Sie den Lernfussabdruck verringern möchten, untersuchen Sie die Muster, die sich direkt auf die derzeit verwendeten Technologien beziehen.
Einige wichtige Informationen zu Entwurfsmustern:
Einige Designmuster sind architektonischer Natur. MVC und MVVM sind Beispiele für solche Muster. Sie verwenden solche Muster, wenn Sie die organisatorischen und strukturellen Vorteile benötigen, die sie bieten.
Einige Entwurfsmuster sind Problemumgehungen für Mängel in Programmiersprachen. Sie brauchen diese Muster nicht, wenn Sie eine ausdrucksstärkere Programmiersprache verwenden, aber oft müssen Sie diese Wahl nicht treffen. Eine Mehrheit der GoF - Muster sind in dieser Kategorie .
Verwenden Sie ein Softwaremuster nur, wenn Sie versuchen , das Problem zu lösen, für das das Muster speziell entwickelt wurde. Wenn Sie eine Anwendung schreiben, indem Sie Softwaremuster zusammenfügen, machen Sie es falsch.
Es gibt nicht für jedes vorhandene Computerproblem ein vorhandenes Softwaremuster. Wäre dies der Fall, wäre die Programmierung lediglich eine Übung zur Mustererkennung.
Einige Muster sind eigentlich Anti-Muster. Die zusätzliche Komplexität, die diese Muster mit sich bringen, überwiegt die Vorteile, die sie bieten. Sie müssen Muster für Muster selbst entscheiden, welches dieser Muster Sie vermeiden möchten.
quelle
Jeder lernt ein bisschen anders, und ich habe keine Ahnung, wie Sie allgemein vorgehen, aber ich glaube, Sie tun sich selbst einen schlechten Dienst, indem Sie sich als "dumm" bezeichnen.
Persönlich haben aus meinen Beobachtungen, die viele als "erfolgreiche" Software-Ingenieure, Designer usw. bezeichnen, alle ein gemeinsames Thema für ihr Lernen: "Erfahrung". Ich glaube, dies ist Ihre "überlegene Ausbildung" und Sie werden schneller daraus lernen, als Tonnen von Büchern bei Amazon zu kaufen und sie durchzulesen (eine schlechte Angewohnheit von mir).
Nehmen Sie zum Beispiel ein GOF-Muster wie das Befehlsmuster und implementieren Sie es in der von Ihnen gewählten Sprache. Verstehen Sie, welche Vorteile es Ihnen und den Nachteilen gibt. Die verschiedenen Bücher über Entwurfsmuster werden Ihnen dies erklären, aber ich halte es für besser, dieses Wissen praktisch anzuwenden und daraus zu lernen. Lassen Sie sich keine Lektüre vorenthalten, sie haben einen Zweck, aber die Welt der IT ist kaum eine Lehrbuchübung. Davon abgesehen ist dies meine Meinung und Sichtweise der IT-Welt und stellt zum Teil eigene Probleme dar, als ich meine Karriere im Bereich Software Engineering begann. Ein großes Problem, das ich auch bei sehr erfahrenen Software-Entwicklern sehe, ist die Ungeduld und das Vergessen, Spaß an dem zu haben, was sie tun. Nehmen Sie sich also Zeit für das, was Sie gelernt haben, und denken Sie daran, Spaß daran zu haben, was Sie tun. Warum sollten Sie sich sonst die Mühe machen, Zeit dafür zu investieren?
Nutzen Sie außerdem die praktischen Erfahrungen anderer. Es gibt eine Vielzahl von guten und schlechten Open Source-Lösungen, von denen Sie lernen können. Sehen Sie sich an, wie sie Muster angewendet haben, und überlegen Sie, wie Sie es anders angehen würden.
Mein allgemeiner Rat lautet also: Wenn Sie der Meinung sind, dass Ihr Ansatz falsch ist, ändern Sie ihn. Schauen Sie sich die Menschen in Ihrer Umgebung an, die das Material lernen, das Sie nicht verstehen, und schauen Sie sich an, was sie tun, oder fragen Sie sie sogar.
quelle
Die kurze Antwort ist, dass Sie sie nicht brauchen . Sie können Code ohne sie schreiben. Wie Matthew in den Kommentaren sagte, gilt dies insbesondere für JavaScript, wo die Sprache sehr flexibel ist und Projekte in der Regel kleiner sind. Aber wenn Sie seit 4 Jahren programmieren, fällt es mir schwer zu glauben, dass Sie nicht über Dinge gestolpert sind, die sich wiederholt oder unangenehm anfühlen. Es sind jene Bereiche, die Sie entweder neu entdecken oder denen Entwurfsmuster fehlen.
Beispiel: Das Ereignissystem von JavaScript ist für die jeweilige Aufgabe häufig nicht ausreichend. Finden sich Sie nicht immer kombinieren oder zu transformieren zu können , wollen Ströme der Ereignisse? Oder waren diese Veranstaltungsreihen selbst erstklassige Werte? Sie benötigen die Muster Mediator und / oder Observer. Benötigen Sie eine bidirektionale Datenbindung? Die gleiche Geschichte.
Spröde Prototyphierarchie kaputt? Mixin / Trait / Subclass Factory Patterns zur Rettung.
quelle
Finden Sie einen Mentor, von dem Sie lernen können. Stellen Sie ihm die Frage, beobachten Sie seinen Code, senden Sie eine Codeüberprüfung und versuchen Sie, mit ihm zusammenzuarbeiten. Dies ist der beste Weg, um Ihre Codierungsfähigkeiten zu verbessern.
extra:
Arbeiten Sie an einem einfachen OSS-Projekt zusammen, das Ihnen gefällt
Wenn es zwei Möglichkeiten gibt, das gleiche Problem zu lösen, wählen Sie immer die einfachere
Bauen Sie einige zusätzliche Erfahrungen mit Nebenprojekten auf, bei denen Sie alle Arten von seltsamen Fehlern ausführen können, und lernen Sie das Entwurfsmuster "auf die harte Tour" (tm).
quelle