Преподавание в сфере разработки ПО: чему можно научиться за один месяц

Вопреки распространённому заблуждению о замкнутости и необщительности программистов, вполне очевидно, что взаимодействие с людьми и обмен опытом – неотъемлемая часть нашей профессии. Чтобы постоянно узнавать что-то новое и совершенствоваться в своём деле, мы просто обязаны плыть по течению вместе: формируя региональные сообщества, участвуя в конференциях, выступая с докладами и мастер-классами друг перед другом. Польза для участников (слушателей) подобных мероприятий нам достаточно понятна. А чем может быть полезно оказаться в роли организатора или преподавателя?

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

Цель публикации: поделиться опытом, полученным автором в результате работы преподавателем; рассказать об основных аспектах и «подводных камнях» преподавательской деятельности.

Предполагаемая аудитория: молодые программисты и разработчики, которые любят учиться и хотят попробовать учить других.


Этим сентябрём мне впервые представилась интересная возможность попробовать себя в роли преподавателя. Когда ты студент и смотришь на то, как твои наставники проводят практические занятия или читают лекции, от тебя неизбежно ускользает множество нюансов, которые не всегда получается приметить, даже если проявлять изрядную внимательность. О некоторых из таких нюансов порой трудно догадаться в принципе. Трудно догадаться до тех пор, пока сам не окажешься на месте преподавателя и не попробуешь всё узнать и испытать сам.

У меня было всего лишь 44 академических часа для преподавания мобильной разработки на ОС Android. Аудитория занятий – студенты 4 курса одного из айтишных колледжей нашего города. Чтобы лучше понять контекст загруженности, 44 академических часа — это 22 пары по полтора часа. Если проводить в неделю около 9 пар, то завершить весь курс можно менее чем за месяц. При подобном раскладе уровень нагрузки едва ли сопоставим даже с работой на полставки. Однако не стоит забывать о таком нюансе, как подготовка к занятиям, которая для первопроходца будет увеличивать количество рабочих часов раза в три.

Но для чего вообще стоит преподавать? Скажем, вы не учились на педагога, у вас никогда не было цели в жизни заниматься образованием других людей. Так зачем вдруг пробовать изменить что-то в этой ситуации сейчас? Для меня первоначально ответ на этот вопрос был один — чтобы доказать себе, что я могу.
Когда ты только начинаешь делать свои первые шаги в преподавательской деятельности, то неизбежно сталкиваешься с сильным стрессом. Причин этому много — от неподготовленности аудиторий (оборудования и ПО) к проведению занятий, до отсутствия изначального контакта и понимания принципов взаимодействия со студентами. По мере того, как ты набираешься опыта, стресс стремительно ослабевает и в один момент уходит вовсе. В этот же момент ты сталкиваешься с другой крайностью — преподавание становится для тебя рутиной. Как быть в данном случае — не столь ясно, потому что к этому времени мои академические часы уже подошли к концу.

Также, помимо того, что ты учишься справляться с трудностями, преподавание даёт отличную возможность сделать себя более дисциплинированным. Когда ты понимаешь и осознаёшь свою ответственность — ответственность не только перед собой, но и перед ребятами, которые посещают твои пары, то волей-неволей не позволишь себе не подготовиться к занятиям, опоздать на них или, тем более, пропустить вовсе. Эта ответственность даёт тебе силы, чтобы с легкостью спать по 4 часа, не чувствовать усталости, когда ложишься немногим позже полуночи и встаёшь в часов пять утра. Это действительно так — порой даже трудно осознать, почему ты выдерживаешь подобный режим и действительно чувствуешь себя бодрым при такой нагрузке.

