5 закономерностей при работе тренером по программированию
Всем привет. Сегодня я постараюсь рассказать, какие закономерности я выделил для себя, работая тренером по программированию.
Сразу оговорюсь, что после моего опыта работы репетитором преимущественно со студентами начальных курсов университетов и колледжей, я устроился работать в один из образовательных центров, нацеленных на IT сферу. Я преподаю программирование в группах в среднем от 8 до 16 человек. Моя аудитория - школьники старших классов или начальных курсов колледжей.
1. С каждым годом мне становилось скучно преподавать курс в одной и той же манере.
Это происходило у меня потому, что попросту становилось скучно показывать одни и те же примеры, которые помогли бы ученику понять материал. Уже на второй год преподавания в ОЦ я заметил, что мой интерес объяснять тему на старых примерах упал. Для себя я нашел выход из этой ситуации в следующем - разнообразить примеры. На самом деле, я готовил заранее примеры кода, которые буду показывать, только в первый год преподавания - начиная со второго, я начал придумывать примеры на ходу, параллельно общаясь с аудиторией. То есть, по сути, я тему рассказывал в режиме live coding - на проектор вывожу свой экран ноутбука, включаю на нем редактор кода - и начинаю писать примеры кода, параллельно поясняя, что где. Для верности запускаю программу, чтобы увидеть сразу же ее результат. Очень интересными получаются примеры кода, когда есть понимание, что интересно аудитории. К примеру я замечал, что в одной группе много человек обсуждали компьютерные игры - в этом случае я старался иногда подгонять примеры под игровую тематику. Или же, допустим, я слышал, что многие обсуждают какой-то недавно вышедший фильм про супергероев - тогда я пробовал предлагать примеры, каким-то образом завязанные на супергероев. Плюсом для себя такого подхода я отметил свежие примеры, которые интересны и аудитории, и мне. Конечно, у меня не всегда получалось привязать пример кода к какой-то теме, которую обсуждают ребята, в таком случае, я просто старался искать простые примеры, которые были бы понятны учащимся.
2. К определенному момента уровень знаний у учащихся "выравнивается"
В начале учебного года, администрация ОЦ могла включать в новую группу людей с разным уровнем знаний в программировании - кто-то пришел просто научится программировать, так как в школе "язык Паскаль, я не понимаю его", кто-то - наоборот, опробовал несколько языков программирования, участвовал в олимпиадах и решил в копилку добавить новый язык и т.д. Проводя первое вводное занятие, я уже сразу начинал замечать, кто больше программировал, а кто - меньше или вообще никогда не пробовал. Поэтому у некоторых из моих учеников, кто уже пробовал программировать, могли возникать вопросы - "а мы это уже знаем из другого ЯП, ещё что-то у нас будет новое?". В таких случаях, я сообщал, что это только начало:) Чтобы такие ребята не скучали, у меня имелся список задач усложненного варианта.
К занятию пятому-шестому многие ребята уже обладали примерно одинаковым количеством знаний - тут очень грубое "примерно", однако в среднем к этому времени ребята уже не просили усложненных заданий и все решали в целом один и тот же объем задач с примерно одинаковым качеством.
3. 80% ошибок в программах - пропустил скобку, точку с запятой, неправильно написал языковую конструкцию
Большая доля ошибок в программах учеников - не логические, а синтаксические. Первые года обучения мне очень часто приходилось бегать между компьютерами и помогать ребятам поправлять ошибки вроде - "пропущена буква в какой-то команде", "забыта скобка" и т.д. Чтобы помочь ребятам легче разбираться в своих ошибках, я со временем решил с самого старта курса дать понять ребятам, что ошибки в программировании - норма, однако также важно знать, как эту ошибку можно устранить.
4. Теории - меньше, практики - больше
Во время первого года обучения, я часто подолгу рассказывал тему с помощью подготовленной мной презентации. Со временем я заметил, что это съедает кучу времени - могло уходить около 40 минут, и ребятам остаётся немного времени, чтобы своими руками отпрактиковать новые знания. Поэтому я решил перейти в режим live coding - тему сразу же пробовали на практике. Набрал кусочек кода, ребята повторили за мной - запустили программу, и разобрались, почему она так работает. Разобрав несколько небольших примеров, я давал ребятам пару заданий, чтобы они попробовали сами написать код. Презентации не ушли в "урну" - они хорошо подошли ученикам для повторения материала, если я скидывал на почту какие-то задачи на дом.
5. Оптимальное занятие - 3 часа с перерывом в 20 минут
Первый год преподавания в ОЦ, занятия длились полтора часа - этого для меня было мало. За это время мне приходилось очень быстро рассказывать тему, минимум общаться с ребятами и успевать давать задачи на самостоятельное решение, параллельно помогая в исправлении ошибок. Со временем ситуация изменилась и занятия по времени увеличились в 2 раза. Для меня этого времени достаточно, чтобы без спешки рассказать тему, поговорить с ребятами и дать им время порешать задачи.