Как по-настоящему научиться программировать?
Придумать себе проект и реализовать его, как сумеешь.
Почитать про шаблоны проектирования.
Переписать, опираясь на шаблоны.
Понять, что вышло не очень.
Переписать ещё раз.
берите реальный проект и разбирайте код. затем пишите аналогичный с нуля.  затем выкладывайте для критики. затем переписывайте. так несколько итераций. параллельно подпитывая все это теорией из умных книг. это если нет возможности в команду попасть. в целом,  не более  20 процентов могут преодолеть этот барьер самостоятельно (данные из книги Шаталова).