Ещё до начала пандемии коронавируса в России мне пришла в голову мысль: "Могу ли я как-то ослабить экономические последствия эпидемии?". Идея возникла почти сразу: "Если многие люди могут потенциально потерять работу, значит, я должен им помочь с освоением новых навыков в области с большим спросом на рабочую силу". А так как я уже довольно долгое время программировал на C/C++, то решил в свободное время обучать людей программированию на...python.


Обучаю программированию на python


Почему же я выбрал python? Основная причина была в простоте языка, его распространенности и в большой доступности качественных материалов для обучения. Я разместил свой пост на пикабу с предложением бесплатно помочь в освоении программирования на python, и понеслось.


О методике преподавания


Для эффективного преподавания изначально я выбрал несколько стратегий.


Бесплатные онлайн-курсы


Я сразу понял, что не смогу обучать людей с нуля — сам я не использую python на постоянной основе. Поэтому я выбрал следующий формат работы. Я нашёл один прекрасный бесплатный курс по питону с задачами.


Пригласил пользователей пикабу в группу вк и объявил, что я сам в качестве ментора буду отвечать на простые вопросы из pythontutor. Сразу же всплыла одна из первых проблем: у пайтонтьютора не было мобильной версии. Люди хотели проходить курс по питону на смартфоне. К сожалению, единственное, чем я мог помочь в этом случае — посоветовать бесплатное мобильное приложение sololearn.


Чуть позже, я обнаружил ещё два прекрасных вводных курса по программированию на степике:
https://stepik.org/67
https://stepik.org/512


Как известно, у степика есть мобильное приложение.


Публикация чужих видео с youtube


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


Обучение через пример разработки простого приложения


Вообще, тут со сложностями я столкнулся практически сразу. Оказалось, что обучение разработке нужно начинать не с самой разработки, а со всего, что вокруг: установки IDE, рассказа о системе контроля версий, о принятых процессах разработки. А теперь представьте, что у вас есть группа из двух тысяч человек — кто-то уже прошёл курс по ООП, а кто-то только приступил к изучению циклов. Получается, что общей базы у группы нет, о чем конкретно рассказывать — непонятно.


О наивности

Я начал разрабатывать открытое приложение-органайзер и хотел показать участникам группы, что благодаря умению программировать можно действительно менять мир. Я выложил свой проект на сайт практик устойчивого развития — смартеку. На этом сайте можно проголосовать за понравившийся проект, и трое победителей получат сто тысяч рублей по результатам народного голосования. Чуть позже я понял, насколько был наивен — мои знакомые голосовать за мой проект не хотели из-за сложной процедуры регистрации (после авторизации через вк сайт требует заполнить ещё данные телефона, почты и т.д.), а проекты других конкурсантов просто накручивали лайки через сервисы накруток.


Составление треков обучения и сбор полезного материала.


Тут всё прошло более-менее гладко. Мы смогли составить треки обучения по двум направлениям: data science и автотестирование. До веб-разработки мы пока не дошли. Но тут выявился другой недостаток: мало желающих идти "правильным" путём.


В нашей группе я предложил начать вместе проходить трек data science с курса по теории вероятностей. Условие: наличие отличных сертификатов по двум указанным курсам питон со степика. Много людей выразили желание поучаствовать в этом, когда я только анонсировал задумку, но, к сожалению, никто пока не прислал сертификаты. Причиной мне видится нежелание людей тратить время на что-то непонятное.


Результаты обучения за два месяца (результаты опроса)


На момент проведения опроса в группе было около двух тысяч человек. В опросе приняло участие 58 человек. Дальше приведу несколько картинок. Гендерное распределение:


гендерное распределение


А так распределились возраста участников:


Возраста


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


Поиск инфы


У нас в группе есть несколько сильных программистов, просто они не решились портить статистику:


Опыт


Интересно, что "старички" все ещё активны, но при этом есть и прилив "молодой крови".


Дата вступления


Далее статистика по курсу пайтонтьютор. Кстати, функцию упорядочивания отображения ответов опроса написал один из участников группы:


pythontutor


Мы спросили также, почему люди вступили в группу изучения языка:


Причина вступления


Интересно увидеть, как люди проходят задачки в курсах:


Усердность


и насколько они довольны собой в изучении языка:


Счастливость.


Итоги и планы на будущее


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


  • многим людям на хватает доступности некоторых курсов (мобильного приложения для изучения в дороге)
  • сложно мотивировать людей идти правильным путём (сквозь изучение базовых понятий компьютерных наук)
  • обучение реальному программированию требует обучения и технологиям разработки (DVCS, CI/CD), что лишь добавляет сложности
  • подбор хороших качественных обучающих материалов крайне трудозатратен
  • сложно заинтересовывать и мотивировать людей на начальных этапах (люди хотят чего-то прикладного, но при этом только-только проходят условный оператор).

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


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