Мой опыт проведения курса по Android

Привет! Меня зовут Мялкин Максим, я занимаюсь мобильной разработкой в KTS.

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

Подробнее о том, как это было у меня, расскажу в статье:

Почему я занимаюсь мобильной разработкой

В какой-то момент учебы в университете у меня появился Android-телефон. 

Иногда в свободное время я что-то писал для этой платформы, но из чистого интереса, для себя. Учился я в МГТУ им. Баумана, где есть такой проект, как «Технопарк». Это курс на 2 года, где можно на практике изучить различные направления. Эта учеба идет дополнительной нагрузкой к основным занятиям. Брать такой курс тяжело, но полезно. Одним из направлений была «Мобильная Android-разработка». Я прошел этот курс и прокачал предыдущие знания, полученные в вузе.

После «Технопарка» встал выбор, в каком направлении развиваться. Кроме Android-разработки я попробовал фронтенд и бэкенд. 

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

Так я остановился на мобильной разработке, которая совмещает все: можно продумать архитектуру, хранение, взаимодействие с сервером, UI. 

После окончания учебы я пошел на стажировку в «Mail.ru» в раздел «Почты» и проработал там полтора года. В какой-то момент мы с бывшими однокурсниками решили создать свою компанию KTS. Все основатели поделили зоны ответственности, я взял на себя мобильную разработку. Это был конец 2016 года.

Мой опыт в преподавании

image-loader.svg

Весной 2019 в компании решили провести курс по Android. 

У KTS уже был опыт обучения фронтенду и веб-разработке: на кафедре в МГТУ им. Баумана можно вести лекции, и мои коллеги из KTS уже преподавали там. Внутри нашей компании есть школа для студентов Метакласс, там мы провели курсы по фронтенду и бэкенду. Через какое-то время решили, что настала очередь Android-разработки.

Искать опытных мобильных разработчиков тяжело: их мало, и, как правило, они уже заняты. Поэтому основной задачей первого курса было взять в команду Android стажера, и мы его нашли. Но на первый курс записалось не очень много людей, потому что желающих учиться мобильной разработке было меньше, чем фронтенду или бэкенду. К тому же школу мы тогда проводили офлайн в офисе в вечерние часы после работы, что ограничило возможный круг студентов. Сейчас мы учли предыдущие ошибки и перевели школу в онлайн. На последний курс по Android записалось около 200 человек.

Как решил сделать курс со Skillbox

ff648032e27bf32f567b5feb0dcf8310.jpeg

После окончания курса в KTS прошел месяц. 

Как-то я зашел в один из чатов по мобильной разработке и случайно увидел, что Skillbox ищет преподавателя для создания курса программирования на Android. Я решил, что для меня это очень удачное время, чтобы попробовать. Только что я закончил вести курс в KTS, у меня накопился базовый материал, и знания в голове еще свежие. Также хотелось прокачать навыки выступления. Я думал так: прокачаю знания и навыки преподавания, проведу курс на популярной платформе, еще и заработаю. 

Для заявки меня попросили прислать короткое видео с объяснением простой темы. После этого я созвонился с менеджером и методистом курса, мы поговорили о мотивации, курсе и условиях работы. В августе закончилась школа KTS, а в сентябре я начал готовить программу.

Подготовка программы курса

image-loader.svg

Первым этапом сотрудничества было составление программы курса. 

Курс должен был познакомить студентов с платформой Android и научить разрабатывать приложения с использованием современных технологий. 

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

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

Изначально Skillbox планировал сделать курс на основе языка Java, по которому уже был готовый курс. Материал по Android нужно было разработать, а курс по Java предоставить студентам отдельно. Но в 2019 году во многих проектах уже использовался Kotlin, и он был рекомендуемым языком для Android-разработки от Google. Записывать новый курс на Java было нецелесообразно, поэтому я предложил разрабатывать курс с Kotlin. Для этого понадобилось добавить дополнительные модули по основам Kotlin в начало курса Android-разработки. В дальнейшем Kotlin тоже был выделен в отдельный курс.

image-loader.svg

Курс по Android был рассчитан примерно на полтора года. Люди приходят за сменой профессии, поэтому зачастую у них нет даже базовых знаний. Из-за подробной подачи материала получилось много. 

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

image-loader.svg

В помощь студентам для каждого модуля составляется глоссарий. В него выносятся термины, которые покрываются в модуле и самые базовые понятия, которые не объясняются.

