Преподавательская практика
Так сложилось, что я на волонтерских началах захотел преподавать информатику в техническом лицее недалеко от своей работы.
Директриса долго отпинывалась, да и я со своим характером не сахар. Но тем не менее в сентябре мне вручили журнал 7а класса по предмету «Вводный курс информатики и программирования».
Ребята очень активные и веселые. Класс дружный, но при этом абсолютно отсутствует стадный инстинкт и иерархия как таковая.
Практически сразу я понял, что стандартный подход лекция-контрольная не будет здесь работать — это примут 2-3 человека, а остальные просто забьют на уроки. Пятерки для них не важны, а меня все равно заставят поставить нужные для медалей оценки, окончательно подкосив авторитет как учителя.
Как понимаете, мотивировать такой коллектив очень сложно, и я решил что нужно их заинтересовать.
Дав на первом уроке вводную по основным технологиям, которые используются сейчас в отрасли — от С до Node.js, не ударяясь в подробности, и описывая только преимущества, в качестве ДЗ я попросил написать на листочке ту технологию, которая понравилась больше всех и то, чем нравится заниматься во внешкольное время.
На следующем уроке я вытащил несколько из этих листочков и рассказал как я вижу соединение написанных вещей. Импровизация произвела на них впечатление. ДЗ — эссе про то, как они видят объединение этих сфер. И оставил свой мобильник для тех, кому нужна будет помощь в поиске этих связей.
Они сразу поняли, что можно на халяву выполнить дз. Что мне собственно и было нужно. Я пообщался почти с каждым учеником, и хоть не запомнил их имен, но записал все что они собрались делать.
Следующий урок был посвящен жизненному циклу ПО, ДЗ — начать проектировать сформированные в прошлый раз требования.
Они быстро просекли, что я домашку не собираюсь проверять, и у меня на столе оказалось всего 10 проектов, из 20 человек в классе.
Урок я посвятил такому понятию как «команда», рассказал чем занимаются архитекторы, аналитики, front-end программисты, и откуда появились эти профессиии, а именно из-за необходимости разделения данных, логики и представлений. Закончил рассказ словами Брукса, что «первая система обречена быть провальной», предложил переписать проекты, основываясь на полученных знаниях, а для тех, кто не хочет в одиночку заниматься, найти свою команду и определить там свою роль. Те, кто не определился, пишет реферат на тему «роль информационных технологий в современном обществе».
Через неделю у меня было 6 проектов, и один реферат. Второму, кто должен был писать реферат, была предложена тройка и возможность заниматься чем угодно на уроках. Как понимаете, игрушек на компьютерах нет :)
Он согласился, но гордость была задета, и я сыграл на этом, пообещав добавить по одному баллу за каждую сотню символов в минуту печати. Немного рассказал про слепой десятипальцевый метод, про раскладку дворака, про IDE, как они помогают в создании сложных систем, вскользь коснулся профайлера, дебаггера, интерпретаторов, компиляторов и байт-кодовых машин. Дал советы, как нужно подбирать IDE (что такое автокомплит, сниппеты, рефакторинг). На примерах привел необходимость использования VCS, и предложил SVN для этих целей. Заострил внимание на том, что в команде желательно пользоваться одними и теми же версиями программ, пару слов о том, как это помогает в изучении возможностей этих программ. Ну и в качестве дз — настроить среды разработки. В случае возникновения вопросов, для разрешения споров или для получения студенческих лицензий, предложил звонить мне на мобильник.
Следующий урок был посвящен абстракциям, как надо превращать их в код, рассказал о методах уменьшения количества кода, повторном использовании, на примерах показал необходимость создания базовых абстракций, подробно о моделях, контроллерах и представлениях, не забыл о спиральной, водопадной и итерационной моделях разработки. ДЗ — определиться, как будете работать, и создать рабочее приложение, которое я мог бы запустить и проверить.
Собственно этим мы и занимались оставшуюся часть четверти. По итогам я поставил всем оценки. Пятерки выставлял публично, рассказывая, чем этот человек отличился. Четверки и тройки без публичности в дневник, с небольшим вкладышем-комментарием.
В следующей четверти мы занимались наращиванием функционала, а когда не было вопросов, по памяти пересказывал just for fun. Я сразу обозначил, что не требую с них больше полутора часов в неделю. Если кто-то хочет, может перенести разработку в школу — это только приветствуется.
Третью четверть тоже неспеша допиливали проекты, я рассказывал про то, как устроен интернет, о том как он развивался, про то, как борются с высокими нагрузками. Не забыл оптимизацию, помог настроить профайлеры, показал как ими пользоваться и как находить бутылочные горлышки, рассказал о способах стрессового тестирования. Ребята уже были поглощены проектом, Большую часть времени урока я проводил в общении с небольшими группами учеников, пытаясь научить их правильно пользоваться гуглом.
Успеваемость повысилась — ребята действительно прониклись, а совместная работа только подогревала интерес. Более того, уже начали оформляться готовые приложения.
И вот 4 четверть. Тестирование. Поняв, что среди команд разгораются нешуточные дебаты о применяемых технологиях, я решил на этом сыграть. Устроили соревнование — 2 проекта, по результатам имеющие наименьшее число багов, едут на конференцию, защищать школу. Установил редмайн, рассказал как им пользоваться. Для подогрева отдал в тестирование готовые версии наиболее активным критикам, пару советов о проведении тестирования — проверка граничных условий, ввод некорректных данных, использование не типичных последовательностей действий. Намекнул, что если баг исправлен в процессе тестирования, то он закрывается и его как бы не было, и то, что можно тестировать любое приложение, вне зависимости от того, какое задание получила команда.
Теперь мы уже на финишной прямой.
В конце года у нас получились очень неплохие приложения.
Первое находило все аксиомы и теоремы по геометрическому чертежу + умела обучаться по паттернам и написана на ActionScript под AIR.
Второе занималось подсчетом времени, когда ученики должны быть дома, основываясь на электронной версии школьного журнала, и в случае, если до определенного времени ученик не приходил домой и не отмечался в системе, отсылала e-mail по адресу, указанном в этом журнале. Это PHP+JQuery.
Просто, но не примитивно.
Как и было обещано, я съездил с ребятами на конференцию, но к сожалению, мы были вне конкурса, т.к. в школах информатика преподается с 9 класса. Но тем не менее нам дали выступить, мы всласть потроллили москвичей, они тоже не остались в долгу. Нам подарили проектор, и мы отправились по домам.
В сентябре мы решили объединить наши усилиия, начав писать API для проектов. Решили не распыляться, а пилить 2 основных направления — это выйгравшие в прошлом году.
К сожалению, пропустили всероссийскую конфу, но взамен нам подарили несколько паяльных станций, стендов и кучу электронных деталей. Но ребята еще не знают об этом, и считают себя крутыми программистами…
Правду говорят — детство — это неосознанное счастье.
Я смотрю на них и понимаю, что не ошибся с выбором профессии.