Мои ощущения такие. Вообще-то я всегда гордился тем, как хорошо обучаюсь. В 9 классе выучил турбо-паскаль 7.0 с тамошним подобием ООП, TSR'ами и пр. по встроенной хелпе и по советской книге про паскаль 5.5. На первом курсе непрофильной специальности прошел собеседования в крупную ИТ-компанию и стал самым молодым сотрудником: остальные были минимум на 4 курсе. Просто прочитал пару брошюрок по языку Си, проглядел Кернигана-Ричи и еще пролистал одну книжку про технологию COM, у меня тогда даже компьютера не было - этого хватило для успешного прохождения интервью по синтаксису Си++ и несложной алгоритмике. С алгоритмами я, правда, сталкивался на довольно серьезном уровне в школе, но писал их от руки на листочке на паскале.
Самостоятельно, не посетив ни одной лекции, подготовился к экзамену по криптографии. На старших курсах пришел в одну фирму, мне дали толстенную книгу на английском про телефонные технологии, о которых ничего не знал, через неделю устроили зачет и взяли на работу. Самостоятельно разобрался с CUDA.
Когда меня достала моя естественнонаучная специальность в университете, я после пары чтения "Алгоритмов" Кормена в автобусе прошел собеседование в FAANG. Слов system design я даже не знал, но на джуна хватило.
Потом участвовал без подготовки в соревнованиях на TopCoder (SRM) и HackerRank и получал там отличия.
Были успехи быстрого обучения и в других областях. Писал на заказ дипломные, литобзоры в кандидатских и дайджесты статей в разных специальностях от филологии и экономики до социологии и генетике. Не только для нерадивых студентов, но и для лабораторий в НИИ.
Сейчас я год ищу работу. Попал под массовые сокращения. Оказалось, что у меня не очень хороший набор навыков, полученных на реальном рабочем опыте. Такой набор сейчас мало кому нужен, а каждый отдельный навык на уровень senior/staff не тянет. На джуна-миддла тоже не берут: подозрительно, когда человек с ученой степенью и десятью годами опыта в FAANG'е подается на джунские позиции. Сейчас в нашем регионе на каждую вакансию приходят сотни, а на джунские/миддловские - около тысячи резюме, чаще всего мне не отвечают на резюме, даже если вакансия на 100% соответствует опыту.
Через несколько месяцев я понял, что востребованные технологии, с которыми я сталкивался, надо подучить и указывать в резюме.
За год брался за Rust, Scala, Python и даже фортран (да, он кое-где нужен: в фирме Ansys), многопоточность в C++, T-SQL, современные CNN/RNN/LLM, OpenCV, AWS: общую картину и для моей специальности. Cо всем этим я сталкивался по работе и без проблем использовал, но хочу создавать впечатление на собеседовании, что специализировался на этих языках и технологиях. Каждому работодателю - свой набор. Также я часто заваливаю sysdesign, так что занимаюсь и им.
И вот что вижу. Во-первых, учиться самостоятельно по учебникам трудно, без учебников еще труднее. Системное изучение скалы и раста забросил, хотя легко юзал их на работе. Питон только с трех попыток, прочитав пяток учебников, довел до уровня, чтобы уверенно решать несложные задачи с литкода. System design отвечаю плохо, хотя прочитал DDIA, обе книги Alex Xu, Grokking sysdesign и посмотрел десятки видео на ютубе. На OpenCV сделал маленькие полезные пет-проекты и забыл. В зоопарке AWS путаюсь, а пока не прошел курсы, вообще не ориентировался.
Во-вторых, не по всем темам есть бесплатные учебные материалы. Почти любая тема машинного обучения описана на сайтах типа medium, но многие доступны только платно. Либо разбирайся с первоисточниками. Когда нужно уяснить один вопрос, так даже лучше, но если знакомишься с широкой темой, просто теряешься в мешанине статей по частным вопросам. Да и первоисточники нередко платные.
Книг по МЛ-сисдизайну именно для подготовки к собеседованию нет. Alex Xu выпустил одну год назад, но бесплатно я ее не нашел. Альтернативные книги есть, для работающего человека полезны, а для соискателя - нет.
Бесплатных учебных материалов по concurrency в Си++ не нашел. Платные есть. Курсов по последним 12 годам стандарта Си++ не нашел и платных.
Платные курсы тоже могут быть бесполезны. Заплатил за подписку, чтобы подготовиться к интервью по system design, а там видео с такой туфтой, что стыдно было бы повторять в реале. На ютубе куча роликов полезнее.
В общем, без курсов системно изучать малознакомые темы сложно. Но и курсы не панацея.
Кстати, кому нужен быстро обучающийся программист, напишите в комментарии.