И, наконец, еще одна причина, которую я понял уже в процессе — это возможность определить контекст разных профессий.
Во-первых, лучше понять преподавателей, которые ведут или вели пары у тебя. Становится однозначно понятно, когда преподаватель хорошо готовится к занятиям, а когда нет. Это может происходить в случаях, если он либо прекрасно разбирается в своей профессиональной сфере и умеет импровизировать, либо когда он относится к своему делу спустя рукава. Вероятно, нечто подобное было вполне заметно и раньше, но теперь видишь суть глубже — когда педагог действительно старается чему-то научить, но не совсем точно направляет свои силы, или же когда, откровенно говоря, халявит и находит способы вкладывать минимум усилий в работу. В любом случае твоё отношение к педагогам теперь имеет значительно больше уважения и чуткости, потому что ты знаешь, насколько просто по сравнению с ними быть в роли студента, и понимаешь, в какой степени преподаватель зависит от дисциплины и настроя в группе во время пары.
Ну а во-вторых, попробовав преподавать, осознаёшь, что некоторые проблемы, которые вызывали у тебя негодование в профессии программиста, теперь могут казаться совсем ничтожными или перестать восприниматься как проблемы в принципе. Безусловно, профессия профессии рознь, в разных компаниях отличаются условия и стрессовая нагрузка работы, однако программист, на мой взгляд, в общем случае больше предоставлен самому себе, а как следствие более капризен. Если обобщить, то для оценки своего текущего положения всегда нужен контраст и смена обстановки.

С целями разобрались, отлично. А как насчёт непосредственного процесса аудиторных занятий? Здесь, пожалуй, каждый выбирает свой путь и стиль сам. Когда я учился на бакалавра, то имел возможность наблюдать, как разные преподаватели работают со студенческой группой на парах. Есть некоторые общие принципы, заметные в использовании практически у каждого педагога. Однако среди всех преподавателей выделяются явные мастера (как с точки зрения изучаемой профессиональной сферы, так и педагогических умений), хорошие профессионалы, но плохие педагоги, и в принципе никакие преподаватели, у которых нет ни опыта, ни желания чему-то научить (и научиться самому).
Таким образом, имея еще совсем свежие воспоминания (так как получил диплом в этом году) о том, какие методы успешных педагогов давали наибольший результат, а какие приводили к плохим последствиям, мне было изначально немного проще выстроить тактику и стратегию своего поведения. Но, очевидно, имея лишь представление о своей дальнейшей деятельности при отсутствии практики, всё равно регулярно придётся вставать на грабли и избавляться от неровностей и изъянов в предполагаемой изначальной модели. Поэтому обо всём по порядку.

1. Прежде всего, нужно достигнуть приемлемого уровня знаний и опыта в преподаваемой профессиональной сфере. Все примеры, когда кто-то пытается освоить нечто новое на ходу и сразу же обучать этому других, как правило, заканчиваются не очень радужно (разве что если рассматриваемая предметная область не является смежной к текущей специализации преподавателя). В наши дни функция накопления и передачи знаний значительно переместилась в сторону от профессоров и университетских библиотек к онлайн-курсам и серверам данных. Практически любая профессиональная сфера становится доступной для освоения, благодаря обилию информации в открытом доступе — всё упирается лишь в ваше умение разбираться в ней и способность мотивировать себя для обучения. Поэтому преподаватель должен, в первую очередь, помогать студентам ориентироваться в этой груде информации, передавать свой опыт, чтобы обучающиеся не попадали в тупики и шли быстрее в нужном направлении.
Если у наставника нет достаточного стажа в преподаваемой предметной области, то он не сможет передать ученикам понимания методологии работы в этой профессиональной сфере и как следствие ничуть не ускорит процесс их обучения. Более того, отсутствие опыта может привести к тому, что преподаватель, наоборот, будет сбивать обучающихся с верного курса. А собственно опыт можно получить, только самому наступая на грабли в процессе работы и совершенствования в ней. Когда у вас есть любимое дело, которому вы посвятили не один год и которым вы по-настоящему увлечены, нюансы ораторского искусства и умения увлечь аудиторию будут не так сложны для вас, потому что в этом случае красиво говорить и заинтересовать слушателей восхитительной для вас темой будет получаться само собой (главное — не сильно погружаться сразу в сложные детали).
И ещё, хороший уровень знаний в предметной области нужен, чтобы не попасть в просак во время практических занятий, когда время от времени будут возникать (а это произойдёт обязательно) нетривиальные ошибки в процессе выполнения заданий студентами — с этими ошибками вы уже должны быть знакомы, уметь решать и объяснять их причины. Мне в этом отношении было достаточно просто, потому что уже имелся опыт за плечами.
Подведу итог: если не чувствуете себя асом в своей профессии — не стоит обучать даже её основам.

