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

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

Вот о чем этот пост:

  1. немного предыстории (раздел Приступаем к работе),
  2. некоторое планирование (раздел Как сделать его интересным?)
  3. некоторое управление рисками (раздел Что могло пойти не так?),
  4. некоторые откровения (раздел Что пошло не так?)
  5. некоторые выводы (раздел Сделаю ли я что-то по-другому в следующий раз?).

TL;DR

  • Вы не можете подготовиться ко всему.
  • Сохраняйте спокойствие и приспосабливайтесь, когда что-то идет не так.

Давайте начнем

Зачем я это пишу?

Ранее в этом году Кларна провела встречу Hello World. Hello World - шведская некоммерческая организация, цель которой - заинтересовать детей и подростков разработкой программного обеспечения. Дети и подростки могут записаться на различные занятия во время этих встреч. Некоторые сеансы, такие как введение в Scratch и Python, являются повторяющимися, а некоторые - разовыми. Я и мой коллега решили подготовить одноразовое занятие.

У меня есть некоторый опыт работы с детьми и некоторый опыт проведения технических презентаций для людей без большого опыта работы с компьютером, но будет ли этого достаточно?

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

Чему я мог научить?

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

Я знаю о веб-сервисах и других серверных технологиях; ни один из них не представляет особого интереса для людей, только начинающих программировать. Может ли сессия быть о чем-то для мобильных устройств без необходимости иметь дело с игровыми платформами?

Интересно, что некоторые приложения для обмена сообщениями, такие как Kik и Telegram, имеют очень простые API для разработки чат-ботов.

Вот как часто работают эти API:

  1. Разверните простой веб-сервис в каком-нибудь облачном сервисе.
  2. Получите (бесплатный) ключ API.
  3. Реализуйте интерфейс обратного вызова платформы обмена сообщениями.
  4. Все сообщения, отправленные вашему боту, будут доставлены в ваш веб-сервис.

Это очень просто, поэтому было решено, что темой нашего разговора будет разработка чат-ботов для Kik и Telegram.

Но почему чат-боты?

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

Теперь, когда мы знали, о чем говорить, нам оставалось только спланировать интересный, познавательный, увлекательный и увлекательный процесс обучения. Я имею ввиду, как это может быть сложно !?

Как сделать это увлекательным?

Мы очень много думали об этом. Как сделать нашу сессию интересной, увлекательной и увлекательной? В наши дни геймификация кажется очень популярной. Идея здесь в том, что вы хотите добавить в свой урок «игровые элементы», чтобы вызвать у учащихся нервную конкуренцию.

Геймификация - это применение элементов игрового дизайна и игровых принципов в неигровых контекстах.
Геймификация в Википедии

Вы можете прочитать Геймификация обучения в моем классе или Эффективное использование геймификации в обучении, если хотите узнать больше.

Мы решили попробовать эти аспекты геймификации:

  • Используйте слово «задача» вместо «поручение» или «задача». Проблема - это то, что вам нужно преодолеть и вы хотите решить. Задача или задание - это просто то, что вы делаете потому, что вам кто-то сказал.
  • Выдавайте стикеры или другие виды «наград за достижения», когда участники выполняют задания. Извините, я имел в виду завершенные задачи.
  • Каждое испытание, примерно, будет представлять собой полчаса занятия, и его выполнение можно сравнить с «повышением уровня» в игре.
  • Получите бонусные задания для участников, закончивших раньше.

Мы определили и написали инструкции для четырех задач:

  1. Получение чего-то очень простого, работающего на локальном хосте. Нет облачного сервера. Ключей API нет. Просто Python. Это гарантирует, что у всех нас есть работающая среда разработки, и показывает, как мало кода действительно необходимо, чтобы запустить что-то простое.
  2. Создание учетной записи Heroku и развертывание кода из предыдущего задания в облаке. Это гарантирует, что у всех нас установлены необходимые инструменты.
  3. Создайте аккаунт чат-бота для Kik или Telegram.
  4. Разверните чат-бота в облаке.

Начните с простых вещей, а затем, по сути, копайте глубже.

Что возможно могло пойти не так?

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

Я готов к худшему, но надеюсь на лучшее.
Бенджамин Дизраэли (1804–1881)

Как много они знают?

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

Мы решили предположить, что участники разработали бы некоторые базовые приложения Python, но ничего больше. Было бы предпочтительнее потребовать или предположить некоторые знания о том, как работает Интернет (веб-серверы, облачный компьютер и т. Д.), Но мы не ожидали каких-либо таких знаний.

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

Как много они хотят знать?

Должны ли вы объяснять каждый шаг или просто говорить им «сделай то, а потом сделай то»? На мой взгляд, простое следование инструкциям без их понимания не принесет особой пользы. Тогда это просто механическое выполнение задач без какой-либо рефлексии. Я думаю, было бы нормально просто следовать инструкциям, если позже кто-то еще вернется к коду и поразмышляет над тем, что он делает, но есть большой риск, что кто-то не потратит на это время.

В конце концов, мы решили написать наши инструкции с короткими описаниями, разбросанными здесь и там.

Шоу должно продолжаться. Давайте откажемся от этого шага.

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

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

Вы понимаете мой английский?

Я свободно говорю по-шведски, а мой коллега - нет. Будет ли это проблемой?

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

Хорошо, так что же пошло не так?

Настал день встречи Hello World. Это был очень напряженный день. По словам моего партнера по обучению:

[День был посвящен] унизительному опыту обучения детей программированию.

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

Что, как говорится; позвольте мне теперь кратко упомянуть некоторые вещи, которые пошли не по плану ...

Возрастной диапазон

Настал день лекции (или я должен назвать это уроком?), И пришли дети. Я говорю «дети», потому что они были не такими старыми, как я ожидал.

