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 и собирать проект с помощью какого-нибудь инструмента…
На работу во многие крупные компании, особенно на начальные позиции, вообще никто внимания на знание фреймворков не обратит, а тесты будут именно по стандартным базовым вещам.
А чтобы отрисовать такую картинку, эти самые базовые алгоритмы и нужно будет разобрать и понимать как они работают. Причем все это произойдет естественно и в игровом процессе и хорошо запомнится.
Вопросы по многопоточность будут только если не новичек, новичку никто не будет многопоточность спрашивать.
Ив Ив, Ваша компания не единственная, есть другие.
Где то на 150тр/мес требуют больше знаний чем в другой компании на 300тр/мес.
Кроме того, ооп, коллекции и т.п. после 5-10 собеседований, если вдруг человек не пройдет, он просто посмотрит эти вопросы, и пройдет на 11ом.
К слову, именно так и учатся рисовать. Рисуешь сову каждый день по нескольку раз. И через месяц или два, когда нарисовал 50 или 100 сов, 101 получится похожей на настоящую.
А зазубрить базовые конструкции языка и научиься решать тестовые задачки из учебника — это еще совсем не программирование...
А курсы — это так, развод на бабки. Если у человека есть склонность к программированию, то он и без всяких курсов его освоит. Купил книжку по изучаемому языку, скачал софт — и вперед, к вершинам
И дальше простого рядового исполнителя он не вырастет
2. Для обзорной статьи для новичков вы бы лучше больше внимания уделили выбору подходящего языка. Абзац в конце и предложения попутно выучить HTML с CSS — это, простите, не серьезно. Человек же будет впервые учиться программированию, без опыта. Может ему хочется сайт сделать или игру для своего iPhone. Или, раз уж мы на смартлабе, бота для торгового терминала.
Просто — никак. За несколько недель это будет полный отстой. Несколько лет очень плотных занятий включающих чтение огромной кучи книг и документации, а также практики, желательно в реальных проектах. Если хочется в архитектуре разбираться то еще лет 10-15. Ну и не надо забывать, что у каждого направления (Web, облачные технологии, «кровавый энтерпрайз», высоконагруженные системы, обработка данных, графика, игры, мобильные системы, нейросети, встроенные и киберфизические системы и еще куча всего) есть своя специфика, на освоение которой тоже нужны годы.