Как стать автором
Обновить
126.33
Яндекс Практикум
Помогаем людям расти

Секреты, которых не замечают студенты: что мы спрятали внутри курса по Python

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров2.3K

Если вы думаете, что на курсах по Python в Практикуме просто изучают синтаксис языка, решают задачки, а больше там нет ничего интересного, у меня для вас новость! 

Внутри практически каждой главы, между строчек кода, в названиях переменных, в оформлении заданий и других местах курса спрятаны десятки пасхалок — от забавных отсылок до сюжетной нити, которая развивается от модуля к модулю.

И это не просто приколы ради приколов. Команда Яндекс Практикума и я, Евгений Бартенев, техлид и автор курсов по Python, хотели, чтобы курс ощущался не только как учебник, но и как игра. Чтобы внимательные студенты могли почувствовать, что находятся внутри чего-то большего. 

Мы вложили в этот курс душу. И теперь я хочу показать, что ещё скрыто за привычными строками текста и кода. Эта статья — ваш шанс заглянуть за кулисы процесса производства образовательного контента и стать одними из тех, кто видит и понимает больше. Поехали!

Шпаргалки с секретом

Курс по Python в Практикуме — это живой организм. Он постоянно обновляется, улучшается, в него добавляются новые примеры и дорабатываются старые. 

И при этом одно из самых настойчивых и регулярных пожеланий от студентов оставалось неизменным: «Сделайте шпоры!» Не просто одну-две. А шпоры для каждой темы, каждого урока, каждого раздела — это сотни страниц.

Задача, мягко говоря, не из лёгких. Во-первых, это просто большой объём. Во-вторых, курс постоянно меняется, и за всем этим нужно следить. А в-третьих, мы понимали риски. 

Когда у вас под рукой есть готовая шпора, всегда есть соблазн не вникать, просто пробежать глазами, скопировать, сохранить, поделиться в чате. И это не совсем тот путь, которым мы хотели бы вести студентов.

Скриншот из урока курса
Скриншот из урока курса

Чтобы сохранить актуальность и гибкость, мы решили не делать статичные PDF-документы. Вместо этого выбрали динамический формат в виде HTML-страниц, которые можно обновлять буквально в один клик. Один из авторов курса даже написал для этого генератор шпор, и это сильно упростило нам жизнь.

А чтобы немного взбодрить тех, кто слишком увлекается Ctrl + A и Ctrl + C, мы добавили пасхалки.

Серьёзно. Просто откройте одну или несколько шпор. Попробуйте выделить всё содержимое и скопировать. Что-то необычное обязательно всплывёт. Попробуйте несколько раз. Не буду спойлерить, но скажу так: мы знали, что вы это сделаете. И мы подготовились.

Это наш способ сказать: «Мы вас любим. Но не халтурьте, а?» Ведь учёба — это не только про результат, но и про путь, по которому вы к нему пришли. Даже если этот путь идёт через шпору с сюрпризом.

Степан Осечкин

Если вы проходили хотя бы один из курсов по Python в Практикуме, возможно, вам знаком персонаж по имени Степан Осечкин. 

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

Редактору он не понравился. Совсем. «Слишком сухо, сложно, не для людей», — сказал он. И это повторялось снова и снова: я переписывал, упрощал, а он всё равно возвращал — с тем же вердиктом. В какой-то момент он предложил: «А что, если подать тему через героя? Ну, пусть это будет кто-то из народа, кто через примеры из обычной жизни поймёт суть ООП».

Честно? Я злился. Мне казалось, что это полный абсурд. И решил… немного отыграться. Придумал персонажа — Степана Осечкина, хоккеиста. Степан — так зовут редактора, «Осечкин» — с намёком на известного хоккеиста и одновременно на то, что предложения редактора часто дают осечки (возможно, и эта идея — тоже).

Я начал писать текст от имени этого самого хоккеиста. И неожиданно — всё пошло. Оказалось, что у хоккея и ООП действительно есть много общего, и через эту метафору объяснять тему оказалось удивительно просто. Писалось легко и с вдохновением — не в последнюю очередь потому, что мне было весело представлять, как редактор будет править текст про себя.

Иллюстрация к статье про ООП
Иллюстрация к статье про ООП

Но вот парадокс: статья получилась настолько живой и понятной, что мы решили оставить всё как есть. Так Степан Осечкин стал не просто частью одной статьи, а со временем перекочевал и в курс. Теперь он живёт в уроках, заданиях, примерах и даже в сердцах некоторых студентов.

