Как мне научиться учиться программированию?
TD;DR https://stepik.org/course/363
https://www.youtube.com/watch?v=rrRZZ_3licM&list=P...
Если тебе обещают, что научат программировать за 21 день - не верь им.
Если тебе обещают, что трудоустроят - не верь им.
Если тебе обещают, что это будет бесплатно - не верь им.
Программирование это навык, поэтому нужно учить не язык, а развивать навык.
Необходимо понять, что оно в себя включает - алгоритмы, структуры данных, абстрактное мышление, инженерное мышление. 
Если у тебя нет своей программы - доверься людям, которые прошли путь и могут порекомендовать ресурсы. Помни, что бесплатный сыр только в мышеловке. Либо ты тратишь кучу времени на систематизацию знаний, либо ты платишь за то, чтобы получить программу.
Вот тебе ссылка на плейлист, посмотри, понравится ли тебе
https://www.youtube.com/watch?v=rrRZZ_3licM&list=P...
Я думаю, что дальше сам разберешься.
Из литературы. Это из тех, что я читал или слышал о них:
Грокаем алгоритмы (Адитья Бхаргава)
Код. Тайный язык информатики (Чарльз Петцольд)
Идеальный программист. Как стать профессионалом разработки ПО (Роберт К. Мартин)
Цель. Процесс непрерывного совершенствования (Элия М. Гольдратт, Джеф Кокс)
Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик)
Помни, что нужно учиться непрерывно всю жизнь, если один раз вступил на этот путь, то назад дороги нет. Будешь видеть мир по-другому. Если тебе кажется, что ты все знаешь, значит ты не знаешь ничего.
Здравствуйте!
Я не С++ программист поэтому не на многие вопросы смогу ответить.1) Я не могу понять какие книги мне надо прочесть.
Открываем Ozon и вводим C++ смотрим свежие книги с хорошими отзывами. Есть так же издательство Питер и ДМК пресс.2) Я не могу понять как мне знакомиться с существующими библиотеками и технологиями.
Зависит от области (Для сайтов одни библиотеки нужны, для написания драйверов другие, правда с сайтами мне кажется С++ неподходящий язык программирования, но это мое мнение). Можно посмотреть на HH.ru какие вообще требуются программисты по C++ что что они вообще должны знать. Посмотрите 10-20 вакансий и у Вас появится список топ навыков которыми должен обладать программист.
Если либа очень популярна, то у нее должна быть хорошая документация, попробуйте поделать свои проекты использую популярные либы.
Как правило хорошие знания приходят с хорошим проектом. Очень часто бывает что прочитал и понял все на 100%, начинаешь делать проект то там, то тут засада.3) Я не могу понять что я не знаю, чего мне не хватает.
В программирование нет такой отметки когда можно сказать, что все теперь я точно все знаю. Постоянно все меняется и выходят новые тулзы. Вам нужна книжка по основам, по паттернам проектирования, дальше уже смотреть область которая Вам больше всего интересна.Даже если я захочу пройти курсы программирования, у меня в городе их просто нет. К обучению по интернету отношусь скептически.
Курсы курсам рознь. Если с английским все хорошо то можно посмотреть курсы https://www.edx.org/ (лекции от университетов Гарвард, Беркли, MIT) https://www.coursera.org/