Найти тему
Кабачок "У Тулио"

Курс "Разработчик C++" от Яндекс Практикума - короткий отзыв

Всем привет! Сегодня поделюсь с вами впечатлениями от прохождения курса "Разработчик C++" от Яндекс Практикума. В целом, отзыв будет полезен всем, кто рассматривает эту платформу для повышения своей квалификации вне зависимости от выбранного профиля подготовки, т.к. метод обучения будет примерно один и тот же. И это не реклама. Поехали!

Для начала небольшое отступление: в этой статье я не буду никого призывать стать адептом языка C++. Просто мне он издавна был интересен, нас с ним связывает долгая история и по этой причине было принято решение пройти курс современного C++ (в первую очередь, для себя). Забегая вперёд, узнал много нового и интересного.

Курс "Разработчик C++" от Яндекс Практикума
Курс "Разработчик C++" от Яндекс Практикума

Итак, в один обычный сентябрьский день 2022 года я узнал о том, что была продлена программа "Цифровые профессии" и, что немаловажно, ходили слухи, что это было в последний раз. Я подходил по "детской" категории (родитель с ребёнком младше трёх лет), которая давала скидку 50%. Не смотря на ограниченность в средствах (как раз закончился дачный сезон), я решил подписаться на это дело. Я ещё не знал, что с этим решением запрыгнул в закрывающиеся двери последнего вагона уходящего поезда.

Оставалось дело за малым: выбрать на кого пойти учиться. Сразу вспомнился детский вопрос: кем ты хочешь стать, когда вырастешь? Ответа на него я не могу дать по сей день (и это видно из тематики данного канала)! Выбор пал на два языка программирования: C# и C++. Первый связан с продуктами Microsoft и мог бы стать подспорьем на работе (но это не точно), а второй был просто интересен. К сожалению, обучение по C# в Яндекс Практикуме не было предусмотрено, поэтому выбор свой я остановил на языке C++.

И смешно и грустно!
И смешно и грустно!

Почему я выбрал среди всех обучающих платформ именно Яндекс Практикум? Причина предельно проста: на тот момент я относился к самой компании Яндекс хорошо и думал, что они разрабатывают только годное программное обеспечение, а значит и научить смогут. Но недавно я немного изменил своё мнение и это не из-за политики компании, а по вполне приземлённой причине: в рамках импортозамещения контора, в которой я работаю, перешла на экосистему Яндекса, которая включает в себя почту, диск, трекер (система ведения задач) и вики (система хранения различной информации, например технических заданий - ТЗ). Так вот, после зарубежных Jira и Confluence - это какой-то позор. Серьёзно, у меня уже раза три пропадали изменения, которые я вносил в ТЗ, а за своими задачами следить - это вообще муки ада! Всё, как известно познаётся в сравнении, надеюсь, они исправятся. Но, к счастью, курс меня не разочаровал.

На момент оплаты курс стоил 126000 рублей. Мне же нужно было оплатить половину, но всю сразу, не разбивая на платежи (это было одно из условий получения льготы по Цифровым профессиям). После записи на курс и оплаты со мной связалась куратор и попросила пройти бесплатную часть до начала курса, что я и сделал без особых проблем. Сразу оговорюсь, что задачи бесплатной части были специально более простыми (на мой взгляд), чем в основной (платной) части курса, и разница проявилась сразу.

Программа курса
Программа курса

Итак, обучение началось. На первой онлайн встрече вскрылся главный косяк Цифровых профессий (ЦП) - один академический отпуск (при обычном обучении их число доходит до трёх) и платное расторжение (если ты собираешься отчислиться в первой половине курса, то спишется за обучение из тех денег, что ты уже оплатил, а если во второй половине, то придётся заплатить ещё сверх этого). А отсюда вытекает обязательное прохождение курса в жёсткие сроки для получения оплаты от государства (та самая ЦП льгота) и диплома.

Поначалу казалось, что курс достаточно простой, т.к. первые четыре спринта (спринт равен двум неделям) прошли достаточно плавно: я мог себе позволить первую неделю ничего не делать, а затем всё успеть в следующую неделю спринта. Так продолжалось недолго. Задания становились всё более сложными, и из условных 3-4 часов в неделю получилось где-то 20-40 часов в неделю, если не больше. Последние три спринта перед дипломом занимали всё моё нерабочее время. Именно в связи с этим перестали выходить статьи на этом канале! И не смотря на то, что курс закончился в конце сентября 2023 года, в себя я пришёл только сейчас, в марте 2024 года.

Тренажёр бесплатной части. Решение замазал, чтобы ко мне потом не было вопросов. К некоторым заданиям после проверки можно посмотреть "авторское решение".
Тренажёр бесплатной части. Решение замазал, чтобы ко мне потом не было вопросов. К некоторым заданиям после проверки можно посмотреть "авторское решение".