У меня была возможность сократить время работы над курсом, урезав материал. Но в таком виде подача получилась бы скомканной. Я понимал, что занятия будут смотреть новички, поэтому показалось важным хорошо все проработать. Чтобы курс был полезен студентам в будущей практике.

Для сравнения, занятия в KTS совсем другие. Курс, который проводился осенью 2021, включал 7 лекций по 1 в неделю, а студенты должны были успеть все усвоить, выполнить домашнее задание и защитить проект.

В курсе Skillbox было 34 модуля. Новый модуль выходил раз в 2 недели и состоял из 4–5 уроков-лекций. Изначально планировалось, что общая длина уроков в модуле займет час времени. Но из-за обилия подробностей получалось больше — около полутора часов на каждый модуль. Но даже так некоторые студенты писали отзывы о том, что информации недостаточно.

Запись модулей курса

3e51a6b264f8d67d66a75b165104ce24.jpeg

До начала пандемии коронавируса я готовил материал дома и приезжал в студию для записи.

Я собирал презентации, глоссарий, сценарии лекций, примеры кода, домашние задания и тесты по материалам модуля. На начальном этапе курса все материалы проверялись методистом на предмет корректности донесения информации до студентов. На подготовку и запись модуля уходило в среднем 30 часов. Т.к. модуль выпускается раз в две недели, то каждый день после работы я 2–3 часа готовил материал.

image-loader.svg

В таком режиме я разрабатывал курс почти полтора года. За это время я совершенно выдохся и не осилил работу над вторым, углубленным курсом. Это было немного обидно: готовить подробные занятия по базовому материалу было не очень интересно, изначально я рассчитывал на углубленный курс. Но в итоге я выгорел на базовом курсе, и углубленный разрабатывал уже другой преподаватель.

Были и другие проблемы: в начале было сложно что-то рассказывать под запись. Раньше у меня такого опыта не было, а в студии на меня направлено несколько камер со светом. 

Через несколько модулей я привык, но тут начался карантин из-за пандемии. Тогда я стал записывать уроки из дома. Это оказалось комфортнее: я сижу в привычной обстановке, а на втором мониторе всегда можно подглядеть подсказки по тексту. 

К тому же так получалось быстрее. Я ехал в студию в пятницу утром и терял там половину рабочего дня. Сама запись там тоже шла дольше: я тратил 6 часов на запись модуля. Дома запись занимала в два раза меньше времени.

В итоге в студии я записал только первые 7 модулей, а остальную часть удаленно.

Домашние задания и выпускные проекты

В модуле есть теоретическая и практическая части.

Теоретическая состоит из лекций и слайдов презентации. В практической части студент видит скринкаст среды разработки, где я пишу код по теме урока. По окончанию модуля студенту обязательно дается домашнее задание. 

Изначально планировалось, что вместо стандартных ДЗ студенты будут разрабатывать общий проект на протяжении всего курса. А в качестве домашних заданий будут выступать части проекта. Но потом остановились на обычной схеме других курсов: в каждом модуле или наборе модулей студент должен сделать отдельный мини-проект по разобранной теме, не связанный с другими. 

У домашнего задания есть:

Так задания проще придумывать, и в них удается покрыть все темы уроков в полном объеме. 

Но выпускная работа тоже была. Для проекта я нашел список открытых API и выбрал самые интересные и актуальные. В итоге мы с методистами выбрали 3 проекта: фотосток unsplash, социальная сеть reddit и тренировочный сервис strava.

По каждому проекту нужно было написать ТЗ для упрощения проверок и стандартизации требуемых функций. 

image-loader.svg

Дополнительно по ТЗ дизайнеры нарисовали дизайн приложений в Figma.

image-loader.svg

Студенты по окончании курса выбирали одну из тем проекта и реализовывали конкретный список возможностей по готовому описанию.

Некоторые домашние задания я переделывал. Команда продуктового аудита собирает отзывы от студентов, считает показатели CSAT. Если какое-то ДЗ вызывает слишком много вопросов,   увеличивается количество итераций исправлений студентами — его перерабатывают, упрощают. Так студенты не бросают курс, остановившись на непонятных темах.

Еще приходилось перезаписывать некоторые уроки: информация, записанная в курсе, постоянно устаревает: версии IDE, подходы, deprecated-методы. Дополнительно случались проблемы технического характера со звуком и видео. Без перезаписи все это добавляет сложности для студентов.

