проблема в том, что когда пишут более-менее большие приложения, то задумывают одно, а получается другое. и это другое, которое под нынешние рамки надо бы переписать, является антипаттерном инфа соточка
потому самый верный путь: 1) немного читаем теории, синтаксис 2) пытаемся решить элементарные задачи с любого задачника (тот же тютор) 3) ищем задачи осмысленные или придумываем сами и решаем с помощью гугла и документации и ранее полученных знаний 4) учимся дальше, умея хоть что-то, ты уже достаточно неплох
конечно + читать чужой код. видеть разные вещи, которые тебе не понятны и пытаться понять, почему так — хорошо так тренирует. но это добавка, а не основное блюдо