Je pense que c'est un signe très positif de vos compétences. Il est beaucoup plus courant que les personnes qui ont des difficultés à concevoir le «meilleur» design dans une équipe soient complètement incapables de comprendre pourquoi un autre design est meilleur.
Vous avez deux atouts vraiment formidables (et étonnamment rares):
- Vous êtes capable d'évaluer objectivement vos créations par rapport à d'autres
- Vous avez le désir et la volonté de rendre vos conceptions optimales
Vous êtes seulement dans quelques années et vous avez un long chemin à parcourir, mais avec cette attitude, vous y arriverez certainement, n'abandonnez pas; nous avons tous affaire à des revers mentaux comme celui-ci. Aussi souvent que j'en ai l'occasion, j'aime appliquer les principes de conception (et non les mêmes que les modèles de conception) et je pense que c'est un exemple parfait de leur utilité. Etudiez-les et exercez-vous à les appliquer à vos conceptions avant de savoir que le projet a fait un autre pas en avant à cet égard.
En fin de compte, rappelez-vous, la conception est difficile. Nous traitons tous les jours avec des abstractions complexes de haut niveau, pour les créer du jour au lendemain, les faire bien fonctionner, et une utilisation facile par des collègues est une tâche extrêmement difficile. Cela prend de la pratique pendant des années .
Alors, lancez-vous et rappelez-vous: il y a beaucoup de gens qui ne peuvent pas évaluer deux designs et en reconnaître un comme préférable à un autre. Dans quelle mesure pensez-vous qu'ils s'entendent bien pour créer de bons designs?
Éditer:
«Autre conseil, après avoir bien compris les principes et appliqué un peu leur application, je pense qu’il existe un autre joyau d’une autre question, qui porte sur l’utilité d’étudier diverses langues ayant des objectifs et des règles différentes:
Idéalement, chaque programmeur devrait connaître une langue de chaque classe. Que pourriez-vous apprendre:
- Un langage ordinaire de programmation orientée objet typé: Java, C # (principalement utilisé dans les logiciels d'entreprise) et C ++ (programmation système et applications bureautiques complexes)
- Un langage OOP basé sur un prototype: Javascript (programmation Web côté client)
- Un langage procédural: C (logiciel embarqué et programmation système)
- Un langage fonctionnel: Haskell, ML ou Lisp (les langages fonctionnels conviennent aux logiciels hautement parallélisés).
Un langage de programmation logique (Prolog) n'est probablement pas très utile dans l'industrie, il est principalement utilisé dans la recherche en IA.
Cela contribuera à élargir la diversité des idées qui vous viennent à l’esprit lorsque vous essayez de concevoir une solution.