Проверка домашних заданий

Все домашние задания на курсе проверяют преподаватели и дают обратную связь студентам. 

После выхода первых модулей задания я проверял сам, чтобы понять, какие проблемы возникают у студентов. На курс пришло порядка 50 человек. Вместо разработки нового материала я почти все время потратил на проверку домашних заданий.

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

Проблемы во время создания курса

По итогам курса я выделил основные проблемы, которые возникали при его создании и доработке:

  • Устаревание информации. Пока я записывал курс, материал в первых уроках успел устареть: версии IDE, методы и подходы. Иногда приходилось перезаписывать материал

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

  • Недовольство аудитории. Студенты жаловались на слишком растянутое или слишком сжатое повествование, манеру подачи. Угодить всем нереально, и для исправления брались только часто повторяющиеся жалобы

  • Длинные уроки. Некоторые уроки получились слишком долгими вплоть до часа времени —, а с ростом длительности растет и сложность понимания

  • Понимание проблем с опозданием. Для анализа и корректировки модулей не хватало промежуточных проверок оценок от студентов. Этим занималась отдельная команда продуктового аудита, когда запись курса уже подходила к концу. Поэтому в момент понимания проблем исправлять некоторые оказалось невозможно без полной перезаписи модулей. Также не удалось учесть прошлые проблемы при создании новых модулей

  • Лишняя трата времени на сценарии. По итогам курса среднее количество листов сценария в одном модуле — 42. Я убедился, что сценарий урока сильно помогает, но только на теоретической части урока, в остальном достаточно тезисов. Поэтому не нужно делать сценарии слишком подробными

  • Общая нагрузка на одного человека. Одному писать курс тяжело, особенно такой длинный. Лучше кооперироваться несколькими преподавателями

  • Жесткий график выпуска модулей. 2-недельные дедлайны по записи модулей приходится соблюдать довольно долгое время, в моем случае — полтора года. Это еще одна причина, по которой такой курс стоит делать командой

  • Часть материала для другого уровня. В погоне за лучшим пониманием в курс был добавлен некоторый необязательный материал для новичков. Его можно было убрать, тем самым сократив некоторые уроки

Примеры необязательного материала

  • Теория бд

  • Внутренности корутин

  • Нюансы разных видов сборок

  • Редко используемые UI-элементы

  • Scoped storage

  • Углубление в многопоточность, handler, looper

Система оплаты

2 года назад мы заключили договор с оплатой за часы: как поработал, так и заработал. Но в среднем все модули занимали примерно одно количество времени: 30 часов чистой работы. Оплату переводили после публикации каждого модуля на платформе.

Кроме этого, я встречал подход с фиксированной оплатой за модуль и за проверку домашнего задания.

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

При обсуждении оплаты важно правильно оценить ценность вашего времени, объем и длительность курса, график выпуска материала. Так как в большинстве случаев курсы делаются овертаймом, дополнительная активность не должна идти вам в убыток.  

Выводы

Работа над курсом заняла полтора года.

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

Стало проще рассказывать материал слушателям. Хотя перед лекциями я до сих пор немного волнуюсь, но стало комфортнее.

При написании статьи собрал статистику разработки курса :

  • Количество модулей — 34

  • Количество уроков — 162

  • Количество ДЗ — 40

  • Количество тестов — 64

  • Длительность видеокурса (ч) — 46,5

  • Времени потрачено на курс (ч) — 997

  • Среднее количество времени на модуль (ч) — 29

  • Количество листов презентаций — 1243

  • Среднее количество листов презентаций в одном модуле — 36

  • Количество листов сценария — 1449

  • Среднее количество листов сценария в одном модуле — 42

Когда курс в Skillbox закончился, у меня выдался относительно свободный промежуток времени в несколько месяцев. Тогда захотелось начать преподавать где-то еще, и я даже думал податься в другие школы. Но вспомнил, как уставал во время этой работы, и передумал :)

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

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

Я хотел бы обратить внимание читателей на то, что создание курса несколькими преподавателями лучше для всех. Студенты получают взгляд на вещи с нескольких сторон, а преподаватели тратят меньше времени и сил.

Если вы тоже делали курсы, поделитесь, как это было? Сильно ли вы уставали? Какой опыт получили? И вообще, понравилось вам это занятие или нет?

© Habrahabr.ru