Программирование, как и любое другое умение надо развивать, постоянно применяя его на практике. Программировать на каком-либо языке - это примерно тоже самое как учить иностранный язык. Сначала ничего не понятно, но потом, с опытом и практикой становиться все более и более понятно. И в конце концов в один прекрасный момент на вас яростно нападает ясность и кристальное понимание законов этого языка. Вы схватываете самую суть. Остается только словарный запас.
Также и в программировании. Мало читать умных книжек по программированию, надо тренировать свое умение и шлифовать свое мастерство. Со временем становиться все проще и проще. Схемы и алгоритмы сами выстраиваются у вас в голове. Ваша память любезно подсказывает вам легкие решения, на которые были ранее потрачены часы геморроя.
Развивается только то, что тренируется (с) Не помню кто
Свои знания надо постоянно расширять. В каждом новом проекте делайте что-то новое для себя. Осваивайте новые горизонты. Это может быть что-то маленькое, так и что-то большое. Главное чтобы каждая новая работа давала что-то в вашу личную копилку знаний.
Читайте книжки, внимательно читайте. Они расширяют ваш кругозор. Дают новые решения старых вопросов, а также дает вам решения проблем, которые еще даже не стояли перед вами. Возможно при чтении какой-либо книги у вас родиться гениальная идея вашего собственного проекта.
И да, не работайте только на заказчика, думайте и о себе тоже. Вернее так, думайте о себе в первую очередь, когда на кого-нибудь работаете. Не впадайте в трудоголизм. Это очень страшный и пагубный недуг - работать, и не понимать цели своей работы. Ведь надо постоянно задумываться:
"а то ли я делаю?". "Могу ли я эффективнее потратить свое время?" "Приближает ли то, что я делаю к моим целям?" Об этом всегда надо помнить.
Трудоголизм - интеллектуальная лень (с) Rework
Что-то я отвлекся :) На этом и закончу.