Обновление бесплатной части курса

Со временем Степан Осечкин стал для нас чем-то вроде внутреннего супергероя — появлялся в примерах, оживлял теорию, помогал проще воспринимать сложное. И когда передо мной встал новый вызов — он снова вышел на лёд.

Речь о бесплатной части курсов по Python. Исходная версия была создана достаточно давно, ещё до масштабных обновлений основной программы. За это время курс полностью переродился: новые подходы, новые задачи, новые форматы. А вот бесплатная часть осталась той же — местами устаревшей, частично потерявшей связь с тем, чем наш курс стал сегодня.

И вот — задача: придумать, спроектировать и написать новый вводный модуль. Он должен быть простым, понятным и проходимым, но при этом не превращаться в пустышку. И главное — давать понимание, что вы не просто изучаете синтаксис языка, а действительно делаете что-то полезное.

Я снова позвал на помощь нашего хоккеиста. И в этот раз он помогает студенту создать генератор календаря для любого года. Всё максимально приближено к реальности: вводите год — получаете красиво оформленный календарь. А по пути — изучаете основы Python.

Курс разбит на несколько простых этапов:

  • изучить основы программирования,

  • написать функцию, которая по номеру месяца возвращает количество дней,

  • написать функцию, определяющую, високосный ли год,

  • собрать всё вместе в итоговую программу, которая и сгенерирует календарь.

На каждом шаге — базовые знания Python: условия, функции, переменные, логика. Минимум воды — максимум пользы.

Чтобы презентовать новый вводный модуль курса по Python, я даже сделал небольшой ролик. Этот ролик не часть курса, не реклама и вообще нигде и никогда не публиковался. Я показывал его только внутри команды. Но раз уж вы дочитали до этого момента, считаю, вы его заслужили.

Стас Басов и другие герои курса

С началом платной части курса у студентов появляются новые напарники. Персонажи, с которыми вы идёте по пути изучения Python, — не просто абстрактные фигурки с аватарками. У каждого из них есть история. И лица. Буквально.

В одном из первых уроков блока про Django стажёра Стаса знакомят с его будущими коллегами. Казалось бы, просто вводная сцена: немного текста, пара имён, несколько аватарок. Но если вы думаете, что это просто генерация случайных лиц и имён, не спешите с выводами.

Все эти коллеги — настоящие люди. В роли сотрудников выдуманной команды — реальные участники команды курса: авторы, редакторы, ревьюеры, наставники. Со своими настоящими именами и внимательно прорисованными аватарками, которые по фотографиям нарисовала наш иллюстратор.

Скриншот из урока курса
Скриншот из урока курса

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

Да и наш главный герой, Стас, тоже подозрительно напоминает одного из редакторов курса.

Иллюстрация к уроку курса
Иллюстрация к уроку курса

Доподлинно неизвестно, кто именно придумал персонажа Стаса. Первые эскизы и идеи этого героя родились на веб-факультете, в те времена, когда Практикум был ещё крошечной командой, где все всех знали. Тогда авторы курса Python «одолжили» Стаса у веб-факультета — и с тех пор он с нами.

Одна из инкарнаций Стаса даже была замечена в фильме Практикума — так он окончательно стал частью мифологии платформы.

Кадр из фильма «Кризис среднего возраста»
Кадр из фильма «Кризис среднего возраста»

На курсе он сопровождает студентов практически до самого конца и растёт вместе с ними: от неуверенного стажёра до джуна, которому уже можно доверить что-то серьёзное. Иногда он мелькает в диалогах, иногда — в задачах, а иногда в пасхалках.

Например, в модуле по углублённому Python он просит не умничать наставников, ведь он «простой стажёр» и всего лишь планирует разобраться в основах Python, а не запускать марсоход на Марс.

Диалог из урока курса
Диалог из урока курса

На эту фразу мало кто обращает внимание — ну сказал и сказал. Но это, как ни странно, не просто фраза. Спойлер: уже в следующем модуле по алгоритмам ему буквально придётся этим заняться.

А затем, в одном из финальных уроков модуля по алгоритмам, появляется иллюстрация, которая как бы символизирует успех, — на ней ракета, запускающая марсоход на Марс.

Иллюстрация к уроку курса
Иллюстрация к уроку курса

