Как я пикабушников бесплатно java учил
Полтора месяца назад я сделал два поста(Бесплатные курсы по java, Бесплатные курсы по java продолжение набора), в котором приглашал на бесплатное обучение java , тех кто уже знает основы, чтобы показать как разрабатываются промышленные приложения.
Предлагаю отчет об обучении: как это было, что нового извлек и что будет дальше (спойлер: новые курсы в конце поста).
Формат обучения
Курс предполагал занятия 3 раза в неделю: в среду в 20:00(МСК), субботу и воскресенье в 15:00. Занятия проходили по 2 часа, в google meet. Структура урока была следующая: я рассказывал 30 минут теорию, с демонстрацией в миро, а дальше один из участников курса расшаривал экран (показывал свой экран другим), и все вместе пытались реализовать наше приложение.
Цель обучения
Создать web приложение, которое является справочником вкусовых предпочтений людей.
Есть справочник существующей еды (банан, яблоко, помидор...), и есть список людей, у которых указан их любимый продукт из справочника. Мы должны были иметь возможность с помощью http запроса добавлять/удалять/получать/изменять наш справочник и список людей. Для упрощения обучения вместо реляционных баз данных, были выбрано хранить данных в файлах csv. Технологии которые использовали на проекте: Java 11, maven, lombok, junit, mockito, spring boot, spring web, git + github.
Этап 1: Набор
После поста, мне начали писать в телеге люди, что мол готовы учится. Так как программа была не совсем для новичков, я предлагал 15 минут созвона по телеге, чтобы понять может ли человек потянуть этот курс.
Так же поставил для себя лимит в 12 человек.
Соотношение готовых потянуть и не готовых было 50/50. Задавал следующие вопросы: чем static метод отличается от не static, разница между интерфейсом и классом, ключевое слово final, что такое Map, List.
Если человек совсем плохо отвечал, то говорил ответы на заданные вопросы, далее предлагал подтянуть теорию и ожидать следующего курса.
Если отвечал средне, то задавал доп вопросы, и старался понять как человек мыслит. Обычно эта категория проходила в набор.
Если все хорошо, то сразу предлагал присоединиться к нам.
После первого поста мне написало 10 человек, после второго около 20. Были и интересные люди, которые писали, но как только ты им отвечал, они сразу испарялись. Кто то не успел.
В результате записалось 12 человек (10 с пикабу + 2 с других источников). Перечислю некоторых пикабушников: @maximysUA, @VoodoomanRUS, @VitMGN, @RntNgn, @EnotOrNot.
Этап 2: Обучение
На 1 этапе, я создал группу в телеграмме, где опубликовал список необходимых программ для установки. Все благополучно справились с задачей (Отдельно хочу выделить человека, который стал душой чата и помогал всем: Дмитрий @VoodoomanRUS), и в субботу началось первый урок.
Сначала рассказывал я, потом ученики по очереди, в режиме онлайн выполняли задания, а я им помогал. Каждая встреча записывалась и поэтому те кто не мог присутствовать, пересматривали в записи и писали вопросы.
Были темы, которые прошли относительно легко - например git, lombok, работа с maven. Были темы, которые тяжело зашли: spring core, mockito, создание взаимодействия слоёв приложения. Во первого касания spring core, была гробовая тишина, и складывалось ощущение, что никто ничего не понял, но во время практики ученики развенчали этот миф).
В какие то моменты между уроками, приходилось еще раз объяснять основы java, потому что внезапно оказывалось непонимание базовых тем. Так же много времени уделялось работе в Intellij idea: горячие клавиши, как работать с гитом через idea, как рефакторить код и тд. Чуть чуть коснулись команд bash - cd, mkdir, touch, cat, echo.
Познакомились с жизненным циклом сборки проекта в maven, как подключать зависимости, плагины и тд... Написали unit и интеграционные тесты (к сожалению времени не хватило на данный функционал). Создали все слои приложения: Repository, Service, Controller.
Создавали http запросы разных видов через приложение Insomnia, чтобы тестировать наше веб приложение.
В группе были двое человек, которые значительную часть времени смотрели уроки в записи, но по их утверждениям все поняли). Весь код отправляли мне на репозиторий. За 13 уроков мы написали приложение (в котором я не написал руками ни одной строчки кода), и счастливо расстались друг с другом.
Проблемы обнаруженные мной:
1. Первоначально, я отказался от домашней работы и планировал давать только тем, кто не понял материал. Это оказалось ошибкой, ибо тяжело понять, понял ли человек материал, пока он не сделает сам задачу. Те кому задавал домашки, кидали мне свой код (делали pull request в мой репозиторий) и я давал комменты.
2. Еще одной проблемой стало качество видео, когда участник шарил экран, а инет у него был слабый. Из за этого качество записи снижалось, и пришлось встречаться за 15 минут до занятия, и смотреть у кого качество приемлемое.
3. Не хватило времени на рефакторинг проекта, написания тестов на весь функционал.
4. Поверхностно коснулись spring
5. Разные уровни у людей: когда ученик с более хорошим уровнем java писал код, часто другие не успевали за полетом его мысли.
6. Нехватка знаний по java core у некоторых учеников.
7. Не успели на практике использовать Generics
Итог:
1. По результатам курсов, я понял, что обучать людей мне нравится.
2. Нужно сделать несколько курсов, чтобы была возможность обучать людей с нуля: java core + git -> java collections + generics + lombok -> spring web app
Новые курсы
Передо мной встала дилемма: объявить о начале платных курсов или наработать еще опыта, чтобы выйти в свет со всеми курсами. И тут я вспомнил про эксперимент одного ресторана в Великобритании: а что если каждый сам решит, сколько стоит пройденный курс!
Поэтому приглашаю всех желающих, на обучение с нуля Java, где после окончания курса вы сами определитесь сколько стоит мне платить!
Старт нового курса 1 июня, в 20:00 по МСК, два раза в неделю: в среду 20:00 и в воскресенье 15:00.
ВНИМАНИЕ: Курс для новичков (будут только java core + git). Если у вас есть база, следите за моими постами.
За подробностями в телеграм @ablazzing