Как я учусь на курсах frontend разработки с помощью доработанного метода ZettelKasten

598ad788de095ca259ea6035c490f9de.png

До недавнего времени я считал, что все on-line курсы обучения программистов с нуля — это один из 300 сравнительно честных способов отъема денег у населения. Почему? Да потому что с нашей специальности ВУЗа «программист» после 5 лет обучения не более 30% смогли начать работать по этой профессии. При этом к нам в группу шли самые умные парни и девушки со всего института. И мозги их были молодыми и неокостеневшими. И при этом такой слабый результат!

Потому, когда мой племянник пошел на подобные «быстрые» курсы, я лишь посочувствовал его бессмысленным (как казалось на тот момент) денежным тратам. Со слов племянника, там был бесплатный вводный курс, ссылку на который он выслал. И я решил лично проинспектировать современное предприятие Остапа Бендера. Однако, уже через пару часов обучения, мое мнение несколько изменилось. 

Типичная реклама подобных курсов

Типичная реклама подобных курсов

Пару слов о моем опыте в программировании. Большинство реализованных за последние 30 лет проектов были классическими Desktop-приложениями на VB, Delphi, C#, Oracle, SQLite, PostgreSQL. Однако, в портфолио «затесались» и 4 полноценных WEB Интранет-проекта на Perl, ASP.NET и PHP. Посему я имел какое-то представление о WEB-разработке.

Так вот, первое что удивило, это структурированность предлагаемой информации. 90% излагаемого материала я и так знал. Но вот целостного представления не было. Здесь же не только давался материал, но и тут же в тренажере с сайта можно было проверить, как именно ты его усвоил. Известная в педагогике фича — то, что тебе кажется понятным, совсем не значит, что ты его понял. А задание на тренажере позволяет самому от себя получить обратную связь. В общем, я так увлекся, что с удовольствием прошел весь вводный курс. Кстати, узнал причину своих страданий на CSS во время реализации всех 4-х WEB-проектов.

Однако, даже на вводном материале я понимал, что многое скоро забудется. Потому параллельно оформлял весь новый материал по методу ZettelKasten в программе  «LumanBox для Windows». Кстати, племянник жаловался, что нового материала много, и как его запомнить, а потом быстро вспомнить — неприятная проблема. Чтобы помочь ему, и тем, кто проходит подобные курсы, я решил сделать данную публикацию. То есть в данной статье продемонстрирую, как проходить on-line курсы по frontend программированию с использованием метода ZettelKasten для эффективной организации индивидуальной базы знаний. Такой подход будет преследовать сразу две цели:

  1. глубоко усвоить новый материал (чтобы шипики в нейронах нашего мозга сформировались как положено);

  2. сформировать свою личную базу знаний, которая будет позволять вспомнить необходимое знание хоть через год, хоть через 10 лет, максимум за пару минут.

Пример структурирования одного конкретного спринта on-line курса

Пример структурирования одного конкретного спринта on-line курса

Особенность подобных курсов является прямо таки вал новой информации для усвоения. Потому я сразу понял, что классический ZettelKasten здесь плохо будет работать. Пока по всем канонам оформишь индивидуальную базу знаний, любой deadline пройдет, и вылетишь с курсов за неуспеваемость! Поэтому организовал свою работу с ZettelKasten по следующему алгоритму:

  1. По мере ознакомления с материалом, сталкиваясь с чем-то нетривиальным или важным, но трудно запоминаемым, сразу в программе LumanBox добавлял заметку. При этом грубо нарушая главное правило ZettelKasten — »никакой копипасты»! У меня наоборот, была одна лишь копипаста. Благо делать это в On-line курсах очень удобно — помечаешь куски текста заинтересовавшие, и копируешь.

  2. однако уже на этом этапе старался соблюдать принцип атомарности заметки — одна заметка=одна идея. Кроме того, придумывал заметкам удобоваримые и понятные названия. Иногда в этом мне помогали толковые заголовки в самих курсах.

  3. если для демонстрации идеи заметки нужны были исходные коды, которые были в тренажерах курса, не ленился копипастить и эти коды. Сохраняя их в заметках в виде аттач-архива (поскольку в примерах всегда было более двух файлов — как минимум *.html и *.css).

    Пример аттача демо-исходников

    Пример аттача демо-исходников

    Таким образом первичное заполнение ZettelKasten не сильно замедляло прохождение уроков с тренажерами. 

  4. обычно на следующий день после первичного заполнения своего Zettel, я повторно работал с уже созданными заметками. А именно:

    1. добавлял необходимые ключевые слова;

    2. проставлял тип заметок (что это — определение, алгоритм, пример, проблема и т.д.);

    3. группировал заметки в папки внутри курса;

    4. сортировал новые ключевые слова по категориям.

      Пример проставления ключевых слов и типа идеи

      Пример проставления ключевых слов и типа идеи

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

      По соотношению времени — на 100 единиц непосредственного прохождения on-line курсов, я тратил 10 единиц на первичное заполнение ZettelKasten, и 20 единиц времени на повторную работу с заметками.  Итого превышение времени на работу с индивидуальной базой знаний было всего лишь на 30%.

