Живое программирование. Важен процесс или результат?

образовательный процесс
программирование
когнитивная нагрузка
активное обучение
Дата публикации

25 сентября 2022 г.

Когда я проводил занятия по Python, то на слайдах с теорией показывал примеры готовых решений задач. После того, как я прочитал про живое программирование - Live coding, я понял, что демонстрировать решение задач можно и нужно по другому. В этом посте пойдёт речь о том, почему важно показать учащимся процесс решения, а не просто готовую решение и как сделать это эффективно.

Информация в посте будет вольным переводом текста из книги Teaching Tech Together и материалов сайта Teach Computing.

Что такое живое программирование?

Преподавание - это театр, а не кино. Нил Дэвис

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

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

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

Вот список остальных плюсов методики:

  • Активное обучение - преподаватель может гибко реагировать на интересы учащихся, отвечать на вопросы, которые появляются на каждом этапе решения. Слайды презентации, как рельсы - поездка будет гладкой, но путь определён заранее. Живое программирование похоже на езду по бездорожью - дорога не такая простая, но легче поменять направление движения в ту сторону, которая интересна ученикам.
  • Живое программирование помогает сократить когнитивную нагрузку на кратковременную память. Преподаватель решает какой объём новой информации будет достаточен в каждый момент времени.
  • Учащиеся поймут, что ошибки - это обязательная часть решения задачи. Если преподаватель относится к ним легко и без стеснения, учащиеся будут проще относится к собственным ошибкам.

Общие рекомендации

Не обойдётся без ошибок

Опечатки - это педагогика. Эмили Джейн Мактавиш

Главное правило живого программирование - принять собственные ошибки. Не важно, как хорошо преподаватель подготовится к лекции, ошибки в коде точно появятся. Точной информации нет, но около 60% времени программисты тратят на поиск и исправление ошибок. Начинающим программистам на это нужно ещё больше времени. Что любопытно, в учебниках мало говорится о том, как правильно проводить дебагинг программы. Преподавателю нужно рассуждать вслух о том, как он нашёл ошибку, почему выбрал этот способ решения. Тогда у студентов появится инструментарий, который пригодится для самостоятельного решения задач.

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

Что будет дальше?

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

Не спешить

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

Начинаем набирать команду, после чего нажимаем клавишу Tab…”.

Чего точно не стоит делать, так это использовать буфер обмена. Это гарантирует, что преподаватель обгонит учащихся.

Меня хорошо слышно?

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

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

Техническая сторона

Нужно принимать во внимание и техническую сторону методики.

  • На лекционном компьютере нужно установить ту же среду разработки с теми же настройками и оформлением, что используется в учебной аудитории.
  • Размер экранного шрифта должен быть достаточно большим, иначе задние ряды не смогут прочитать текст. Полезную информацию лучше показывать в верхней части экрана по той же причине.
  • Лучше не использовать тёмную цветовую схему в среде программирования. Светлые буквы на тёмном фоне будут плохо различимы.
  • С помощью специальных программ можно подсвечивать положение курсора и щелчков мыши. В таких программах может быть функция показа клавиатурных комбинаций, которые нажимает преподаватель. Пример такой программы - PointerFocus3.
  • На время занятия нужно отключить все оповещения на компьютере. Они будут отвлекать как преподавателя, так и учащихся.

Недостатки методики

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

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


Основные плюсы живого программирования:

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

И на последок два видео с примерами живого программирования. В первом видео показан пример того, как не стоит организовывать занятие. Снято оно так специально.

Во втором видео преподаватель демонстрирует правильную организацию живого программирования.

Хотя оба видео на английском языке, но знать его не обязательно, чтобы увидеть отличия.

Сноски

  1. Задача Парсона. О них можно подробнее почитать в этом посте↩︎

  2. В оригинале метод называется Twitch coding. Как я понимаю, назвали его в честь сервиса для проведения онлайн-трансляций.↩︎

  3. Программа платная, но должны быть и бесплатные аналоги.↩︎