Во множестве книг по программированию дается один и тот же ответ - что бы научиться программированию надо писать программы. Цитата не точная, на самом деле - "Что бы изучить язык программирования, пишите на нём программы.". Но суть та же. ИМХО - теория - уроки, курсы процентов 10%, остальное практика, практика и практика. А что лучше в плане теории - курсы, уроки, чтение чужих исходников зависит больше от качества материала, чем от формы подачи.