Внимательный читатель курса, конечно, заметит, что эта ракета из урока подозрительно похожа на ту, что студенты многократно увидят позже, на Django-курсе. Это всё, конечно же, не случайно.

Скриншот из урока курса
Скриншот из урока курса

Загадочный Антон из алгоритмов

Важно понимать: не только авторы могут шутить и добавлять пасхалки. Редакторы тоже были замечены в подобном.

Если вы учились или учитесь на алгоритмической части курса и уже добрались до второго спринта, возможно, заметили, что там неожиданно появляется странный новый персонаж по имени Антон. 

Он не такой, как остальные персонажи. Он задаёт непонятные вопросы и порой проговаривает вещи, которые, по его словам, очевидны, но не всем.

Скриншот из урока курса
Скриншот из урока курса

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

Авторы пишут: «Ну тут очевидно, что массив надо перевернуть, ведь это классика». Редактор смотрит и думает: «Очевидно — кому? Инопланетянам?»

Так вот, в преддверии очередного дедлайна один из наших редакторов решил не спорить, а ввести нового героя. Персонажа, которому достались все самые сложные и непонятные реплики. Забавно, что этого персонажа он назвал… Антон. Дело в том, что автора этих спринтов тоже зовут Антон. Совпадение? Ну, допустим.

И, что самое главное, это сработало. Контент стал понятнее, структура — дружелюбнее, редактору стало проще делать свою работу. А Антон теперь увековечен в курсе.

Проект, которого никогда не было

Когда мы разрабатывали учебный проект для блока про Django, перед нами встал вечный вопрос: а на каком примере всё это показать? Нужен был универсальный кейс, не привязанный к реальному бизнесу, без юридических сложностей и при этом узнаваемый, немного абсурдный, но с широким пространством для фантазии. 

И тут в разговоре кто-то (возможно, редактор) сказал: «А почему не Acme?»

Если вдруг не помните — Acme Corporation (расшифровывается как American Companies Make Everything) — это вымышленная компания из вселенной Disney и Looney Tunes. Та самая, что поставляла невероятно сомнительное снаряжение койоту в его бесконечной погоне за бегунком. Динамит, ракеты, катапульты, реактивные ролики — всё с логотипом Acme. Причём всегда что-то шло не так.

Кадр из фильма
Кадр из фильма

И в этом была магия: Acme может продавать всё что угодно!

Это значит, что в рамках проекта мы тоже можем построить всё что угодно — от склада с товарами до системы заказов, отзывов, трекинга доставки и кастомных ошибок при запуске динамита.

Так Acme Corporation стала нашей учебной песочницей в Django-блоке. Она дала нам возможность объяснить архитектуру, связи, работу с моделями, сериализацию, эндпоинты и админку — без привязки к реальной компании, но с каплей иронии и тёплой ностальгии.

А дальше — больше. Когда студенты переходят к блоку про работу с реляционными базами данных, им на глаза начинают попадаться примеры с фильмами. Таблицы, запросы, связи между жанрами, актёрами, производителями… 

На первый взгляд — обычный учебный набор, собранный «для примера». Но, как вы уже, наверное, догадались — ничего случайного у нас не бывает. Все эти фильмы объединяет одно: в них фигурирует Acme Corporation.

Да-да, та самая — с реактивными роликами и динамитом. Мы прошерстили кинематограф, подобрали названия, где упоминается Acme или её продукция, и именно на них построили учебные базы данных. От мультфильмов до полнометражных комедий — корпорация Acme оставила свой след в десятках лент, и мы аккуратно перенесли их в наш курс.

Такая связность не случайна. Мы закладывали единый мир и сквозную нить, проходящую через все части программы курса. Это курс, в котором важно не просто дойти до конца, а оглянуться и увидеть, как всё было связано между собой.

Челлендж для самых внимательных

А ещё в одном из разделов — там, где мы учим работать с API — Стас создаёт своего первого бота. И тут начинается настоящее детективное удовольствие для внимательных.

В теоретических уроках этого модуля разбросаны сниппеты с примерами кода и скриншоты. В некоторых из них мелькает идентификатор пользователя Telegram и даже токен — будто бы случайно. Но этот id не полный и каждый раз немного изменён.

Одна часть в одном уроке, другие — в следующих. На первый взгляд, ничего необычного. Но если внимательно собрать кусочки, как пазл, можно восстановить полный идентификатор и найти самого Стаса в Telegram. Да-да, он там есть.