2. Если уж мы говорим о преподавании такой технической дисциплины, как разработка на мобильную платформу Android, то нельзя не охватить вопрос подготовки аудитории к практическим занятиям. Мне кажется, что в обучении программированию и разработке важна, в первую очередь, практика и непосредственная работа с кодом, нежели внимательное прослушивание лекций. Это предполагает, что во время пар у каждого студента должен быть компьютер со всеми установленными необходимыми SDK, IDE и эмуляторами. Во время моего обучения на бакалавра мы проходили дисциплины, связанные с разработкой, и проблем с ПО на нашей кафедре никогда не возникало. Когда привыкаешь к отсутствию таких трудностей, то начинаешь ошибочно считать, что везде будет также. Но в действительности на этом можно хорошо проколоться.
В моём случае необходимое ПО было установлено на компьютеры только спустя пару сорванных дней, когда уже предполагались практические занятия. Происходило это из-за того, что руководство не могло уделить достаточного внимания для контроля предварительной подготовки компьютеров по моим требованиям, а технический специалист шёл по пути наименьшего сопротивления. В один момент вопрос моего дальнейшего преподавания был поставлен мною ребром до тех пор, пока не будет установлено нужное ПО. Контролировать работу технаря пришлось самому, нервов на подобную прелюдию было потрачено тоже порядочно. Больше всего переживаешь в таких случаях, чтобы ребята не потеряли интерес к дисциплине из-за подобных организационных неурядиц.
В общем, здесь вердикт такой — ни в коем случае не стоит торопиться: пары можно проводить только и только после того, когда лично убедишься, что всё необходимое для твоей работы подготовлено, и ты не будешь на это отвлекаться.

3. Как подготовить план обучения, и каким он должен быть? Безусловно, вы должны знать, о чём будете рассказывать и что разбирать на практических занятиях. Мне казалось, что подобная дорожная карта должна быть достаточно подробной и исчерпывающей. Так я считал, потому что видел аналогичные материалы у своих преподавателей и считал, что данный план можно подготовить с хорошей точностью. Увы, нет. До того, пока ты не узнаешь действительный уровень подготовки своих учеников и не пройдёшься по всему курсу обучения хотя бы раз — адекватность предварительного плана учебной программы будет стремиться к нулю.
Перед началом пар, я узнал, что группа, в которой буду преподавать, является одной из самых сильных, что у ребят уж точно должны быть неплохие знания (по крайней мере основ) ООП. Поэтому программа содержала минимум разделов, посвящённых принципам программирования, но максимум — именно по работе с API ОС Android. И уже после первых пар стало ясно, что об асинхронной работе с сервером и продвинутым интерфейсом в Android лучше забыть. Более того, темы, в которых наглядность сводилась к нулю (например, работа с фоновыми сервисами), интерес и концентрация ребят также были совсем слабыми.
Одним словом, в случае планирования программы занятий, нужно оставлять большой зазор на возможные импровизации и корректировки.

4. Продолжая предыдущий вопрос, добавлю, что очень важную роль в составлении и корректировке программы обучения играет фидбэк от самих студентов.
Во-первых, спросив ребят после пар о том, насколько им понятен материал и интересна текущая форма обучения, можно значительно уменьшить свою неопределённость в представлении об их успеваемости и общей заинтересованности в изучении платформы. Как правило, не всегда получается однозначно понять во время самой пары, почему в определённый момент у ребят теряется концентрация или они совсем перестают понимать, что и как мы в данный момент реализуем в программном коде. Когда же я спрашивал их, то всегда получал достаточно развёрнутые комментарии о том, что на первых порах трудновато ориентироваться по теории (изначально соотношение теории и практики было почти одинаковым), лучше делать ещё больший упор на практику и рассматривать детально более фундаментальные темы. С одной стороны, это даже проще, потому что лекции требуют значительной подготовки в сравнении с проведением практики. Однако, как выяснилось позднее, готовить письменные материалы всё же имеет смысл (об этом чуть позже).
И собственно вторая причина полезности фидбэка — это неплохой и достаточно простой способ установить более доверительный контакт с ребятами, потому что после пар, возможна менее формальная обстановка. Вдобавок важно быстрей выучить учащихся по именам. К сожалению, мне казалось, что это произойдёт автоматически, но, увы, снова нет (запоминаешь только человек 5). Для этого тоже нужно прикладывать усилия, либо знакомство по именам займёт значительно больше, чем доступные в тот момент для меня 3 недели. Спрашивая своих студентов, вы быстрее сможете получить представление как об уровне их подготовки, так и текущей успеваемости. Это также поможет выработать индивидуальный подход к обучению разных учеников, что в конечном счёте позволит увеличить общую производительность группы.
Подводя итог, скажу: мнение студентов о вас и ваших парах — ключевой показатель, подсказывающий, как следует корректировать своё поведение и курс обучения в целом. Ни в коем случае этим нельзя пренебрегать.

