Acho que isso é um sinal muito positivo de suas habilidades. É muito mais comum que as pessoas que têm dificuldade em criar o design 'melhor' em uma equipe sejam completamente incapazes de reconhecer por que outro design é melhor.
Você tem dois pontos strongs muito bons (e surpreendentemente incomuns) para você:
- Você é capaz de avaliar seus projetos em relação a outros objetivamente
- Você tem o desejo e se esforça para tornar seus projetos ideais
Você está há apenas alguns anos e tem um longo caminho a percorrer, mas com essa atitude você definitivamente chegará lá, apenas não desista; Todos nós lidamos com retrocessos mentais como este. Sempre que tenho uma chance, gosto de ligar Princípios de Design (NÃO é o mesmo que os padrões de design ) e eu acho que este é um exemplo perfeito de onde eles vêm a calhar. Estude-os e pratique-os em seus projetos, antes que você perceba que deu mais um passo nesse sentido.
No final do dia, lembre-se, projetar é difícil. Estamos lidando com abstrações complexas de alto nível todos os dias, para criá-las do nada, para que funcionem bem e fáceis de usar pelos colegas é uma tarefa extremamente difícil. Isso requer prática, por anos .
Então, lembre-se: há um monte de pessoas por aí que não conseguem avaliar dois projetos e reconhecem um como preferível em relação a outro, o quanto você acha que está se dando bem na criação de bons projetos? Editar:
Depois de dar uma olhada em princípios e praticar um pouco a sua aplicação, eu acho que há outra jóia de outra questão aqui falando sobre o valor de estudar uma variedade de linguagens que têm diferentes propósitos e regras:
Ideally, every programmer should know a language from each class. What could you learn:
- A static typed OOP mainstream language: Java, C# (mostly used in enterprise software) and C++ (system programming and complex desktop applications)
- A prototype-based OOP language: Javascript (client side web programming)
- A procedural language: C (embedded software and system programming)
- A functional language: Haskell, ML or Lisp (functional languages are good for highly parallelized software).
A logic programming language (Prolog) probably is not that useful in industry, being used mostly in research in AI.
Isso ajudará a ampliar a variedade de ideias que vêm à mente ao tentar criar uma solução.