Поскольку бесплатная часть курсов понравилась, то я решил пройти очередное повышение квалификации именно там, по специализации fullstack-программиста. Тут уже было на хабре, что в любых on-line курсах самое сложное — это сдавать проектные работы. На мой взгляд, проблема подобных курсов в том, что студента неверно ориентируют относительно его распределения усилий. Почему то у меня сложилось впечатление, что вот пройду обучение, меня научат, а потом на основании усвоенного материала сделаю проектную работу спринта. Но уже на первом спринте споткнулся о видеоразбор готового кэйса. Там было видео на 45 минут, как опытный верстальщик верстает сайт. Казалось бы, все его рассуждения базируются на уже пройденном материале. Но — лично мне было непонятным практически все. Я аж расстроился, как так очень внимательно прошел все уроки, добросовестно делал задания в тренажерах, но ничего не понял в готовом кэйсе. При чем, опять таки, повторюсь, курсы для программистов заявлялись с нуля, а я уже несколько WEB-проектов реализовал. И все равно разбор готового кэйса на первом же спринте для меня стал китайской грамотой.

Как создатели курсов видят новые нейронные связи в мозгу студентов, и какие они в реальности у большинства

Как создатели курсов видят новые нейронные связи в мозгу студентов, и какие они в реальности у большинства

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

Дико смущал еще тот момент, что разбор готового кэйса — это всего лишь пара коротких уроков. 1/50 от всего спринта. И подсознательно считаешь, что нужно пройти их быстро. Но в реальности у меня на разбор готового кэйса ушло 1/5 от всего времени, потраченного на спринт. Однако именно на разборе этого готового кэйса почувствовал, как шипики нейронов в моем мозгу пришли в активное движение, и начали грандиозное строительство. Приятное, кстати говоря, чувство! И да, во время прохождения on-line курсов проснулся дикий аппетит. Особенно на сладкое и жирное. Физиологию не обманешь! Мозгу для построения новый нейронных сетей нужны стройматериалы.

Фундук, красная икра и батончики из темного шоколада - мои излюбленные десерты во время спринта

Фундук, красная икра и батончики из темного шоколада — мои излюбленные десерты во время спринта

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

Во время разбора готового кэйса очень помогала уже составленная база знаний. Пару секунд, и я вспоминал нужный материал. Но что более важное — опять таки пару секунд, и я понимал, что этого знания в уроках не было. И его нужно освоить самостоятельно. Т.е. я не рылся в on-line уроках курсах, выискивая, психуя и не находя нужное. А либо сразу находил искомое. Либо сразу понимал, что его нет, и нужно гуглить самостоятельно.

Кстати, самостоятельная работа — это та фича, из-за которой я чуть не вылетел из ВУЗа в молодости в свою первую сессию. Не понял, что нам задали какой-то материал на самостоятельную проработку, ведь такого не было в школе! То же и в on-line курсах. Там как-то не акцентировался тот момент, что нас не будут прямо таки всему необходимому обучать для сдачи проектной работы. И ведение индивидуальной базы знаний сразу позволило это понять. Как это — важно понимать то, что ты знаешь. Но еще важнее понимать то, чего именно ты не знаешь! Так сказать, отчетливо видеть границы своей компетенции.

ea38510c7127cafd865e2924ea208672.png

Успешно пройдя первый спринт обучения, я понял пропорции усилий, которые необходимо прикладывать для учебы:

  1. 50% времени и внимания занимают уроки и задачи на тренажерах;

  2. 20% сил тратится на разбор и реализацию готового кэйса (по которому есть видеоразбор в виде урока на курсе);

  3. 30% усилий необходимо потратить на выполнение и сдачу проектной работы по спринту.

И да, усилия эти совершенно разные:

  1. на уроки и тренажер силы тратятся познавательные. Т.е. здесь студент узнает что-то новое.

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

  3. сдача проектной работы требует, в основном, обычной аккуратности и внимания к мелочам. Чтоб ничего не упустить из ТЗ. 80% требуемых практических навыков уже было должно быть усвоено на понимании готового кэйса на предыдущем шаге.

