Berlawanan dengan beberapa jawaban, pengalaman bukanlah satu-satunya syarat untuk menjadi "ahli". Saya pikir kebanyakan orang di setiap industri (bukan hanya pemrograman) tidak menjadi ahli di bidangnya. Mereka menjadi kompeten dan efisien, tetapi mereka tidak menjadi sedekat yang mereka bisa.
Alasannya adalah pengalaman itu tidak cukup. Anda membutuhkan saran ahli. Anda perlu belajar cara melakukan sesuatu dari seseorang yang ahli.
Untungnya bagi kita, ada banyak sumber daya bagi programmer untuk menjadi ahli. Mungkin yang terbaik adalah buku. Sumber daya luar biasa lainnya adalah programmer .StackExchange.
Habiskan sebagian besar waktu Anda menulis kode, tetapi juga habiskan sebagian untuk membaca dan mengintegrasikan pengetahuan dari buku-buku seperti Clean Code http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 . Anda dapat menemukan buku-buku terbaik dengan menganalisis ulasan di Amazon, memeriksa situs ini, dan Stack Overflow.
Jika Anda menginvestasikan cukup waktu untuk mempelajari dan menggunakan informasi dalam 2 atau 3 buku per tahun, itu akan sangat meningkatkan keterampilan Anda. Juga, cari cara untuk merekam dan mengingatkan diri sendiri tentang segala sesuatu yang Anda pelajari. Kalau tidak, akan sulit untuk benar-benar mengetahui dan menggunakan informasi tersebut.
Perhatikan topik yang diminati oleh programmer ahli: pola desain, pengujian unit, pilihan karir, dll. Lihatlah dunia (atau setidaknya pekerjaan Anda) dari perspektif programmer ahli.
Ketika Anda diberi tugas untuk membuat kode, berhenti dan pikirkan sebentar. Tanyakan pada diri Anda beberapa pertanyaan. Apa yang telah saya pelajari yang dapat membantu saya? Apa risikonya? Apa pendekatan terbaik? Apa sajakah algoritma berbeda yang dapat saya gunakan? Berapa lama waktu yang dibutuhkan untuk menjalankan program? Apa yang mungkin menjadi hambatan CPU? Fungsionalitas apa yang bisa diubah atau ditambahkan?
Semoga ini membantu.