1) Неск недель (может месяцев) разобраться с базовыми конструкциями языка и базовыми структурами данных, связанный список, граф. Любой учебник, не больше 100 страниц, лучше если в нем есть картинки. Может быть скучновато, но это недолгий этап. Проверкой что вы эго закончили будет упражнение построить и сравнить два графа (см картинку), одинаковые они или нет, это полстраницы кода.
2) Дальше, выполнить 1-4 интересных визуальных задачи. Визуальных ключевой момент поскольку у людей визуальная система ведущая и если ее задействовать то все будет получаться легче, проще и лучше.
Например скачать текст Войны Миров, сделать гистограмму частоты слов, и нарисовать ее в красивом виде как на картинке ниже (в зависимости от уровня может уйти от неск дней до неск недель). В процессе выполнения вы обнаружите пробелы в своих знаниях и заполните их. После того как вы это сделаете вы будете знать 70% того что требуется знать в типовых задачах программирования.
После этого можно перейти к реальным задачам, или если будет желание выполнить еще несколько интересных визуальных задачек. Например 1) сгенерировать и отрисовать картинку с лабиринтами. Или 2) постройте пару гистограм/графиков на SVG. Главное чтобы был визуальный контроль того что вы делаете и визуальное понимание конечной цели.
Можете также освоить минимум HTML & CSS даже если они вам напрямую не нужны, они очень простые и это хороший способ представить результаты визуально.
Используйте материалы на английском они намного лучше. Предпочтение отдавать книгам/курсам которые тонкие, красиво сделанные, с иллюстрациями или интерактивные. Толмуды на 600-800 страниц текста где указана каждая мельчайшая спецификация языка и которые так любят в университетах, использовать не нужно, знать или запоминать все эти мелкие детали языка тоже не нужно.
Пример небольших интересных курсов (это совсем уж короткие, скорей ознакомительные, в реальности нужно чуть более подробный).
jgthms.com/javascript-in-14-minutes/
jgthms.com/web-design-in-4-minutes/
Языки:
— Java / C# — старые, но по прежнему занимают позиции N1 по распространению, числу вакансий и по баблу, банки, бизнес софт и т.п. Если цель устроится на работу, то они то что надо.
— Python / JavaScript — одни из самых легких в изучении, вакансий тоже море, по деньгам наверно поменьше чем на Java / C#
- С / C++ — специальные инструменты, изучать их можно только если точно знаешь зачем они тебе нужны.
— Ruby / Swift / Kotlin / Go и т.п. специальные инструменты, изучать можно только если знаешь зачем они тебе.
Вот только для устройства на реальную работу кроме операторов if/for/while нужно знать системные объекты и библиотеки, ООП, шаблоны проектирования, кучу фреймворков, SQL, базовые протоколы вроде HTTP, про О-нотацию спросят. А там вылезет блокирующая и неблокирующая многопоточности, лямбды, необходимость уметь в Git и собирать проект с помощью какого-нибудь инструмента…