Еще стоит рассказать об ошибках на курсах. Все мы люди, все ошибаемся, и разработчики курсов тоже. Но — одно дело, когда грубая орфографическая ошибка нагло пялится на тебя из огромного заголовка урока. Это, конечно, неприятно и понижает уровень доверия к излагаемой информации, но не более того. И совсем другое дело, когда ошибка в уроках логическая. Например, дается часть теории, а потом предлагается сделать упражнение. Но автор курсов ошибся, и само упражнение поместил в тексте под тренажером. Который откроется только после успешного выполнения задачи. Я вначале пытался догадаться, о каком упражнении идет речь. Потом плюнул, и стал жать «проверить», и по сообщениям об ошибках смог восстановить саму постановку задачи. Таких ляпов в одном курсе как минимум штуки три. Обидно!

Так иногда, к сожалению, выглядят некоторые задания on-line курсов

Так иногда, к сожалению, выглядят некоторые задания on-line курсов

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

В процессе прохождения курсов как то сами собой всплыли и позже были реализованы целый ряд доработок программы  «LumanBox для Windows», упрощающих процесс обучения:

  • реализовал таки поддержку различных цветовых схем, спасибо пользователю @mnhunter81 за наводку! Сразу стало глазам удобней работать. Теперь работаю только в темных темах. Пример экрана ниже:

    Демонстрация одной из темной темы, в которой я работаю постоянно

    Демонстрация одной из темной темы, в которой я работаю постоянно

  • перенес хранение всех файлов из SQLite базы в указываемый пользователем каталог. Что значительно ускорило работу программы. Тем более, что этих сторонних файлов у меня уже 700 МБ. В т.ч. книги, сохраненные сайты, исходники, копии экранов, схемы, видео-уроки.

  • сделал возможность задавать ключевые слова сразу на весь источник. Имеет смысл для небольших источников, по которым создается всего 1–3 заметки. Чтобы не дублировать ключевые слова для каждой заметки.

  • самое важное — появилась новая возможность добавлять ключевые слова к элементам оглавления источника. Это просто незаменимая вещь при прохождении уроков. К примеру, если идет тема «псевдоклассы», то какой смысл к каждой заметке по этой теме добавлять ключевое слово «псевдоклассы»? Ключевое слово добавляется один раз — к элементу оглавления. А далее автоматически прописывается ко всем заметкам в этом пункте оглавления.

    Пример добавления ключевого слова на весь элемент оглавления

    Пример добавления ключевого слова на весь элемент оглавления

Вместо итогов

Администрация on-line курсов не сообщает процент отчисленных с курсов после первого жесткого дедлайна. Однако я сразу заподозрил, что он высок.  Уже есть негласная статистика по моему потоку. Если на первом занятии в Zoom было 65 студентов, то на последнем занятии перед дедлайном — всего лишь 24. Понятно, что не все студенты, не пришедшие на последнее занятие, бросят учебу. Однако все равно уровень не справившихся высок. С моей субъективной точки зрения, он не ниже 30%. 

И тут студентам помочь сможет модифицированный ZettelKasten (в т.ч. с бесплатной программой  «LumanBox для Windows»). Для понимания — как раз во время спринта меня угораздило подхватить ОРЗ/ОРВИ, и я неделю провалялся с температурой. Однако, несмотря на болезнь, я продолжал потихоньку проходить уроки. Внешняя структурированность учебного процесса с помощью ZettelKasten, по изложенному выше алгоритму, позволяла продолжать обучение. Даже в столь дискомфортном физиологическом состоянии. Тем самым я не выбился из графика и сдал все работы вовремя. 

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

Здесь речь идет о существенном изменении стиля жизни человека. Что, как показывает практика коучеров и психоаналитиков, штука очень непростая и долгая. Однако, эти неумелые попытки побудить студентов использовать Agile-философию, навели меня на интересную идею. А именно, прикрутить к ZettelKasten Scrum. Ведь действительно, мы изучаем новую информацию не просто так. Она тем или иным образом преобразуется в проекты. IT-проекты или бытовые, не суть важно. И тут аж дух захватывает от открывающихся возможностей. Когда компьютерные системы будут помогать не только запоминать информацию и восстанавливать контекст, но и погружать человека в Agile философию на всех уровнях его бытия через автоматическое ведение проектных бэклогов! По этой теме планирую сделать отдельную публикацию для всеобщего обсуждения. С примером интерфейса нужного функционала, разумеется!

p.s.: автор не ставил своей целью рекламировать или ругать какие-то конкретные on-line курсы обучения программирования. А просто рассказал свой опыт прохождения одних из таких курсов при помощи популярного метода структурирования информации ZettelKasten.

© Habrahabr.ru