Зависит от бэкграунда и количества времени, которым ты располагаешь для изучения программирования. Но если считать, что он нулевой, то я бы советовал примерно в таком порядке изучать:
1. Математика (высшая, вузовская; частично; если )
2. Основы CS (в том числе устройство компьютера, его работа)
3. Языки программирования (паскаль, си, дальше язык, который нужен будет для будущей работы: js, java, python, etc.)
4. SQL и базы данных (если ещё не изучил до этого)
5. Необходимые для работы фреймворки и окружение (всякие спринги, джанги, ангуляры, а из окружения: гит, джира, IDE, система сборки проектов и т.д.)
Дальше нужно смотреть вакансии, ходить на собеседования и подтягивать то, чего не хватает.
Вкратце - так.
А как изучать - моё ИМХО - лучше книги, но также могут быть эффективны интерактивные курсы (онлайн, оффлайн), разные видеокурсы и т.д. Тут каждый для себя выбирает то, что ему больше заходит (но без книг или хороших статей, а также документации - никак).
По языку - зависит от того, что выберете: веб фронт, веб бекенд, мобайл, десктоп и т.д. По популярным языкам постоянно везде публикуется статистика, так что можно что-то из них выбрать. Не думаю, что новичку стоит выбирать малопопулярный язык (с++ тоже к ним сейчас относится). Из популярных - это java, js, php, python. Мне кажется, что проще всего и быстрее всего начинать с php, хотя давно им не занимался, поэтому точно не знаю, как там дела обстоят. Кроме того, поговаривают, что он тоже популярность теряет, так что возможно это неперспективно, но новичка это не должно волновать. Главное, получить какой-то опыт коммерческой разработки, а язык и сфера не сильно важны.
ЗЫ Ещё где-то между пунктами 2 и 5 надо хорошо подтянуть английский язык (для чтения оригинальной документации, а также книг и статей на английском). В идеале - до среднего уровня, но минимум - до уровня, который лежит посередине между средним и низким (чтение текстов на инглише с нечастым обращением к словарю).