5. Что касается непосредственного процесса обучения, то здесь, наверняка, возникнет вопрос: какой форме и методологии отдать предпочтение? Изначально считал, что идеальным вариантом будет рассказывать небольшой блок теории, затем вместе выполнять реализацию описываемых задач на практике. А после практического разбора достаточного количества нового материала проводить самостоятельные работы, чтобы знания были действительно усвоенными. Но. Во-первых, слишком много минут лекции приводит к потере концентрации у студентов, и здесь нужно хорошо чувствовать, когда следует переключиться на практику. Поэтому со временем роль моих презентаций стала заключаться только в объяснений основных концепций. Во-вторых, когда в группе значительна разница в подготовке разных студентов, очень трудно сделать так, чтобы одни двигались с приемлемой скоростью в обучении, а другие не успевали заскучать. Когда основным источником информации становится преподаватель, добиться такого равенства невозможно. Поэтому, проводя занятия по программированию, следует, в первую очередь, позаботиться не о презентации, а о письменном представлении всей необходимой теории и хода выполнения практического задания. Таким образом основные усилия преподавателя будут направлены на помощь менее подготовленным ребятам, в то время как отличники смогут быстрее выполнять задания и разбирать больше новых лабораторных за пары, изредка получая необходимые консультации.
Я, к большому сожалению, сделать подобные материалы никогда не успевал. Поэтому даже с максимальной выкладкой не получалось выкрутиться так, чтобы все были постоянно заняты и пытались реализовать что-то, что более соответствует уровню подготовки конкретного студента.
Если обобщить, то, выбирая методологию проведения занятий, следует обязательно учитывать особенности вашей предметной области и предоставлять разным студентам возможности для их персональной максимальной производительности.

6. Говоря о методологии, стоит отметить важность домашних заданий. Раньше я значительно недооценивал их значимость. Однако в такой очевидной вещи, как выполнение практических работ дома, есть большой смысл. Потому что суть домашнего задания не в том, чтобы учащемуся жизнь мёдом не казалась, а чтобы он лучше усвоил пройденное на паре. Я замечал, что на парах студенты могли очень внимательно слушать меня и стараться вникнуть в то, о чём я рассказываю. Но когда дело доходило до озвучивания даже самого простейшего и типового практического задания, то ребята всё равно продолжали ждать, когда я начну делать задание вместе с ними по шагам и снова разбирать всё только что рассказанное. Это очень плохо, потому что для усваивания новых тем посредством только механической памяти (когда бездумно копируется код, проецируемый на экран преподавателя) будет уходить много времени. Даже если вы идеально всё объясняете на парах и максимально задействуете визуальную и слуховую память студентов, всё равно от этого будет сравнительно немного толку, нежели если учащийся станет сам вникать в тему и стараться решить, приложив свои усилия, поставленную задачу. И домашние задания как раз и помогают таким образом больше вовлечь студента в процесс обучения.
Думаю, общий успех группы, в которой я преподавал, был бы значительно выше, если бы мной продумывались и тщательно составлялись также лабораторные для домашнего выполнения. Здесь очень важно, чтобы эти задания заставляли ребят думать, но были более чем выполнимыми, дабы не терялся интерес к ним при встрече с «нерешаемой» задачей.
Одним словом, домашние задания — обязательная и неотъемлемая часть в ходе вашей преподавательской деятельности.