Кто именно скрывается за этим аккаунтом, знают лишь немногие. Но те, кто нашел, больше никогда не смотрят на API как раньше. Так что, если вы одни из тех, кто замечает детали, у вас есть все шансы раскрыть эту мини-тайну.

Заговор Ан***ов

А в модуле про парсинг команда вышла на новый уровень. Автор, редактор и автор тестов этого модуля решили не просто сделать контент, а увековечить себя в нём.

Все герои здесь взяты не с потолка, а срисованы с реальных людей, которые работали над этим разделом. И вот что особенно забавно: только недавно мы заметили, что у всех троих имена начинаются на «Ан»: Антон, Антонина, Анатолий. Совпадение? Не думаю.

Возможно, это был тайный заговор «Анов», а может, парсинг просто притягивает определённый тип людей. В любом случае теперь они навсегда останутся частью курса — не только в git-истории, но и в сердцах тех, кто пытался пропарсить HTML с первого раза (и не сдался).

Там же в парсинге они решили увековечить не только свои имена и изображения, но и города проживания. Тут даже не забыли про меня, техлида курса. Теперь вы знаете, откуда берутся все эти странные ограничения в задачах и примерах курса. 

Автор, редактор и автор тестов модуля про парсинг оказались не просто профессионалами своего дела. Они, как выяснилось, ещё и довольно разносторонние личности с отличным чувством юмора и вкусом к деталям. 

На первый взгляд, названия уроков и разделов в модуле могут показаться случайными — ну просто игра слов, чтобы не было скучно. Но если немного притормозить, вы вдруг поймёте, что, например, один из заголовков — это не что иное, как цитата из Гарри Поттера:

Для непосвящённых это фраза, которой активируется Карта Мародёров. А для нас — ещё один способ сказать: «Да, мы делаем курс по Python, но в душе мы всё ещё те самые, кто вырос на волшебстве».

И так везде. За, казалось бы, обычным текстом кроется множество отсылок: к литературе, фильмам, музыке, внутренним мемам команды. Это не обязательно нужно знать, чтобы пройти курс. Но если вы заметили, считайте, получили +10 к внимательности и +100 к удовольствию от процесса.

Все совпадения случайны… или нет

Раздел про API  — один из самых насыщенных по смыслу. Он не только учит важным инструментам, но и полон пасхалок, отсылок и смыслов, которые видят не все. Например, в одном из уроков, когда речь заходит о шифровании в base64, студентам даётся пример такого шифра.

На первый взгляд — просто какой-то очередной пример. Но если его расшифровать, становится видно, что это не просто изображение. Доподлинно неизвестно, кто именно это придумал, но в кулуарах курса ходит мнение, что картинка содержит отсылку к одному из старейших и опытнейших ревьюеров.

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

Если вы дошли до проекта Фудграм, скорее всего, уже видели скриншоты с примерами рецептов, интерфейсом и демонстрацией работы приложения. На первый взгляд это просто иллюстрации, чтобы показать, как всё должно работать. Но и здесь нет ничего случайного.

Когда авторское решение проекта было полностью готово, мы решили развернуть его на реальном сервере, чтобы протестировать всё, как положено. И вот тогда началось веселье: вся команда курса — авторы, редакторы, наставники, ревьюеры — начали регистрироваться в этом тестовом Фудграме и оставлять там свои любимые рецепты.

Кто-то делился семейным блюдом, кто-то — экспериментами с пастой, кто-то — рецептом легендарного борща. Некоторые не смогли остановиться и загрузили десятки рецептов. Всё по-настоящему: названия, фотографии, ингредиенты — это не заглушки и не вымышленные примеры, а самые что ни на есть настоящие блюда из жизни команды.

Так что если вы увидите рецепт шоколадного брауни от некоего «stasik_dev» или фирменную яичницу от «bas_senior», знайте — за этими никами стоят реальные люди с настоящей любовью к еде и к коду.

Числа и другие последовательности в курсе

Если вы периодически натыкались на одну и ту же странную комбинацию цифр — 2128506, которая мелькает в тексте, примерах, номерах телефонов и значениях переменных, вам не показалось. Это тоже пасхалка.

Скриншот примера кода из урока курса
Скриншот примера кода из урока курса

На самом деле указанная последовательность — это номер телефона, строчка из песни группы «Аквариум».

