Для начала надо разобраться что такое http, REST, SOAP, как эти вещи работают, затем если начальный уровень знаний языка есть(основные операторы языка, понимание как их использовать), то можно попробовать ООП, но начинать надо не с зубрежки синтаксиса, а понятий объект, класс, интерфейс, наследование, инкапсуляция, полиморфизм, и кучи всего, причем по моему мнению начать надо так объект>классы>инкапсуляция>наследование все остальное уже позже, когда поймете для чего нужно наследование, для чего нужна инкапсуляция, в чем разница между классом и объектом, тогда уже можно и к паттернам подойти, но не в коем случае не стоит сразу пытаться разобраться как работает mvc или какой-либо другой шаблон проектирования, в изучении должна быть последовательность, и не ленитесь делать тестовые примеры. По поводу книг почитайте Совершенный код (С. Макконнелл ).