一部の回答とは異なり、「専門家」になるための要件は経験だけではありません。(プログラミングだけでなく)あらゆる業界のほとんどの人は、その分野の専門家にならないと思います。彼らは有能で効率的になりますが、彼らは可能な限り近くにはなりません。
経験が足りないからです。専門家の助言が必要です。あなたは専門家である誰かから物事を行う方法を学ぶ必要があります。
幸い、プログラマーがエキスパートになるためのリソースはたくさんあります。おそらく最高のものは本です。もう1つの優れたリソースは、programmers.StackExchangeです。
ほとんどの時間をコードの作成に費やすだけでなく、その一部をClean Code http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882のような本から知識を読んで統合することにも費やしてください。Amazonでレビューを分析し、このサイトをチェックして、Stack Overflowで最高の本を見つけることができます。
1年に2〜3冊の本を学び、使用するのに十分な時間を費やせば、スキルが大幅に向上します。また、学んだことをすべて記録して思い出す方法を考えてください。そうしないと、情報を実際に知り、使用することが困難になります。
エキスパートプログラマーが興味を持っているトピックに注意を払います。デザインパターン、ユニットテスト、キャリアの選択など。エキスパートプログラマーの視点から世界(または少なくともあなたの仕事)を見てください。
コード化するタスクが与えられたら、しばらく考えてみてください。いくつか質問してみてください。何が助けになりましたか?リスクは何ですか?最善のアプローチは何ですか?使用できるいくつかの異なるアルゴリズムは何ですか?プログラムの実行にはどのくらい時間がかかりますか?CPUボトルネックになる可能性が高いのは何ですか?変更または追加できる機能は何ですか?
お役に立てれば。