Единственная книга, которую мне за всё время пришлось использовать - Герберт Шилдт по плюсам. Да и то не для Web-разработки, а чисто для понимания основ логики программирования.
Если говорить конкретно про Web: самоучка методом проб и ошибок, лазанья по форумам итд. Сначала просто начал глядеть исходный код различных сайтов (было интересно, как оно всё устроено). Потом начал гуглить на различные темы типа: минимальный html шаблон, основы css итд. Вполне достаточно статеек/мануалов с различных тематических сайтов. Сначала пробуете писать простенькие одностраничники, безо всякой серверной части. Потом попробуйте поиграться со стилями, js/jquery фишками. Это Front-end.
Касательно Back-end'a: сначала рисовал простые скрипты на php (хотя и я бы на вашем месте сразу полез в python) по типу динамического вывода той или иной информации. Потом научился соединять с БД (PostgreSql, MySql, SqLite итд, погуглите разные варианты, каждому своё). Дальше пробовал что-то типа написания мини-блога.
Когда приучитесь творить подобные мини-проекты, посмотрите в сторону фреймворков.
Для фронтенда это Bootstrap, Semantic-UI (как наиболее адекватные с моей точки зрения).
Для бэкэнда (в зависимости от языка, на котором пишете): для PHP - Laravel, для Python - Django.
В любом случае, основные советы следующие:
1) Как можно больше практики. Теория в этом деле ничего не стоит, опыт - ваше всё.
2) Сразу учитесь "этике" программирования: соблюдайте табуляцию, давайте переменным/классам нормальные названия итд.
3) stackoverflow - ваше всё (вы ещё попомните эти слова).
4) Хорошие работы (на поздних этапах) сохраняйте для будущего портфолио (будет, что показать).