Ich denke, das ist ein sehr positives Zeichen Ihrer Fähigkeiten. Es kommt weitaus häufiger vor, dass Menschen, die Schwierigkeiten haben, im Team ein „besseres“ Design zu entwickeln, überhaupt nicht erkennen können, warum ein anderes Design besser ist.
Sie haben zwei wirklich große (und überraschend ungewöhnliche) Stärken:
- Sie sind in der Lage, Ihre Entwürfe objektiv gegen andere zu beurteilen
- Sie haben den Wunsch und die Mühe, Ihre Entwürfe optimal zu gestalten
Sie sind erst ein paar Jahre alt und haben noch einen langen Weg vor sich, aber mit dieser Einstellung werden Sie auf jeden Fall dorthin gelangen. Geben Sie einfach nicht auf. wir alle haben es mit solchen mentalen Rückschlägen zu tun. So oft ich die Chance bekomme, stecke ich Design Principles (NICHT das Gleiche wie Design Patterns) ein, und ich denke, dies ist ein perfektes Beispiel dafür, wo sie nützlich sind. Studieren Sie sie und üben Sie, sie in Ihren Entwürfen anzuwenden, bevor Sie wissen, dass sie in dieser Hinsicht einen weiteren Schritt nach vorne gemacht haben.
Denken Sie am Ende des Tages daran, dass das Entwerfen schwierig ist. Wir haben es jeden Tag mit komplexen Abstraktionen auf hoher Ebene zu tun, diese aus dem Nichts zu erstellen, sie gut funktionieren zu lassen und für Kollegen einfach zu bedienen, ist eine äußerst schwierige Aufgabe. Es braucht jahrelange Übung .
Denken Sie also daran: Es gibt eine ganze Reihe von Leuten, die zwei Designs nicht bewerten können und tatsächlich eines als besser als das andere anerkennen. Wie gut verstehen sie sich bei der Erstellung guter Designs?
Edit:
'nother tip, nachdem Sie sich ein wenig mit den Grundsätzen befasst und deren Anwendung geübt haben, denke ich, dass es ein weiteres Juwel aus einer anderen Frage gibt, das den Wert des Lernens einer Vielzahl von Sprachen mit unterschiedlichen Zwecken und Regeln zum Ausdruck bringt:
Idealerweise sollte jeder Programmierer eine Sprache aus jeder Klasse kennen. Was könntest du lernen:
- Eine statisch typisierte OOP-Hauptsprache: Java, C # (meistens in Unternehmenssoftware verwendet) und C ++ (Systemprogrammierung und komplexe Desktopanwendungen)
- Eine prototypbasierte OOP-Sprache: Javascript (clientseitige Webprogrammierung)
- Eine prozedurale Sprache: C (eingebettete Software und Systemprogrammierung)
- Eine funktionale Sprache: Haskell, ML oder Lisp (funktionale Sprachen eignen sich für stark parallelisierte Software).
Eine logische Programmiersprache (Prolog) ist in der Industrie wahrscheinlich nicht so nützlich und wird hauptsächlich in der AI-Forschung verwendet.
Dies wird dazu beitragen, die Vielfalt der Ideen zu erweitern, die beim Entwerfen einer Lösung in den Sinn kommen.