Penso che questo sia un segno molto positivo delle tue capacità. È molto più comune per le persone che hanno difficoltà a trovare il design "migliore" in una squadra per essere completamente incapaci di riconoscere perché un altro design è migliore.
Hai due punti di forza davvero eccezionali (e sorprendentemente rari) per te:
- Sei in grado di valutare obiettivamente i tuoi progetti contro altri
- Hai il desiderio e hai fatto uno sforzo per rendere i tuoi progetti ottimali
Sei solo un paio d'anni e hai una lunga strada da percorrere, ma con questo atteggiamento ti arriverà sicuramente, semplicemente non ti arrendere; ci occupiamo tutti di arretramenti mentali come questo. Ogni volta che ho la possibilità mi piace collegare Principi di progettazione (NON lo stesso dei modelli di progettazione ) e penso che questo sia un esempio perfetto di dove sono utili. Studili e praticali applicandoli nei tuoi progetti, prima di sapere che hai fatto un altro passo avanti in questo senso.
Alla fine della giornata ricorda, progettare è difficile. Abbiamo a che fare ogni giorno con complesse astrazioni di alto livello, per creare queste cose dal nulla, farle funzionare bene e il facile utilizzo da parte dei colleghi è un compito estremamente difficile. Ci vuole pratica, per anni .
Quindi rilassati e ricorda: c'è un gruppo di persone là fuori che non è in grado di valutare due progetti e in realtà lo riconoscono come preferibile rispetto a un altro, quanto pensi che stiano andando avanti nella creazione di buoni progetti?
Modifica
'nother tip, dopo aver analizzato i principi e praticato un po' la loro applicazione, penso che ci sia un'altra gemma da un'altra domanda qui che parla del valore di studiare una varietà di lingue che hanno diversi scopi e regole:
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.
Ciò contribuirà ad ampliare la varietà di idee che vengono in mente quando proviamo a progettare una soluzione.