これはあなたのスキルの非常に前向きなサインだと思います。チームで「より良い」デザインを思い付くのが難しい人にとって、他のデザインがより良い理由を完全に認識できないことは、はるかに一般的です。
あなたには2つの本当に素晴らしい(そして驚くほど珍しい)強みがあります:
- あなたは他の人に対してあなたのデザインを客観的に評価することができます
- あなたはあなたのデザインを最適にするための欲求と努力を持っています
あなたはまだ数年で、長い道のりを歩んでいますが、この態度であなたは間違いなくそこに着くでしょう、ただあきらめないでください。私たちは皆、このような精神的な後退に対処しています。頻繁に機会があれば、デザイン原則(デザインパターンとは異なります)をプラグインするのが好きで、これが便利な場所の完璧な例だと思います。それらを研究し、あなたのデザインにそれらを適用する練習をしてください。あなたはそれがこの点でさらに前進したことを知る前になります。
結局のところ、設計は難しいことを忘れないでください。私たちは毎日、複雑な高レベルの抽象化を扱っており、それらを薄い空気から作成し、うまく機能させ、同僚が簡単に使用できるようにすることは非常に難しい作業です。何年も練習が必要です。
2つのデザインを評価できず、実際に1つのデザインが他のデザインよりも好ましいと認識できない人が大勢いますが、良いデザインを作成する上でどれだけうまくいっていると思いますか?
編集:
「もう一つのヒント、原則を理解してそのアプリケーションを少し練習した後、ここで別の質問から別の宝石があり、さまざまな目的とルールを持つさまざまな言語を勉強することの価値について話していると思います:
理想的には、すべてのプログラマーが各クラスの言語を知っている必要があります。あなたは何を学ぶことができます:
- 静的型付きOOPメインストリーム言語:Java、C#(主にエンタープライズソフトウェアで使用)、C ++(システムプログラミングおよび複雑なデスクトップアプリケーション)
- プロトタイプベースのOOP言語:Javascript(クライアント側のWebプログラミング)
- 手続き型言語:C(組み込みソフトウェアおよびシステムプログラミング)
- 関数型言語:Haskell、ML、またはLisp(関数型言語は高度に並列化されたソフトウェアに適しています)。
ロジックプログラミング言語(Prolog)は、おそらく業界ではそれほど有用ではなく、主にAIの研究に使用されています。
これは、ソリューションを設計しようとするときに思い浮かぶさまざまなアイデアを広げるのに役立ちます。