Год назад я закончил обучение в Яндекс Практикуме по направлению «Анализ данных». Это было новый и крутой опыт! Тогда я написал большой отзыв о своем опыте, почитать его можно тут: «Отзыв о курсе «Анализ данных» от Яндекс Практикум ».
По завершению курса, кроме классных знаний и навыков появились и новые интересы. Пообщавшись с опытными коллегами, я составил для себя список навыков, которые хочу получить или улучшить: SQL, Python, Алгоритмы, JavaScript, визуализация данных (GDS, Power BI, Tableau), Cloud services (Yandex Cloud / Amazon), Google Tag Manager и так далее. Кстати, этот список продолжает расти постоянно.
Вариантов как закрывать хотелки масса. Но ведь есть опробованный путь, который уже показал свою эффективность. Короче, еще во время обучение на анализе данных, я заприметил курс у Практикума «Python-разработчик». Туда я и пошел.
Сейчас моё 9 месячное обучение на этом курсе подходит к завершению, впереди остался диплом. И в этом отзыве я хочу рассказать о своем опыте обучения питону в практикуме.
UPD: Диплом успешно сдан.
Почему решил пойти учиться в Практикум на python-разработчика?
К сказанному выше надо добавить несколько вещей:
- Мне очень понравилось кодить! Это очень круто, когда ты можешь написать скрипт, который освобождает тебя от рутинной работы. Вот ты тратишь каждую неделю 2–3 часа на не самое интересное дело. И тут, пуф! И больше ты не тратишь это время, а результат тот же.
- У меня родилась дочь. И это прекрасная мотивация, для того чтобы становиться лучше. И зарабатывать больше :)
- У меня есть хорошая скидка на обучение в практикуме. По традиции, готов поделиться ею с другими. Пишите в мне в телеграм @ruslan_fd или vk @fathutdinov .
Как проходит обучение
Процесс обучения похож на то что было на курсе анализа данных, и не похож одновременно. Каждый блок будто чуточку повернут другой стороной, и от этого создается ощущение непривычности. Постараюсь описать как это, сравнивая курс «Анализ данных» и курс «Python-разработчика».
Сразу хочу сказать, что в обучении по направлению анализа данных за прошедший год что-то могло измениться и мое представление вполне может быть не актуальным.
1) Структура обучения
— Аналитик данных:
Обучение разбито на 11 спринтов (+2 больших проекта +1 диплом). Каждый спринт посвящен новой теме, которая является продолжением предыдущего спринта. Например : Выгрузить данные > Посчитать бизнес-метрики > Принять решение и т.д.
Спринт разбит на 2 недели. Первая неделя отводится на теорию. Вторая на решение самостоятельного задания.
— Python-разработчик:
Обучение разбито на 5 блоков (+1 диплом). Каждый курс посвящен отдельной теме.
И уже каждый блок внутри себя разбит на несколько отдельных спринтов (от 3 до 8). Каждый спринт, как и полагается, завершается самостоятельным проектом.
В завершении блока идет большой самостоятельный проект.
2) Процесс обучения
— Аналитик данных:
Теория разделена на 2 части.
- Текстовый урок, в котором подается материал и даются ссылки на полезные сопутствующие материалы.
- Тренажер , который обычно идет сразу после текстового урока. Ставится микро-задача, которую надо решить в окне тренажера. Если все правильно, урок завершен, переходи к следующему.
— Python-разработчик:
Теория также разделена на 2 части.
- Текстовый урок с основной информацией. И ссылки на сопутствующие материалы. Сопутствующие материалы в 90% случаев обязательны к изучению. Обычно в этих материалах еще ~60% обязательной для усвоения теории.
- Практическая отработка , которая идет параллельно с чтением урока. Обычно практика идет на локальной машине, в редакторе кода Visual Studio Code или PyCharm, это уже кому что нравится больше.
Тренажер в процессе обучения тоже встречается. Но это бывает крайне редко. Да и, я думаю, тренажер не самое лучшее решение для отработки на бэкенде. Значительно интереснее и быстрее вносить правки на собственной машине.
Кстати, еще есть контест. И это интересная штука. Она так глубоко западает в сердечко каждого студента! Но я не решусь проспойлерить вам что это :).
3) Общение со студентами и наставниками
Для обоих направлений создается свой workspace в slack c набором тематических каналов. Пример каналов:
- info — важные объявления,
- library — полезные ссылки,
- offtopic — флуд на посторонние темы,
- project — обсуждение самостоятельных проектов,
- theory — обсуждение теории.
и так далее.
— Аналитик данных:
Студенты делятся на небольшие группы по ~10 человек. У каждой группы свой наставник. Формируется очень крутая и «семейная» обстановка.
Вебинары можно, условно, поделить на 2 вида:
- Групповые. В них больше лично общение. Темы: как дела, что получается, что не получается, чем помочь?
- На всю когорту. Обсуждение и разбор текущей темы.
— Python-разработчик:
Сначала нас поделили на 4 большие группы с разными наставниками. Позже группы пересобрали в 2 большие. Получился более классический учебный подход. Понятно что это оптимизация ресурсов. Но вот той уютной атмосферы маленькой команды нет.
Вебинары проводятся сразу на всю когорту. И это, в принципе нормально. Тут тоже можно выделить 2 вида вебинаров:
- Разбор текущей темы.
- Разбор темы по запросу. Обычно на таких вебинарах обсуждаются темы, которых нет в учебной программе.
Особенно хочется выделить, что вебинары обычно проходят в режиме лайвкодинга. То есть наставник (или гость) решает задачу, комментируя все происходящее. И в любой момент можно задать вопрос. В таком очень круто учавствовать!
4) Работа над самостоятельными проектами
Скорее всего тут мой опыт учебы на аналитика данных уже устарел, но для полноты картины расскажу как было у меня.
— Аналитик данных:
Обычно самостоятельный проект на анализе данных это серьезное мини исследование, которое, даже при хорошем понимании, требует 4–8 часов работы.
Цель такой работы — закрепить на практике материал спринта. Как использовать новые инструменты понятно. И еще раз закрепить навыки формирования выводов и рекомендаций.
Код в проекте может быть громоздким, и не самым эффективным. Но, если он выполняет поставленную задачу, то, скорее всего, ревьюер просто даст совет, как сделать код короче / эффективнее.
— Python-разработчик:
Самостоятельный проект у python-разработчика может занимать 10–15 строк кода. НО!
- Этот код должен иметь правильную структуру. Понятные названия переменных / функций / классов. И на 100% соответствовать PEP8 (что это такое ).
- Этот код должен иметь хорошую и понятную документацию.
- Этот код должен быть коротким, понятным и эффективным.
Вспоминаю свой первый самостоятельный проект, который я высылал с мыслью: «Ха-ха! Вот я красавчик! Какой я умный». А через пару часов этот проект прилетел мне обратно с 9 критическими замечаниями от ревьюера! В итоге проект я сдал только с 3 раза. Но свое самомнение поумерил с тех пор :)
Кстати, все проекты python-разработчика сдаются через GitHub. Поэтому, уже ко 2–3 проекту я разобрался с Git и GitHub.
Чему учат
Как говорил выше, обучение на python-разработчика разбито на пять больших блоков.
- Основы python (этот курс бесплатный и пройти его может любой желающий ). Рассказывают и показывают на практике, что за язык такой этот питон. Что такое переменные. Что такое функции, зачем они нужны, как их писать и использовать. Что такое циклы и какие они бывают. Какие типы данных есть, чем они отличаются и когда их надо использовать.
- Возможности бэкенда . Рассказывают что такое базы данных, какие они бывают и как с ними работать. Что такое объектно-ориентированно программирование, и как писать свои классы. И очень много рассказывают и дают делать с фреймворком Django. Ты как бы учишь python, изучая Django. Два в одном! Вообще 80% этого блока посвящен именно джанго и его возможностям: регистрация и авторизация, работа с моделью данных, создание форм, подписки и так далее.
- Работа с внешними API (мой любимый блок ). Что такое API и REST API. Чем отличаются друг от друга запросы GET, POST, PUT и т.д. Как работать с API сервисов (на примере разработки собственного бота). И как создать свой полноценный API.
- Алгоритмы и структуры данных (сложность 12 из 10 ). Какие структуры данных есть и чем они отличаются. Какие виды сложности алгоритмов есть. Зачем вообще нужны эти алгоритмы. И все это на примере 200+ задач.
- Инфраструктура бэкенд-разработки . Что такое сервер, как он работает. Как поднять свой проект на облачном сервисе. Что такое nginx и как его настроить. Зачем нужен docker и docker-compose. Чем занимаются DevOps и как настроить непрерывную разработку + тестирование + деплой.
Темы, которые дают в течении разных блоков:
— Git и работа с GitHub,
— Работа с Visual Studio Code,
— Зачем нужно виртуальное окружение при разработке,
— Логирование в Python,
— Дебаггинг кода,
И еще бесконечно много других тем, по которым можно запросить вебинар у наставников.
Кто учит
Я бесконечно благодарен всей команде практикума за тот продукт и учебный опыт, который получил и получаю в процессе учебы.
Куратор курса Кривова Юлия. Спасибо тебе за поддержку, помощь и за то что всегда помогала держать руку на пульсе!
Наставники Леонид Тощев и Горлов Андрей. Спасибо вам за опыт и помощь, которую вы всегда даете. Даже если это поздняя ночь или самый глупый в мире вопрос. Вы создали крутую атмосферу командой работы!
Кстати, Горлов Андрей ведет свой подкаст «Каждый может» (ссылка Яндекс.Музыку ), в который он со своим коллегой приглашает людей, связанных с обучением в IT. И это реально крутой и интересный подкаст, который я советую послушать всем, кто задумывается над учебой в Практикуме (а может и в других школах).
Ревьюеры Арсен Халилов, Андрей Квичанский и Михаил Иванов. Спасибо вам за советы, которые помогают улучшить понимание темы и сделать код лучше!
Сокурсники . Ребята, спасибо вам за то что были рядом и делили все новые ощущения от учебы! Вы крутые и целеустремленные! У вас все получится.
Команда Практикума . Спасибо вам за классный и качественный продукт!
Что было хорошо?
- Подача материала . Материал хорошо подходит для тех, кто только делает первые шаги. Термины объясняюься отдельно. Ссылки на дополнительные материалы, которые улушат понимание темы всегда есть в тексте.
- Коммьюнити . Всегда есть ощущение что ты не один, рядом всегда есть люди, которые помогут и поддержат.
- Скорость проверки проектов . Только один раз проверка заняла более 3 дней. Все остальное время проверка занимает от часа до 24 часов.
Что было плохо?
- Техническая поддержка Облаков . Мне кажется что это самая медленная поддержка в мире.
- Отсутствие поиска . Тем много, терминов много, иногда забываешь где видел и приходится самому руками искать нужную информацию.
- Отсутствие какого-то единого хранилища с прошедшиими вебинарами .
Что можно сделать лучше?
- Сделать поиск . Знаю что работа в этом направлении идет.
- Сделать хранилище вебинаров , в том числе и у других когорт. И дать к нему доступ. Там просто гинанское количество полезной информации.
- Поыткайте уже палкой в ТП облака :)
Советы будущим студентам
- Читайте дополнительные материалы. Они даются не просто так. Это очень большой и важный пласт знаний.
- Если думаете что выбрать: Visual Studio Code или Pycharm, выбирайте VSC. Из коробки он мнее функциональный, но плагинами его можно сделать лучше и гибче чем Pycharm (бесплатная версия).
- Если не моежете решить учиться или нет, идите учиться! Даже если во время учебы вы поняли, что не угадали с выбором, Практикум всегда идет на встречу.
Заключение
Я не пожалел что пошел учиться. Было трудно, иногда слишком дискомфортно, а алгоритмы мне снились в кошмарах. Но я стал чуточку лучше. “Стоимость” моей головы стала выше. И я чувствую себя свободнее в выборе деятельности. Это круто!
Ну а впереди у меня еще пухлый бэклог хотелок, который я стараюсь закрыть, но он как гидра — закрываешь один пункт, появляется несколько новых.
P.S.
Все студенты Яндекс Практикума очень рады видеть этого человека ;)