Я думаю, что это очень положительный знак ваших навыков. Люди, которым трудно придумать «лучший» дизайн в команде, гораздо чаще не могут понять, почему другой дизайн лучше.
У вас есть две действительно большие (и удивительно необычные) сильные стороны:
- Вы способны объективно оценивать свои проекты по отношению к другим
- У вас есть желание и усилия, чтобы сделать ваши проекты оптимальными
Тебе всего пара лет, и у тебя долгий путь, но с таким отношением ты обязательно доберешься, просто не сдавайся; мы все имеем дело с такими умственными неудачами. Как только я получаю шанс, мне нравится включать Принципы проектирования (НЕ такие же, как шаблоны), и я думаю, что это прекрасный пример того, где они пригодятся. Изучите их и попрактикуйтесь в их применении в своих проектах, прежде чем вы узнаете, что они сделали еще один шаг вперед в этом отношении.
В конце дня помните, что проектирование сложно. Мы имеем дело со сложными абстракциями высокого уровня каждый день, чтобы создать их из воздуха, сделать так, чтобы они работали хорошо, а коллегами их было легко использовать - это чрезвычайно сложная задача. Это требует практики, в течение многих лет .
Так что подбодрите и просто помните: есть группа людей, которые не могут оценить два дизайна и фактически признают один предпочтительным по сравнению с другим, насколько хорошо вы думаете, что они преуспевают в создании хороших проектов?
Изменить:
«Еще один совет, после того, как вы разберетесь с принципами и немного попрактикуетесь в их применении, я думаю, что здесь есть еще одна жемчужина из другого вопроса, говорящего о ценности изучения различных языков, которые имеют разные цели и правила:
В идеале каждый программист должен знать язык каждого класса. Что вы могли бы узнать:
- Основной язык ООП со статической типизацией: Java, C # (в основном используется в корпоративном программном обеспечении) и C ++ (системное программирование и сложные настольные приложения)
- Язык ООП на основе прототипа: Javascript (веб-программирование на стороне клиента)
- Процедурный язык: C (встроенное программное обеспечение и системное программирование)
- Функциональный язык: Haskell, ML или Lisp (функциональные языки хороши для высокопараллельного программного обеспечения).
Язык логического программирования (Пролог), вероятно, не так полезен в промышленности, поскольку используется в основном в исследованиях ИИ.
Это поможет расширить разнообразие идей, которые приходят на ум при разработке решения.