Вы все правильно делаете, хотя возможно это не самый быстрый путь.
Решение реально сущетвующих задач дает в тыщу раз больше опыта, чем чтение голой теории. Да, это будет говнокод первые пару сотен раз, но это процесс обучение и так у всех.
Главное, не переставайте задавать вопросы и пробуйте решить задачу лучшими способами. Возвращайтесь к своему когду через полгода-год и смотрите на него с ужасом, и думайте что за идиот это написал.
Короче, это долгая исотрия. Нет волшебной книжки, которую можно прочитать и стать крутым прогером.
Значительно ускорить процесс можно ментором, но он захочет много денег.