7. Большую важность имеет количество студентов в группе, для которой проводятся занятия. В идеале следует разбивать большие группы на подгруппы по 7 — 10 (максимум) человек — в зависимости от уровня подготовки ребят. Тогда преподавателю легче охватить всех и следить за ходом работы каждого, а не наматывать круги по аудитории, едва успевая увидеть, кто что делает на текущем этапе. В любой группе обязательно студенты будут разниться по своей успеваемости (особенно если речь идёт о программировании). В моём случае получилось так, что часть студентов в принципе не приходила на занятия, небольшой процент (около 10%) на парах не делал ничего, а остальные вполне неплохо справлялись с заданиями, и из них человек 5 были особенно активными и имели заметно большую успеваемость. Такое положение дел в какой-то степени облегчило мне ситуацию. Но, к сожалению, реализовать полноценное разделение на подгруппы образовательное учреждение может позволить далеко не всегда. Поэтому здесь отчасти может выручать разработка методичек (электронных материалов), описанная в пятом пункте.
Итак, если есть возможность, стоит позаботиться о разделении больших групп на малые для удобства проведения практических занятий.

8. И, наконец, нельзя не сказать пару слов об общей дисциплине во время проведения пар. Здесь, опять-таки, каждый выбирает свой стиль сам. На мой взгляд, учитель должен, в первую очередь, иметь значительный авторитет в глазах студентов. По этой причине невозможно обращение студентов к преподавателю на «ты» и, vice versa, учитель должен придерживаться такого же формального тона и за редкими исключениями всегда обращаться к студентам на «вы». Панибратское отношение и всяческие шутки-прибаутки, по-моему, ставят крест на авторитете преподавателя. Это не значит, что нужно быть очень зажатым, говорить только по существу и всегда с максимальной серьёзностью. Вовсе нет. Мы могли говорить с ребятами на перерывах открыто и в почти неформальном тоне, но делать подобное во время пар, как мне кажется, ужасно бы сказывалось на дисциплине. Или же для этого нужно особое умение, которое я пока у себя не развил.
Хорошо помню, как один мой прежний преподаватель сначала создавал подобную практически неформальную атмосферу на паре, а потом едва ли мог в нужный момент вернуть дисциплину. Особенно запомнилось, что, делая замечания с улыбкой на лице, коэффициент их результативности падал до нуля. Просто помню сам, что не особо воспринимал такие замечания. Поэтому при необходимости вернуть ребят, начинавших отвлекаться, к работе замечания, как я усвоил, должны быть вежливыми, но не допускать варианта трактовки возможного согласия с нарушителями дисциплины.
И самое-самое главное — это ваш настрой, энтузиазм и умение вести за собой. Люди — очень чуткие создания, они прекрасно чувствуют, когда то, о чём вы рассказываете, не вызывает интереса у вас самих или вы в себе не уверены. Вспоминая себя студентом-бакалавром, хорошо осознаю, что ребята обычно ждут инициативы от преподавателя и теряются, когда он пускает дело на самотёк. То, насколько вы сможете увлечь своим интересом студентов, насколько уверенно вы ориентируетесь в своём предмете — определяет ваш успех как лектора. Безусловно, не стоит говорить о том, что ваша речь должна быть естественной, обходиться без запинок и произноситься громко и с хорошей дикцией. Улыбайтесь, старайтесь охватить взглядом каждого студента и понять его текущий настрой по отношению к вам и тому, о чем вы рассказываете.
Подводя итог, стоит сказать, что достаточно трудно дать однозначные рекомендации, которые помогли бы преподавателю в проведении занятий. Здесь нужно разве что придерживаться удобного для вас стиля, анализировать то, что вы делаете, и продолжать набираться опыта.

Нас всегда пугает нечто незнакомое и неизведанное. Порой нам трудно собраться, чтобы попробовать себя в чём-то новом. Однако, преодолев свои сомнения и решившись на это, мы сполна будем вознаграждены полученным опытом и знаниями. Для меня испытать себя в роли преподавателя было хорошим способом разобраться в, казалось бы, привычном со стороны наблюдателя деле. А ещё это дало неплохую возможность узнать немного больше о таких аспектах, как ответственность и самоорганизация.
Я уверен, что, попробовав преподавать, вы также откроете для себя нечто новое. Когда мы учим кого-то, то в значительной степени даже больше учимся сами. Если вы чувствуете свои силы и готовы к преодолению незнакомых до сих пор трудностей – пробуйте, результат стоит того!

Искренне надеюсь, что вам было интересно погрузиться в размышления о преподавании в сфере ИТ вместе со мной. Буду рад услышать ваши комментарии (приветствуется аргументированная критика) или ответить на возможные вопросы!

© Geektimes