Существуют разной степени достоверности легенды о происхождении этого телефонного номера. По одной из них, в те годы он принадлежал самому Борису Гребенщикову. По другой, это был номер так называемого «эфира»: в середине 1980-х годов в Ленинграде на одной из АТС произошла ошибка, в результате чего все звонившие по этому номеру соединялись между собой.

Другой последовательностью чисел, которую можно периодически встретить в задачах, является 4, 8, 15, 16, 23, 42. И эта последовательность тоже не случайна.

Пример использования последовательности чисел в одном из уроков курса
Пример использования последовательности чисел в одном из уроков курса

В сериале Lost («Остаться в живых») загадочные числа 4, 8, 15, 16, 23, 42 играют важную роль и появляются во множестве контекстов. Они стали одним из главных элементов мифологии сериала. Некоторые фанаты считают, что числа символизируют детерминизм и судьбу, в то время как другие — что они просто метафора абсурда и неизведанного.

Вдохновением для условий задач были разные вещи. Например идею для одной из задач подсказал КВН.

СТЭМ (студенческий театр эстрадных миниатюр) в КВН — короткий конкурс, который обычно представляет собой сцену на одну тему. Основной принцип — на сцене должно быть одновременно не более трёх участников. В одном из таких СТЭМов все слова тоже состояли из трёх букв, потому что в слове «КВН» именно три буквы. Так родилась одна из задач курса.

Пример задачи в одном из уроков курса
Пример задачи в одном из уроков курса

Что и тут тоже пасхалки

А теперь — немного магии для самых любознательных и дотошных. Тех, кто не просто решает задачи, но ещё и заглядывает в тесты. Потому что да — даже в автоматических тестах наших тренажёров и финальных заданий спрятано немало интересного.

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

Например:

  • «Угнать за 60 секунд» — описание к фильму в тестах представляет собой цитату главного героя, но не из оригинала, а из одного из русских переводов. Да-да, того самого, народного.

  • «Мост через реку Квай» — вроде бы обычное описание, но это отсылка к сериалу «Парки и зоны отдыха», где этот фильм — любимый у главного героя, Рона Суонсона. Тихий респект от команды сериальщикам.

  • А «Хороший, плохой, злой»? Его описание — это тонкий намёк на одного из лучших и старейших ревьюеров, ставший почти легендой курса. Кто знает, тот поймёт. А кто не знает — возможно, ещё познакомится.

Мы знали, что большинство студентов в код тестов не полезут. Но специально для тех, кто полезёт, мы сделали так, чтобы они нашли там что-то интересное. Так что, если вы были одним из них — знайте: мы вас видим. И уважаем.

One more thing

И ещё один штрих для тех, кто любит читать между строк. В одном из уроков модуля про Flask и асинхронный код вы могли заметить странное, выбивающееся из общего стиля название раздела: One more thing.

Пример заголовка в одном из уроков курса
Пример заголовка в одном из уроков курса

Казалось бы, ничего особенного. Ну, просто заголовок. Однако немного странно, что в курсе на русском языке откуда-то взялись англоязычные заголовки. Но если вы хоть раз смотрели презентации Стива Джобса, вы знаете: это не просто слова.

Это была его фирменная фишка — оставить самое важное, неожиданное и эффектное на конец выступления. Произносить “One more thing…” как бы невзначай, будто вспомнил что-то второстепенное. И тут зал взрывался аплодисментами.

Кадр из презентации Apple
Кадр из презентации Apple

Так вот, это — наш кивок в сторону легенды. И небольшой намёк: если вы видите One more thing в структуре модуля — знайте, там может быть нечто важное или особенное. Может, не настолько революционное, как первый iPhone, но точно не случайное.

Курс, который играет с вами в ответ

Я верю, что обучение не должно быть скучным. И если вы дочитали до конца и узнали хотя бы про одну новую пасхалку, которую не замечали раньше, значит, всё сработало. Шалость удалась!

Курс — это не только знания, но и опыт. А когда в нём спрятаны тайны, персонажи и реальные истории, он становится живым. Надеюсь, теперь вы тоже увидите его таким.

Если вы уже проходили курс и заметили что-то своё, делитесь в комментариях. Ничего не нашли? Возможно, пора пересмотреть материал свежим взглядом. Там явно есть на что обратить внимание, так как в статье я показал далеко не все. Некоторые пасхалки по-прежнему ждут своего «охотника».

Теги:
Хабы:
+7
Комментарии2

Публикации

Информация

Сайт
practicum.yandex.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
Ира Ко