Один мой коллега заявил, что если учить программирование само по себе — по книгам/документации, — то это потеря времени впустую. Нужно делать какой-то проект. У меня такой вопрос: а какой проект можно сделать, если только начал изучать программирование и понятие не имеешь что писать?
Чтобы знать, что писать - надо знать, как писать. А значит, для начала ты должен овладеть теорией. Хорошо, когда изучая теорию ты попутно учишься писать код. До написания pet project я бы рекомендовал изучить еще исходные коды различных проектов коллег поопытнее. Найти их можно на github, bitbucket и т.д.
Итак, подведем итог:
1) изучить теорию
2) попутно стараться решать задачи на различных сайтах (hackerrank, leetcode и др.)
3) когда овладеете базовыми навыками, то изучать различные паттерны и подходы. KISS, YAGNI, GRASP, SOLID, GoF, DTO, DAO и т.д.
4) написать свой pet project.