Весь прошлый год я отработал преподавателем в одном из провинциальных учебных центров (далее — УЦ), специализирующихся на обучении программированию. Я не буду называть этот учебный центр, так же вообще попытаюсь обойтись без названий фирм, фамилий авторов и т.д.
Итак, работал я преподавателем по Python и по Java. Этот УЦ закупал методические материалы для Java, а Python они запустили, когда пришёл я и предложил им это.
Методичку для учеников (по сути учебник или самоучитель) я писал по Python, но не малое влияние оказало преподавание Java и методические материалы, которые использовались там.
Сказать, что они были ужасными — ничего не сказать. Модус учебника по Java, который поставляет одна очень известная фирма в России, был не в том, что бы научить человека основам данного языка в целом и парадигме ООП в частности, а в том, чтобы родители, приходившие на открытые уроки, видели, как их сыночек или дочка списали с учебника змейку или шахматы. Почему я говорю списали? Очень просто, дело в том, что в учебнике приводились целые листы (A4) кода, некоторые моменты которого не объяснялись. В итоге, преподаватель либо должен контролировать на каком моменте в коде сейчас находиться каждый ученик, объясняя каждую строчку, либо всё скатывается в списывание.
Вы скажете: «Ну и что такого, пусть препод лучше работает, а шахматы и змейка ваще квёво!»
Что ж, всё было бы круто, если бы кол-во человек в группе не было под 15, а это уже значительно, коли вы собираетесь следить за всеми, объясняя: «А всё таки, что мы пишем такое?»
Помимо кол-ва человек в группе, есть ещё одна проблема, связанная с этой методичкой. Код написан… как бы вам сказать, просто ужасно. Набор антипатернов, архаики, так как учебник давно не обновлялся, и наше любимое, конечно же — стайл гайда. Поэтому, даже если вы законтролите всех своих подопечных и сможете им быстро и доходчиво объяснять, что значит списываемый код, то сам код настолько ужасен, что научит мягко говоря не тому.
Ну и финалочка, разрушающая буквально этот учебник — с самого начала отсутствует хоть сколько-то адекватное введение, объясняющее, что такое типы данных, что они бывают объектные и примитивные, какой критерий проверяет свойство, порождающее эту дихотомию и т.д. В первой же главе, вам и вашим ученикам предлагается сделать (списать) программу, которая делает окошко и пишет там «Привет!», однако там не объясняется, что собственно этот лист кода значит, лишь ссылки на дальнейшие занятия, например, упоминается «main» — точка входа, но даже не проговаривается само понятие «точка входа».
Если подытожить, то эта макулатура была мемом даже среди педагогов и руководства. Она не учила детей ровным счётом ничему, однажды мне попалась группа, обучающаяся уже год по этим материалам, в итоге они даже не могли написать цикл, замечу что все они были очень смышлёными и в скоре уже всё было не так плохо. Большинство коллег старались отступать от методических материалов, чтобы материал усваивался, а не просто улетал в воздух, хотя были и менее добросовестные люди, считавшие нормальным, что их ученик списывает без каких либо разъяснений.
Когда стало понятно, что из УЦ я уйду, а программу по Python надо как-то продолжать в следующем году, я принялся писать свой учебник. Если коротко, то я поделил его на две части, в первой объяснял всё про типы данных, их суть, операции с ними и инструкции языка. Между темами делал QnA, чтобы будущий учитель смог понять, как ученик усвоил тему. Ну и в конце сделал небольшое задание-проект. Первая часть таким образом объясняет основы языка и разжёвывает их, что составляет примерно 12-13 уроков по 30-40 минут. Во второй части я уже написал про ООП, описал чем реализация этой парадигмы в Python отличается от большинства других, делал много ссылок на style guide и т.д. Если резюмировать — я пытался быть максимально не похожим на то, что было в учебнике по Java. Недавно писал нынешнему преподавателю по Python, спрашивал фидбэк по материалам и сейчас я рад, что всё хорошо, что дети реально понимают программирование на Python.
Какой вывод я бы хотел сделать из этой истории: дорогие мои родители, если вы решаете отдать ребёнка в УЦ, то внимательно следите за тем, что они делают, что ваше чадо не даром просаживает время, дабы в будующем не отбить у него желание программировать.
UPD: Как верно заметили в коментария я почти ничего не сказал о подаче материала. Скажу сразу, что я считаю что практики должно быть больше, как можно больше. В конце кажодого занятия в первой части я делал 4-5 небольших практических заданий на тему главы. Между главами были QnA (уроки контроля), где тоже были практические, но уже оцениваемые задания, так же в конце первой части был проект с темой на выбор из предложенных. Во второй же части, я сделал введение в ООП через создание консолькой мини-игры, разраотка которой и была всей второй частью и всем введением в парадигму.
Albom
Планируете выложить наработки на GitHub или подобный сервис?