В этой статье сравниваем ТОП-10 лучших онлайн-курсов по обучению C++ (Си Плюс Плюс) по рейтингу и рассматриваем бесплатные курсы.
C++ — это высокоуровневый язык программирования, унаследовавший синтаксис от языка C. Он поддерживает объектно-ориентированное, процедурное и обобщённое программирование. C++ активно применяется для создания системного и прикладного ПО, разработки игр, реализации алгоритмов и в других областях. Ключевые преимущества C++ — это его эффективность, высокая производительность и обширный набор стандартных библиотек.
Информация о курсе: стоимость — от 4 808 ₽ / мес. в рассрочку на 28 месяцев, длительность курса - 7 месяцев
Особенности: Поисковый движок в портфолио, поддержка куратора, помощь в трудоустройстве. В конце обучения получите сертификат установленного образца.
Кому подойдёт этот курс:
Тем, кто стремится стать программистом Освоите основы программирования на языке C++, создадите свои первые программы, соберёте портфолио и сможете начать карьеру в выбранном направлении.
Разработчикам на других языках Познакомитесь с синтаксисом C++ и изучите востребованный язык. Напишете микросервис, создадите игру для UE4 и сможете претендовать на позиции middle-разработчика в геймдеве или IT-компаниях.
Чему вы научитесь:
Программировать на C++ Освоите синтаксис, циклы, условия и функции языка. Узнаете, как превращать код в работающие программы.
Работать с базами данных Изучите язык SQL и научитесь быстро получать информацию с помощью запросов к базам данных.
Использовать Git Научитесь работать с распределённой системой контроля версий и сможете совместно вносить изменения в проекты.
Понимать принципы ООП Познакомитесь с объектно-ориентированным программированием и научитесь работать с объектами и классами.
Разрабатывать микросервисы Изучите создание алгоритмов и разработку сложных программ из независимых компонентов.
Создавать игры для UE4 Освоите инструментарий C++ для разработки игр. Сможете создавать простые арканоиды и шутеры для Unreal Engine.
Программа обучения:
Вводный модуль. Первая программа.
Целочисленные переменные. Данные и вычисления.
Ввод данных пользователя. Строки.
Конструкция условия if.
Логические операторы и сложные условия.
Введение в циклы: while, do while.
Циклы for и алгоритмы на циклах.
Числа с плавающей запятой. Математические вычисления.
Строки и текстовые данные. Базовые алгоритмы со строками.
Установка и настройка IDE.
Функции в программировании.
Массивы.
Знакомство с std::vector v2.
Двумерные массивы.
Алгоритмы на массивах.
Типы данных.
Указатели.
Расширенная работа с функциями.
Чтение из файлов.
Запись в файлы.
Структуры данных.
Словари std::map.
Макросы и препроцессор.
Работа с датами.
Структура проекта.
Введение в ООП.
Введение в многопоточность.
SQL. Введение.
Структура БД, запрос DESCRIBE.
Выбор и фильтрация данных, запрос SELECT.
Функции и выражения, агрегация данных.
Отношения и соединение таблиц: JOIN.
Основы SQL.
Введение в реляционные базы данных.
Основные запросы по работе с данными.
Функции и выражения в SQL-запросах.
Проектирование и оптимизация реляционных баз данных.
Программирование игр на C++ для Unreal Engine (продвинутый уровень).
Информация о курсе: стоимость — от 3 190 руб. / мес. в рассрочку на 36 месяцев, длительность курса - 11 месяцев
Особенности: Выполните реальные задачи от компаний и получите обратную связь. Добавите реальные проекты в портфолио. Получите сертификат и помощь в трудоустройстве.
Изучайте основы C++, решайте задачи любой сложности на одном из самых мощных языков программирования и укрепите свои знания алгоритмов и объектно-ориентированного программирования (ООП).
Кому подойдёт этот курс:
Новичкам Освоите ключевые принципы, необходимые для начинающих программистов, чтобы стать профессионалом: алгоритмы, ООП, основы работы с языком C++. Получите востребованную профессию и развивайтесь дальше.
Разработчикам Добавьте в свой арсенал важный язык программирования. Изучите все аспекты работы с C++, применяйте его в работе и для личных проектов.
Информация о курсе: стоимость — 125 000 ₽ или рассрочка - от 12 500 ₽ / мес., длительность курса - 5 месяцев
Особенности: Выполните 14 практических работ с поддержкой экспертов, в том числе итоговую работу, которую можно будет включить в портфолио. По окончании обучения получите сертификат.
Информация о курсе: стоимость — 144 600 ₽ или рассрочка на 36 месяцев - 4 226 ₽ / мес., длительность курса - 17 месяцев
Особенности: Добавите в портфолио 8 проектов, сможете работать уже через 6 месяцев обучения (предусмотрена помощь в поиске работы или стажировки). Получите диплом о проф. переподготовке.
С нуля освоите востребованный язык программирования, чтобы создавать проекты любой сложности. Попробуете себя в разработке кроссплатформенных приложений, умных гаджетов и видеоигр на Unreal Engine 5.
Чему научитесь:
Понимать и применять паттерны проектирования Получите знания о шаблонах проектирования и научитесь их использовать
Разрабатывать ПО с использованием популярных фреймворков Создадите графический интерфейс и научитесь писать сетевые приложения с библиотекой Qt
Работать с базами данных Освоите SQL и научитесь извлекать, преобразовывать, и загружать данные
Работать с алгоритмами и структурами данных Освоите алгоритмы и научитесь мыслить как программист
Работать с современными игровыми движками Создадите и настроите проект на базе Unreal Engine 5
Создавать многопоточные программы и обходить блокировки Научитесь распараллеливать вычисления и измерять время исполнения кода.
Информация о курсе: стоимость — от 3 060 ₽ / мес. в рассрочку на 36 месяцев, длительность курса - 12 месяцев
Особенности: добавите проекты в портфолио, получите диплом о профессиональной переподготовке и помощь в трудоустройстве.
Получите профессию инженера-программиста C++. Освойте создание программ, игр, драйверов для устройств, приложений для встраиваемых систем, серверов и даже операционных систем. Изучите основы этого языка и на практике научитесь разрабатывать веб- и мобильные приложения, а также создавать графические интерфейсы. После 9 месяцев обучения вы сможете устроиться на работу.
Информация о курсе: стоимость — нет информации, длительность курса - 56 часов
Содержание курса:
Умные указатели и семантика перемещения: сравнение с Rust, идеальное пересылание, RAII, управление временем жизни объектов
Разделение представления и хранения объектов: memory pool, работа памяти при этих парадигмах, стек против кучи
Лямбда-функции и концепты: их реализация
Паттерны и наследование: pimpl, command, фабрика, singleton, type erasure, правило пяти, RVO, CRTP
Антипаттерны и неопределённое поведение: инициализация, почти всегда auto, почти всегда избегать auto, видимость объектов, глобальные переменные, порядок инициализации, макросы. Способы их избегания
Метапрограммирование
Многопоточность
C++20: модули, ranges, направления развития C++23
Компиляторы и архитектура: атрибуты, архитектура LLVM, санитайзеры, фаззинг
Сборка проектов на C++ с множеством файлов: cmake
Производительность C++: что делает язык быстрым
Ответы на вопросы: истории о C++, будущее языка, комитет, экосистема.
Информация о курсе: стоимость — 54 000 ₽, длительность курса - 3 месяца
Этот курс посвящен разработке программного обеспечения на языках C и C++. Основное внимание уделяется формированию базовых навыков программирования и проектирования ПО. Участники курса смогут погрузиться в процесс разработки, почувствовать себя настоящими разработчиками на C++, используя современные технологии и инструменты, такие как Git, QtCreator, QMake и CMake. Они также ощутят строгость дедлайнов и интенсивность практических заданий.
Первая часть курса фокусируется на изучении основ программирования, работе с компилятором и системой контроля версий. Во второй части рассматриваются основные возможности языка C++, включая возможности стандарта C++11, а также ключевые принципы проектирования и тестирования. Заключительная часть курса посвящена изучению популярного кроссплатформенного фреймворка Qt.
Хотя курс не охватывает все аспекты разработки, он знакомит с наиболее важными возможностями языков C, C++ и фреймворка Qt. Живое взаимодействие с преподавателями позволяет получить обратную связь по стилю кода, оформлению комментариев и разработке тестов.
Информация о курсе: стоимость — 1 500 руб. - 2 700 руб., длительность курса - 23 урока (10+ часов)
В рамках курса вы изучите язык программирования C++ и освоите написание консольных приложений, а также научитесь разрабатывать программы для операционной системы Windows. Вы создадите функциональные приложения, способные взаимодействовать с базой данных, а также обладающие привлекательным пользовательским интерфейсом.
Этот руководство предназначено для тех, кто желает овладеть фундаментальными принципами программирования на языке C++. Уроки ориентированы в первую очередь на начинающих, но также будут полезны и тем, кто уже имеет некоторый опыт в области программирования. Начиная с основных концепций, мы постепенно перейдем к более сложным примерам в ходе данного курса.
Этот курс представляет обзор всех ключевых функций языка программирования C++ и их применение при разработке программ с объектно-ориентированным подходом. Включается краткое изложение библиотек C++, требуемых для создания стандартных программ.
Время, необходимое для изучения C++, может варьироваться в зависимости от нескольких факторов, таких как ваш предыдущий опыт программирования, цель изучения, интенсивность занятий и методы обучения. Вот несколько ориентировочных временных рамок:
Начальный уровень (1-3 месяца):
Цель: изучение основ синтаксиса и базовых концепций, таких как переменные, типы данных, циклы, условные операторы, функции, массивы и простые структуры данных.
Рекомендуемое время: при регулярных занятиях (например, несколько часов в неделю) можно освоить основы C++ за 1-3 месяца.
Средний уровень (3-6 месяцев):
Цель: понимание более сложных аспектов, таких как указатели, динамическая память, классы и объекты, наследование, полиморфизм, стандартная библиотека шаблонов (STL).
Рекомендуемое время: с регулярными и более интенсивными занятиями, возможно, потребуется 3-6 месяцев для достижения уверенного среднего уровня.
Продвинутый уровень (6-12 месяцев и более):
Цель: глубокое понимание продвинутых тем, таких как многопоточность, работа с сетями, продвинутая работа с шаблонами, метапрограммирование, оптимизация производительности, понимание внутренней реализации STL и других библиотек.
Рекомендуемое время: достижение продвинутого уровня может занять от 6 месяцев до года и более, особенно если ваша цель — стать профессиональным разработчиком C++.
Рекомендации для ускорения процесса обучения:
Практика: регулярное написание кода и участие в проектах помогут закрепить полученные знания.
Курсы и учебники: использование качественных ресурсов, таких как книги, онлайн-курсы, видеоуроки.
Сообщество: участие в форумах, сообществах и обсуждениях с другими программистами.
Проекты: реализация собственных проектов или участие в open-source проектах для практического применения знаний.
Менторство: найти ментора или наставника, который сможет помочь с решением сложных вопросов и направить процесс обучения.
Для чего учат C++?
Изучение C++ имеет множество применений и открывает двери к различным областям программирования. Вот несколько основных причин, почему люди учат C++:
Системное программирование:
C++ широко используется для разработки операционных систем, драйверов устройств и других системных программ. Его высокая производительность и доступ к низкоуровневым функциям делают его идеальным для этих задач.
Игровая индустрия:
C++ является одним из основных языков программирования в игровой индустрии. Многие игровые движки, такие как Unreal Engine, написаны на C++. Его высокая производительность позволяет создавать сложные графические и физические эффекты в играх.
Встроенные системы:
C++ используется для программирования микроконтроллеров и встроенных систем, таких как бытовая техника, автомобили и медицинские устройства. Низкий уровень управления ресурсами позволяет оптимизировать производительность и энергопотребление.
Высокопроизводительные вычисления:
C++ используется в научных вычислениях, финансовом моделировании и других областях, требующих высокопроизводительных вычислений. Его способность работать с большими объемами данных и сложными алгоритмами делает его популярным выбором.
Разработка приложений:
C++ подходит для разработки различных типов приложений, от настольных до мобильных и веб-приложений. Он часто используется в приложениях, требующих высокой производительности и надежности.
Стандартные библиотеки и инструменты:
Многие стандартные библиотеки и инструменты разработки программного обеспечения написаны на C++, что делает его важным языком для понимания и использования этих инструментов. Например, большая часть стандартной библиотеки языка программирования Python реализована на C++.
Обучение и академические исследования:
Изучение C++ помогает понять фундаментальные концепции программирования и компьютерных наук. Его сложность и мощь делают его полезным инструментом для обучения структур данных, алгоритмов и принципов объектно-ориентированного программирования.
Карьерные возможности:
Знание C++ открывает множество карьерных возможностей. Многие крупные компании, такие как Google, Microsoft и Facebook, активно используют C++ и ищут специалистов с опытом работы на этом языке.
Производительность и эффективность:
C++ позволяет разработчикам писать высокопроизводительный и эффективный код. Это делает его популярным выбором в тех областях, где производительность критична.
Сколько зарабатывает программист С ++?
Заработная плата программистов С++ в России может существенно варьироваться в зависимости от нескольких факторов, включая опыт работы, уровень знаний, регион проживания и специфику компании, ориентировочные данные таковы:
Джуниор (начальный уровень, до 1-2 лет опыта):
Средняя зарплата: 70,000 - 120,000 рублей в месяц.
Мидл (средний уровень, от 2 до 5 лет опыта):
Средняя зарплата: 120,000 - 200,000 рублей в месяц.
Сеньор (высокий уровень, более 5 лет опыта):
Средняя зарплата: 200,000 - 350,000 рублей в месяц.
Team Lead или Архитектор:
Средняя зарплата: 300,000 - 500,000 рублей в месяц и выше.
Можно ли учить C++ новичку?
Да, новичку можно учить C++, но стоит учитывать несколько факторов, чтобы этот процесс был успешным и не отпугнул от программирования в целом:
Преимущества изучения C++ для новичков:
Глубокое понимание компьютерных систем: C++ помогает понять, как компьютеры работают на низком уровне, включая управление памятью и операционные системы.
Высокая производительность: программы на C++ могут быть очень быстрыми и эффективными, что важно для многих приложений, особенно в играх и системах реального времени.
Широкая применимость: знание C++ открывает доступ к множеству областей, включая разработку игр, системное программирование, создание встроенных систем и работу с большими системами.
Трудности, с которыми может столкнуться новичок:
Сложность синтаксиса: C++ известен своим сложным и многослойным синтаксисом, который может отпугнуть начинающих.
Управление памятью: в C++ нужно самостоятельно управлять памятью, что может привести к ошибкам, таким как утечки памяти или повреждения памяти.
Стандартные библиотеки: хоть стандартные библиотеки C++ очень мощные, их использование может быть непростым для начинающих.
Советы для новичков:
Начинайте с основ: начните с простых программ, чтобы понять базовые конструкции языка, такие как переменные, циклы и условия.
Изучите управление памятью: понимание, как работает динамическое распределение памяти (new и delete), является ключевым аспектом программирования на C++.
Практикуйтесь на проектах: практические проекты, даже небольшие, помогут лучше понять язык и его возможности.
Используйте ресурсы для обучения:
Книги: например, "Programming: Principles and Practice Using C++"
Онлайн-курсы
Форумы и сообщества: Stack Overflow, Reddit и другие могут быть полезны для получения помощи и обмена опытом.
— И это всё, что ты можешь сказать после семи с половиной миллионов лет работы?
— Я всё очень тщательно проверил,
— сказал компьютер,
— и со всей определённостью заявляю, что это и есть ответ. Мне кажется, если уж быть с вами абсолютно честным, то всё дело в том, что вы сами не знали, в чём вопрос.
— Но это же великий вопрос! Окончательный вопрос жизни, Вселенной и всего такого! — почти завыл Лунккуоол.
— Да,
— сказал компьютер голосом страдальца, просвещающего круглого дурака.
Постараюсь ужать многолетний опыт изучения навыков в одну малюсенькую статейку. Расскажу , как на практике освоить набор навыков любого размера, включая все необходимое, чтобы получить первую работу в IT. Объясню пошагово, как создать и придерживаться очень практичного и эффективного индивидуального плана обучения, по которому я сам занимался, в результате чего из полного чайника без диплома и платных курсов за пол года смог влететь в разработку на высококонкурентном рынке с 1000+ откликов на вакансию во времена массовых увольнений сразу в топовую IT‑компанию без связей, накрутки опыта и ментора и даже успешно пройти там испыталку, ведь план обучения позволил накопить багаж полезных знаний.
Правильный план обучения — это 70% получения работы. По этому плану ты сможешь освоить программирование без покупки курсов, то есть стать программистом бесплатно. Да и любой другой скилл или профессию тоже сможешь быстро и бесплатно получить, что сейчас особенно актуально с этим ИИ. Гарантирую, что по этому плану за короткий срок ты добьёшься больших результатов, а это автоматически значит, что потребуется тяжелая работа с твоей стороны. В конце статьи также будет секретный ингредиент, о котором никто не говорит и который может сделать процесс твоего обучения чуть ли не вдвое более эффективным. Ещё я приведу пример реального плана обучения и объясню, почему каждый его пункт настолько логичен, что ты просто не сможешь ему не придерживаться. Цель плана ‑получить максимальный результат при минимальных затратах времени и сил.
Почему вообще нужно составлять план обучения самому? Нельзя что ли чей‑то готовый роудмап найти или курс купить, где план уже есть? Составлять план самому — суперважно, потому что когда ты понимаешь, что и зачем в нём делается и насколько это действительно эффективно, то и придерживаться этого плана становится гораздо проще, так как мотивация просто не пропадает. Да и если что‑то в плане не работает, можно всегда его подкорректировать, это же твой собственный план. Поняв, что работает, а что нет, ты в будущем сможешь создавать эффективные планы для освоения любых навыков, в том числе для выхода в синьеры‑помидоры, т.к. одного волшебного курса по становлению синьером вроде еще никто не запилил. Единственный доступный вариант — самому грамотно выстроить процесс обучения, чтобы результат был максимальным.
Самое простое в создании плана обучения — определить, какие именно навыки нужно приобрести. Для этого можно провести небольшое исследование и посмотреть требования к кандидатам на вакансии твоей будущей специализации. Учти, что учить стоит только то, что так или иначе повышает твой доход. Это значит, что стоит фокусироваться только на необходимых для получения работы знаниях и навыках, отметая все лишнее, в обратном случае будет сложно конкурировать с другими челами. Отметать, нужно, например, ассемблер или внутреннее устройство ОС, которые знать не обязательно и даже вредно. Некоторые говорят, что нужно же знать эту «базу», но объяснить зачем толком не могут. Выбрав необходимые для работы скиллы, нужно понять самое главное — как эффективно учиться. Это будет основой твоего плана обучения. Многим кажется, что они и так умеют учиться, но, если бы все это умели, никто бы не мучился с получением первой работы в IT, так как количество твоих навыков прямо пропорционально шансу получения работы. Основы обучения, о которых пойдет речь, очень практичны и я их сам уже много лет использую:
Практика
Практика — это самое важное. Хорошее соотношение практики и теории при обучении для новичков — 80% на 20%. То есть, если ты посмотрел 8-минутное видео, например, про декораторы в Python, то в IDE надо потом не меньше получаса с ними поиграться. Большинство людей практику скипают, потому что это гораздо сложнее, чем видосы смотреть. В итоге они застревают в так называемом «tutorial hell», то есть смотрят много контента, но на практике ничего сделать не могут, поэтому их навыки не развиваются.
Интервальные повторения
Непонимание интервальных повторений — причина, по которой 95% вкатунов сливаются в первые месяцы. Работает это так: когда ты что‑то учишь впервые,то это запоминается на пару дней. Если тему повторить через 2 дня после изучения, то запомнится она уже на 4 дня. Повторишь еще раз к концу четвертого дня — тема запомнится уже на целых 8 дней. Потом на 16, 32 и так далее. Бытует мнение, что в итоге доходишь до момента, где выученное запоминаешь на вечно, так, что повторять тему больше не надо. Хоть это и кажется нереальным, это действительно так работает, однако тому есть научное объяснение: допустим, ты повторяешь тему в девятый раз и теперь будешь помнить её ещё целый год. Если вовсе перестать ее повторять, то всё равно имеется почти 100% шанс того, что за этот год в работе ты случайно столкнёшься с этой темой и тебе придётся естественным образом достать информацию из мозга, просто чтобы совершить намеченное действие. Таким образом тема повторится сама по себе и еще лучше закрепится в голове. Затем вероятность того, чтобы ты случайно встретишь эту тему в работе за следующие 2 года возрастает еще сильнее и тем самым цикл замыкается, в результате чего ты запоминаешь тему как бы «на вечно»
Вот что происходит с теми, кто не применяет интервальные повторения: Допустим, им нужно выучить 15 ключевых навыков или больших тем для получения работы. Большинство новичков учат первые 9 навыков, потом приступают к 10-му, одновременно забывая первый. Потом учат 11-й, параллельно забывая второй и так далее. Они застревают на 9 из 15 необходимых тем или навыков и несмотря на все усилия, не могут преодолеть этот барьер, ведь скорость забывания слишком высока. Причина в том, что они не используют интервальные повторения. Они учат что‑то один раз и двигаются дальше, поэтому постоянно забывают то, что учили ранее. Но если использовать интервальные повторения и регулярно повторять пройденные темы, то можно выучить бесконечное количество навыков и тем, не забывая их. Самое важное в том, что интервальные повторения буквально гарантируют, что ты найдешь работу, потому что они обеспечивают постоянное расширение твоего набора навыков без его уменьшения. Это продолжается вплоть до момента, когда твой набор навыков достигает критической массы и ты становишься настолько хорош, что твой будущий работодатель уже просто не в состоянии игнорировать тебя (естественно надо еще получить навык поиска работы, но это уже отдельная тема).
Для внедрения интервальных повторений можно использовать карточки Anki. Карточки Anki — это приложение, используемое для обучения и запоминания. На лицевой стороне каждой карточки находится вопрос, на оборотной стороне — ответ. Карточки становятся доступны ровно в тот момент времени, в который это необходимо для наилучшего применения принципа интервальных повторений. Эти же карточки включают в себя и не менее важный принцип — принцип активного вспоминания.
Активное вспоминание
Активное вспоминание сводится к следующему высказыванию: твой мозг запоминает информацию не когда ты её откуда‑то получаешь, а именно когда извлекаешь её из мозга. Если, ты, например, прочтешь эту статью и сразу переключишься на следующую, то будешь что‑то помнить из этой статьи еще в течение примерно одного часа. Но если при прочтении статьи периодически останавливаться и объяснять себе концепции своими словами, то можно будет запомнить чуть ли не 100% информации статьи чуть ли не на целую неделю. Тот же результат можно достичь, если прочитать статью и в конце всю ее себе пересказать. Вот почему во время интервальных повторений необходимо как можно больше фокусироваться на активном вспоминании. Кстати, когда человек выполняет практические задания, это тоже автоматически является формой активного вспоминания, ведь ты работаешь с ранее изученной информацией и это является частью причины того, почему практические упражнения так эффективны.
Ты, наверное, задаешься вопросом, зачем запоминать что‑то, если можно просто использовать ChatGPT для получения быстрого ответа.
Чем больше полезной информации ты усвоишь и запомнишь, тем легче тебе будет понимать ответы ChatGPT и, что самое важное, сохранять эти ответы в краткосрочной памяти в виде части решения задачи, над которой сейчас работаешь. Ты также будешь глубже понимать ответы ChatGPT и даже вспоминать идеи, которые не были упомянуты в ответе.
Учись параллельно
Лучше работать над изучением одних и тех же трех навыков каждый день по часу и сосредотачиваться на них пару недель подряд, чем уделять по 3 часа в день одному навыку в течение нескольких дней и затем переходить к следующему. Это один из важнейших принципов. Я понятия не имею, почему он работает, но не обязательно понимать, как что‑то работает, чтобы это делать и получать ощутимый результат. Попробуй поучиться так и будешь поражен скоростью освоения навыков.
Фокусируйся на основах до полного их освоения
В чем заключается разница между профессионалом и любителем? Профессионал очень хорошо знает основы. Основы служат фундаментом для последующих тем, изучаемых в будущем. Например, чтобы быстрее освоить React, нужно знать JavaScript, и чем лучше ты знаешь этот язык, тем легче будет разобраться в React. Поэтому не торопись и досконально изучи компетенции, служащие основой для других компетенций.
Учись каждый день
После месяца обучения результаты будут намного лучше, если учить предмет по часу каждый день, нежели чем если учить его 7 часов в день раз в неделю. Это банально объясняется принципом работы интервальных повторений.
Начинай каждый день с 10 минут вспоминания того, что учил вчера
Утром, перед началом нового дня, удели 10 минут, чтобы вспомнить все, что учил вчера. Это очень эффективно, так как первое повторение в течение первых 24 часов после изучения темы имеет огромный эффект на запоминание.
Секретный ингредиент
Теперь у тебя есть основные принципы создания плана обучения, но что насчет секретного ингредиента? Хотя все вышеперечисленные пункты идеально подходят для эффективного долгосрочного обучения, если ты стремишься получить работу, твоя цель не в том, чтобы изучить как можно больше всего, а в том, чтобы достичь уровня, где у тебя есть крутые проекты и ты можешь успешно пройти собеседование. В этом случае секретный ингредиент — интенсивность. Например: чтобы достичь такого же уровня навыков в программировании, который тебе нужен для успешного прохождения собеса, ты можешь либо потратить 1000 часов за полгода, либо 1500 часов за год. Заметили разницу? За 1000 часов достигается тот же результат, что и за 1500 часов. Это объясняется принципом работы интервальных повторений: чем больше проходит дней, тем больше времени нужно тратить на интервальные повторения, в обратном случае информация просто забудется. Поэтому если сжать временное окно, в которое ты достигаешь необходимого уровня навыков, скажем, с года до полу года, то таким образом можно значительно уменьшить общее количество часов, необходимых для достижения цели, и, следовательно, работать меньше, получая бОльшие результаты. Теперь ты знаешь, что должен включать твой план обучения.
Пример плана
Давай теперь посмотрим, как может выглядеть такой план на примере реального плана становления python backend разработчиком:
Пример плана изучения python backend
Каждая колонка — это день, а каждая синяя ячейка — это как минимум 1 час сфокусированного базированного на практике обучения. Первый месяц ты параллельно учишь Python, SQL и алгосы (алгосы не в смысле заучки конкретных алгоритмов, а в смысле умения структурно думать и решать логичские задачки кодом, как, например, на codewars). Это то, что создает основу для всего остального, что ты будешь изучать. После этого добавляешь дни для вспоминания изученного, чтобы ничего не забыть. Далее начинаешь создавать проекты с использованием Django и подучивать немного фронтенд‑технологий, чтобы можно было потом показать рекрутеру хороший и красивый проект (хочешь работать беком? Учи фронтенд, чтоб тебя рекрутер не скипнул с твоими уродливыми проектами, понял да). Все это делаешь параллельно, а также учишь git для развития своего GitHub. Фокусируешься на создании проектов с Django до тех пор, пока не найдешь работу. Дополнительно добавляешь дни, в которые будешь повторять, что учил, чтобы ничего не забыть. Затем учишь параллельно Linux, PostgreSQL и Docker, завершая процесс изучением Django Rest Framework, одновременно повторяя все, что учил ранее. Как видишь, этот план включает в себя много практики, интервальных повторений и активного вспоминания. Ты учишь по нескольку предметов параллельно и сначала фокусируешься на основах. Ты учишься каждый день, начиная каждый день с 10 минут повторения того, что выучил вчера, что еще сильнее оптимизирует твое обучение. А занятия как минимум по 4 сфокусированных часа (а лучше — по 10) в день обеспечивают интенсивность, которая в полтора раза сокращает общее количество часов, необходимых на получение всех этих навыков.
Но как понять, какой конкретно курс проходить?
Короткий ответ состоит в том, что можно просто найти бесплатный курс и следовать ему, лично я предпочитаю использовать для этого YouTube. Бесплатные курсы обычно не содержат практических упражнений, являющихся самой важной частью обучения, поэтому упражнения на определенную тему придется отдельно искать в интернете. Или можно даже поступить еще лучше: когда смотришь курс и видишь пример кода, решающего конкретную проблему, попробуй придумать похожий код, решающий аналогичную проблему и поиграться с этим кодом в среде разработки. Это один из самых эффективных способов практики, который мне удалось найти.
Самое важное
Гарантирую, что, прочитав эту статью, ты потратил своё время зря, если не применил к ней вышеупомянутые принципы, так как забудешь все о чем я тут написал. Давай теперь объясню, как применить основные из этих принципов к любой статье или обучающему видео. Возьмем эту статью, например. Если ты проследуешь следующим нескольким шагам в течение следующих 5 минут, то это будут одни из самых полезных 5 минут в твоей жизни. Во‑первых, возьми свой телефон и скачай приложение под названием Anki Cards. Я не спонсирован этим приложением и не имею к нему никакого финансового отношения, поэтому у меня нет ссылки и тебе придется найти его самому. Шаг 2 — Перестань читать и прямо сейчас и попробуй вспомнить все, о чем я говорил. Объясни себе своими словами все, что удается вспомнить (да, прямо сейчас, я жду). Шаг 3. В зависимости от того, что удалось вспомнить, открой приложение Anki и создай несколько карточек об этой статье. Например: что такое интервальные повторения и как их применять? Что такое активное вспоминание? Какое лучшее соотношение между практикой и теорией для начинающих? Шаг 4. Сформируй привычку открывать это приложение время от времени, повторять карточки и добавлять новые о всем важном, что ты изучаешь в программировании. Лично я таким образом не только запомнил всё, что учил, но и ответил на 98% вопросов на своем первом в жизни собеседовании.