Как упоминалось ранее, я ожидал, что чат-боты заинтересуют подростков, но вместо этого наши участники были больше 9–13 лет. Это, очевидно, повлияло на то, насколько они были знакомы с «общими задачами разработки», такими как использование терминала, установка приложений и создание файлов со странными именами, такими как Procfile и .gitignore.

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

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

Извлеченный урок:
Постарайтесь получить представление о возрасте участников до начала занятия.

Усвоенный урок:
Либо говорите только по-шведски, либо дайте понять при регистрации, что не все преподаватели свободно говорят по-шведски.

Необычный формат для инструкций

Мы нашли эту действительно классную библиотеку для создания веб-слайд-шоу и использовали ее для слайдов, которые показывали на большом экране в комнате, в которой проводился сеанс. Это хорошо сработало.

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

Ссылки на инструкции были показаны на большом экране в нашей комнате. Затем дети могли читать инструкции на своих компьютерах, просто набрав ссылку bit.ly. По крайней мере, это была идея.

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

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

Бросившееся форматирование

Пытаясь создать причудливые инструкции на основе слайдов, у нас не было времени, чтобы обеспечить единообразный стиль для всех слайдов. Это привело к тому, что некоторые консольные команды были напечатаны шрифтом основного текста, тогда как некоторые были показаны шрифтом с одинарным интервалом. Это затрудняло понимание того, что было инструкциями, а что было исходным кодом.

Извлеченный урок:
Убедитесь, что все соответствует одному руководству по стилю.

Когда не хватает времени, возникает путаница

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

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

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

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

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

Чего-чего? Это не ваш компьютер?

У двоих детей были проблемы с использованием компьютеров по одной очень простой причине: они никогда ими не пользовались.

Один участник обычно использовал компьютер с Windows, но в этот день он одолжил Mac своего отца, а это означало, что все, от управления файлами до окон консоли, было ему незнакомо.

Другой участник позаимствовал у Hello World обычный планшет с Windows, на котором, очевидно, не было предустановленных необходимых инструментов.

Третий участник не смог подключиться к нашему офисному Wi-Fi. В конце концов, мы решили проблему, включив точку доступа Wi-Fi на моем мобильном телефоне и позволив ему подключиться к ней.

Кроме того, на некоторых компьютерах был Python, но не Pip (менеджер библиотеки Python). Мы определили это как потенциальный риск, но сочли его минимальным, поскольку мы пытались установить Python как на Windows, так и на Mac, не столкнувшись с этой проблемой.

Извлеченный урок:
Не все участники прочитали, поняли или выполнили предварительные требования. Смирись с этим. Запланируйте это.

Подождите ... Какое у меня было имя пользователя снова?

Разработка чат-бота, подобного нашему, требует, чтобы вы следили за некоторыми вещами:

  • учетные данные облачной платформы,
  • учетные данные вашего аккаунта Kik или Telegram,
  • собственные учетные данные бота.

Это легко запутать, если вы новичок.

Извлеченный урок:
Убедитесь, что участники выбирают имена, которые гарантированно уникальны, например «helloworldklarna_alice» или «helloworld-banana», если поставленная задача требует от них создания учетных записей у основных поставщиков услуг.

Смогу ли я в следующий раз поступить иначе?

Я многому научился во время этого опыта, как на этапе планирования, так и на этапе выполнения. Позвольте мне быстро резюмировать это для вас.

Структура урока

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

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

Если бы у меня была возможность провести это занятие снова, я бы структурировал его совершенно по-другому. Я бы начал с полного и полностью функционального примера. Убедитесь, что у всех сначала есть что-то полностью работоспособное, а затем затем переходите к описанию того, как все это взаимосвязано.

Адаптация к изменениям

Как вы быстро адаптируетесь, когда замечаете, что дела идут намного дольше, чем планировалось? Вы принимаете это? Вы забегаете вперед?

В следующий раз, когда я столкнусь с планированием подобного сеанса, я упростлю адаптацию к изменениям во время самого сеанса, спланировав его с точки зрения отдельных получасовых заданий («проблемы»). Должно быть возможно приступить к задаче, не выполняя никаких других.

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

Хорошие наставления трудно найти

Раздавать инструкции в виде слайдов вместо документов было плохой идеей: люди к этому не привыкли, и это вызвало некоторую путаницу.

С другой стороны; онлайн-слайды, по сравнению со статическими инструкциями на бумаге или по электронной почте, давали нам возможность изменять их на лету, когда мы понимали, что нам нужно изменить сеанс.

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

Совместная деятельность

В целом это довольно мелочь, но в самом начале нашего небольшого урока мы коснулись парного программирования. Мы сказали детям, что, по нашему мнению, было бы неплохо, если бы они могли объединиться в пары и сотрудничать в выполнении заданий. Они не были в восторге от этой идеи, и я не могу их винить.

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

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

Будущее нашего общества

Мой последний и, возможно, самый важный вывод из всего этого опыта преподавания вообще не имеет ничего общего с опытом преподавания. Вместо этого речь идет об одаренных детях, растущих сегодня!

Будущее выглядит действительно ярким. Следующее поколение разработчиков программного обеспечения (или я должен сказать новое поколение, раз уж эти дети уже выпускают свои приложения и игры?) Будет потрясающими разработчиками!

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

Я закончу тем, о чем один из детей говорил во время перерыва:

«Не могли бы вы рассказать мне больше о Кларне? Я и мой друг разрабатываем услугу на основе подписки, и мы изучаем различные платежные решения, но не довольны ими: нам не нравится 30-дневная политика возврата платежей Paypal, и нам не нравится, что Swipe не может делать повторяющиеся платежи ».
/ Участник встречи Hello World

Будущее выглядит светлым.