Сам курс строится следующим образом: чтение теории, выполнение задания в тренажёре с автоматической проверкой и финальный проект, который сдаётся на Code Review (проверка человеком). По результатам - получаешь допуск к следующему спринту. Спринты собраны в блоки по четыре и за крайний выйти нельзя до наступления даты жёсткого дедлайна (вернее можно, но с переходом в другой обучающий поток).

Особенно бросаются в глаза задачи двух крайностей: это может быть интеллектуальная классическая задача, например Ханойские башни, либо задача на новый синтаксис, где в готовый код нужно вставить, условно, одну строчку. Самое тяжёлое, когда ты хочешь решить умную задачу сам, но время поджимает и приходиться лезть в интернет хотя бы за схемой решения, чтобы не тратить время зря. (Напомню, что после потери одного академического отпуска по ЦП, в следующий раз я бы вылетел с курса и доплачивал за то, что успел пройти сверх лимита). А помимо этих задач есть ещё основной проект, которым завершается спринт и который тоже нужно успеть сделать и сдать на проверку. Спешить приходится для того, чтобы вовремя приступить к нему, ведь он отнимает больше всего сил.

Примерно так прошли последние 5 месяцев курса 24/7
Примерно так прошли последние 5 месяцев курса 24/7

Высокая цена за курс оправдывается тем, что каждый день (за редким исключением праздничных дней) есть дежурный наставник, которому можно задавать вопросы по задачам, правда есть один нюанс: он говорит не решение проблемы, а намёк на решение. По этой причине всегда приходится думать своей головой. Периодически проводятся семинары по сложным темам или по началу нового проекта.

Теперь про сами проекты: в учебной части имеется 2 крупных проекта (поисковый сервер и транспортный каталог) и несколько маленьких (классические задачи на создание связного списка или вектора), а также один дипломный проект (электронная таблица) и один необязательный бонус (разработка собственного интерпретатора языка). С маленькими проектами, которые делаются за один-два спринта всё более-менее было просто, потому что написанная программа должны была соответствовать требованиям только этой задачи (максимум, двух), поэтому не приходилось часто переписывать собственную программу. А вот большие проекты приходилось переписывать постоянно и связано это, как ни странно с попытками отхода от "невидимой колеи", проложенной наставниками и разработчиками курса.

Работа программиста: ожидание/реальность
Работа программиста: ожидание/реальность

В интернете можно часто увидеть мнение, что программирование - творческий процесс и импровизация, но только не здесь. На Code Review часто указывают на места твоей программы, которые не соответствуют эталонному решению, аргументируя это тем, что в следующих доработках мне всё-равно это придётся сделать, иначе я не смогу идти дальше. Поэтому, если нам выдавали готовые решения (после того, как мы сдавали собственное), приходилось сверяться с "эталонным" кодом, дабы ничего не пропустить.

Данная проблема может показаться надуманной, пока не посчитаешь объёмы программ от спринта к спринту по количеству написанного кода. Предлагаю рассмотреть только два крупных проекта и их рост по спринтам. Если поисковый сервер от спринта к спринту увеличивался, в среднем, на 200-400 строк кода и достиг приличной отметки в 1000 строк (плюс-минус), то транспортный каталог рос, опять же, в среднем, на 500-1000 строк за раз и достиг отметки в 4000 строк за короткий промежуток времени. Времени на переписывание просто не оставалось, поэтому приходилось выяснять "правильное" направление работы, чтобы пройти сначала тренажёр, а затем и Code Review.

C++ и помощь при поиске ошибки
C++ и помощь при поиске ошибки

Самым неправильным, на мой взгляд, решением при составлении курса было расположение в последнем спринте рядом двух новых тем: сериализации и системы сборки. С одной стороны, этим и должно было завершиться знакомство с языком C++, с другой стороны это было совершенно не вовремя, т.к. все мысли уже были о дипломном спринте. Но, тем не менее, удалось пройти и через это. Что хорошо, курс от потока к потоку претерпевает существенные изменения. После каждого модуля нужно обязательно заполнить обратную связь, поэтому все свои замечания я оставлял там, включая и это тоже.

Что можно сказать по итогу прохождения обучения? Это было серьёзное испытание моей силы воли, усидчивости и умственных способностей. Да-да, именно в таком порядке. Сама программа курса (и договор, который мы заключаем с Яндекс Практикумом) выступают в роли Карабаса-Барабаса, который стоит с палкой и следит за тем, чтобы мы работали. Иного объяснения нет, почему подобные курсы имеют такую популярность. После прохождения всего курса я стал продолжать читать про этот язык программирования специальную литературу, но совершенно другими глазами. И сделал интересный вывод: на те средства, которые платятся за подобные курсы можно скупить почти всю литературу на соответствующую тему. По крайней мере, почти всю информацию по курсу я нашёл в 5-6 книгах. Вот только купить книгу - это одно, прочитать - другое, а проработать третье. Сам же курс мне понравился, было здорово.

Отлично, надо брать!
Отлично, надо брать!

А на сегодня всё! Если было интересно, подписывайтесь на канал, пишите комментарии и ставьте пальцы вверх. До новых встреч!