Обучение
Как я учился учить программированию
В мае 2016 года совместно с командой коворкинга #tceh я впервые начал читать курс по программированию на ruby. Изначально это казалось мне не особо сложным. Казалось бы — составь программу из самых актуальных тем или возьми готовую у коллег по цеху и знай себе рассказывай все что знаешь. Что может быть проще?
Алексей Поимцев (основатель Progress Engine) в своем новом блоге рассказал про то, как он учил людей программировать.
В мае 2016 года совместно с командой коворкинга #tceh я впервые начал читать курс по программированию на ruby. Изначально это казалось мне не особо сложным. Казалось бы — составь программу из самых актуальных тем или возьми готовую у коллег по цеху и знай себе рассказывай все что знаешь. Что может быть проще?
Но спустя некоторое время я в очередной раз убедился что жизнь — боль и на своей шкуре почувствовал что ощущали мои преподаватели, пытавшиеся донести крупицу знаний до такого балбеса как я ;) Не-не — с учениками мне повезло, вы не подумайте плохого, но одно я понял точно — жизнь меня к такому [концу всего сущего] не готовила :) Поэтому я постараюсь поделиться своими соображениями, чтобы у тех, кто в дальнейшем сделает такую же ошибку как я и пойдёт преподавать — хоть будете знать к чему готовиться. Итак, я расскажу все, чему я научился за время моего недолгого преподавательского опыта.
Разные платформы
Пересев примерно 8 лет назад на продукцию компании Apple со всей их экосистемой, я казалось бы обрел счастье в жизни. Мало того, что я наконец-то избавился от плохо работающей поделки компании Microsoft, так я еще и обрёл возможность пользоваться всеми преимуществами unix-систем — тут тебе и возможность использовать rbenv/rvm, homebrew и кучу других полезных утилит, которые облегчают жизнь простого технаря.
При подготовке курса я не видел большой проблемы в том, что придут на занятия люди, пользующиеся другими платформами. Даже несмотря на предупреждения коллег по цеху, что будет много геморроя, я решил, что скачать и установить основной софт для разработки не составит больших проблем. Как бы ни так — почти все первое занятие я бегал между столами и помогал установить необходимый софт студентам — у кого-то не ставился ruby, кому-то надо было помочь с установкой PostgreSQL, git или чего-либо еще. Более того — на нескольких последующих занятиях все еще возникали проблемы, связанные с Windows-платформой. Например — проблемы, вызванные названием аккаунта пользователя на кириллице.
Позже, проанализировав возможные способы решения этой проблемы, мы пришли в мысли, что самым простым было бы подготовить образ системы со всем необходимым установленным софтом для системы виртуализации типа VirtualBox, Parallels или VMWare и инструкцию, чтобы студенты могли достаточно быстро его скачать и развернуть у себя. Но, как говорится — хорошая мысля всегда приходит слишком поздно :)
Разный уровень знаний студентов
Еще одной проблемой оказался разный уровень знаний студентов. Одна половина студентов пришла из непрофильных областей (например, бухгалтерии) и для них не то чтобы сложно было понять, что такое класс, так и само понятие переменных пришлось разжёвывать на дополнительном занятии. Более того — одной из студенток я вынужден был порекомендовать книгу по программированию для детей, которую я читаю вместе со своей 9-летней дочкой и именно это помогло ей понять некоторые базовые принципы.
С другой стороны были студенты, которые пришли из около-технических отраслей, и вот для них чтение самых основ программирования оказалось скучным и они регулярно меня подгоняли с просьбой не зависать на самых элементарных вещах.
Таким образом, я оказался между двумя крайностями. Наверное, самым оптимальным выходом из такой ситуации было бы разделить студентов на две группы и преподавать раздельно, но это понимание пришло слишком поздно, когда часть студентов отвалилась, мотивировав своё решение тем, что им слишком тяжело усваивать материал, преподаваемый с такой скоростью.
Разная оценка необходимости преподаваемой информации
Когда я учился в университете, я, конечно же, считал, что я лучше знаю, что преподаватели должны мне рассказывать. Именно поэтому я посрался с преподавателем, который читал нам лекцию по CASE/OLAP инструментам и был не допущен к зачёту. Я уж молчу про то, как я выпендривался на лекциях по C++, тыкая преподавателя носом в то, что он рассказывал про то, как вывести строку в консоль, когда я уже освоил ООП. Сейчас, глядя с высоты прожитых лет, я понимаю, что был неправ — надо было бросать этот универ к [мужским половым органам] и идти туда, где преподавали микроэлектронику, знаний которой мне явно не хватает, а программирование все равно пришлось изучать заново :)
Аналогичная ситуация оказалась и при чтении моего курса. Далеко не все студенты восприняли положительно мой рассказ про протокол http и его будущее в лице http2 с примерами. Было также еще несколько тем, которые я считаю достаточно важными для общего понимания материала, но опять же — у каждого своё понимание, что для него важно. Единственное, что тут можно посоветовать — общаться больше со студентами и стараться рассказ про важные на ваш взгляд темы, которые могут быть не очень интересны студентам (например с практической точки зрения), сделать максимально увлекательным и показать реальные примеры его использования в жизни. В принципе — это применимо вообще к любому материалу :)
Примеры использования
Еще один очень важный момент — это стараться показать студентам как применять весь материал в практической плоскости. Вспомните пример из предыдущего пункта с CASE/OLAP. Готов спорить, что я бы вряд ли бы забил на изучение этой темы, если бы видел её практическое применение, которое я мог бы использовать “прям сдезь прям щаз”. Теория — это очень хорошо, но будучи оторванной от практики она не только становится скучной, но и крайне бесполезной. Кстати — большинство учебных заведений страдают этой проблемой. Если преподаватель не применяет на практике свои знания, то он существует в мире, оторванном от реальности и постепенно деградирует, отставая от современных трендов.
Необходимость освежить свои собственные знания
Ох, а вот тут я хочу отдельно заострить внимание своих читателей. Даже когда вы постоянно применяете свои знания на практике — вам надо освежать свои базовые знания на теоретическом уровне.
Например, если вы привыкли пользоваться автокомплитом в любимой IDE, то невозможность быстро вспомнить формат команды или список опций на лекции может оказаться неловким моментом. А если вы еще параллельно занимаетесь еще одним языком программирования с похожим синтаксисом? А если на это наложатся трудности тяжёлого рабочего дня? Тут удастся выкрутиться только если у вас такая же лояльная и адекватная группа студентов как у меня :)
Необходимость слайдов
Перед одной из лекций я решил, что пора завязывать со скучной теоретической частью и переходить к хардкорной практике. Одним из стимулов к этому послужили просьбы студентов, наверняка уставших от своего препода-зануды, вещающего про “космические корабли, бороздящие просторы большого театра” :) Я самоуверенно решил, что на этом занятии нам не понадобятся слайды, а мы обойдёмся консолью и IDE. Попробуйте угадать с первого раза, кто выглядел самоуверенным мудаком? Вы совершенно правы :) Студенты, которые до этого не использовали преподаваемый материал, вполне ожидаемо не смогли сразу запомнить всё то, что я писал в консоли и IDE, и попросили меня в дальнейшем так не делать :) Поэтому мне пришлось поставить себе галочку — перед каждым занятием обязательно делать слайды, даже если на каждом из них будет всего по 1 строчке кода.
Партнеры и спонсоры
Вот тут я должен сказать, что мне очень повезло с моими друзьями и знакомыми, работающими в других компаниях. Для того, чтобы поддержать моих студентов, я договорился с книжным издательством “Манн, Иванов, Фербер”, которые сделали скидку на все свои книги для моих студентов и с замечательными ребятами из компании JetBrains, которые подарили подписку на свои продукты для ребят. На самом деле — это выгодно для всех. Издательство хоть на чуть-чуть, но повысило свои продажи (логично же, что даже несмотря на скидку, они все-таки имеют маржу), а JetBrains приобрели лояльных клиентов (скорее всего студенты продолжат пользоваться их IDE, поскольку они делают действительно качественные продукты). Таким образом , все оказались в выигрыше. Единственное, на что стоит обратить внимание — иногда имеет смысл делать такие подарки после того, как часть студентов “отвалится”, решив, что им не интересно учиться.
В общем — жизнь преподавателя достаточно занятная, хоть и тяжёлая. Надо быть готовым, что помимо основной работы вы будете ходить на лекции, после которых еще долго будете отвечать на вопросы и решать проблемы студентов. Надо быть готовым к тому, что времени на подготовку к лекции будет уходить примерно столько же, сколько и на её чтение, а это значит — опять же часы, украденные от работы или от семьи. Надо ли это вам — не знаю, но одно могу сказать — попробовать однозначно стоит.
-
Программирование4 недели назад
Конец программирования в том виде, в котором мы его знаем
-
Видео и подкасты для разработчиков1 неделя назад
Как устроена мобильная архитектура. Интервью с тех. лидером юнита «Mobile Architecture» из AvitoTech
-
Магазины приложений3 недели назад
Магазин игр Aptoide запустился на iOS в Европе
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.8