Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

Рассказываем, чего не замечают студенты (но у вас теперь есть шанс).

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

Мы в Яндекс Практикуме решили: а давайте сделаем по-другому. Так, чтобы студенту хотелось идти вперёд не только из-за дедлайнов, но и благодаря азарту и интересу. Чтобы обучение было не марафоном на выживание, а немного игрой.

Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

Передаём слово нашему коллеге, который непосредственно отвечал за проектирование и написание курса.

Евгений Бартенев
техлид и автор курсов по Python

Привет! Я Евгений Бартенев, техлид и автор курсов по Python в Практикуме. Эта статья — ваш шанс заглянуть за кулисы процесса производства образовательного контента и стать одними из тех, кто видит и понимает больше.

Что в статье:

Мы вас любим. Но не халтурьте, а? Шпаргалки с сюрпризом

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

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

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

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

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

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

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

Как Степан Осечкин появился на свет

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

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

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

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

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

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

Как Степан вышел на большую арену и оказался внутри курса

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

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

Нужно было срочно создать новую вводную часть: понятную, доступную и по-настоящему полезную. Без воды, но и без сухой зубрёжки синтаксиса. В ней студент должен был почувствовать, что сразу делает что-то настоящее.

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

Бесплатная часть курса составлена из простых этапов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что связывает наш курс с койотом из Looney Tunes

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

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

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

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

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

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

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

Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

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

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

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

Какая тайна скрывается за мини-квестом для самых внимательных

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

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

Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

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

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

Как раздел по API связан с котиками и гороховым супом

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

Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

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

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

Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

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

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

Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

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

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

Что означают загадочные комбинации чисел в заданиях

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

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

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

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

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

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

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

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

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

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

Какие ещё пасхалки спрятаны в уроках и практических заданиях

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

Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

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

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

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

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

Найдёте пасхалку из Гарри Поттера или шифр из Lost? Вот что мы спрятали внутри курса по Python

Например:

  • «Угнать за 60 секунд» — описание к фильму в тестах представляет собой цитату главного героя, но не из оригинала, а из одного из русских переводов. Да-да, того самого, народного.
  • «Мост через реку Квай» — вроде бы обычное описание, но это отсылка к сериалу «Парки и зоны отдыха», где этот фильм — любимый у главного героя, Рона Суонсона. Тихий респект от команды сериальщикам.
  • А «Хороший, плохой, злой»? Его описание — это тонкий намёк на одного из лучших и старейших ревьюеров, ставший почти легендой курса. Кто знает, тот поймёт. А кто не знает — возможно, ещё познакомится.

One more thing…

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

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

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

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

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

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

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

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

15
2 комментария