Что может быть лучше, чем запустить мастерскую? Семинар, в котором вы работаете! Именно этим я и занимался в OdessaJS в этом году.

Формат семинара возник из-за того, что многие годы семинары не давали результатов, потому что всегда есть проблемы — проектор не работает, люди знают больше меня и им скучно, у людей нет необходимого набора навыков, нечеткие примеры и т. д. Чтобы исправить это, я начал с основной предпосылки давайте создадим репозиторий GitHub с нуля, который будет заполняться (почти) исключительно «заявками на вытягивание участников». Таким образом, мне не нужен кабель HDMI, потому что семинар живет на экранах посетителей и разворачивается в режиме реального времени. Через тридцать минут воркшоп работает сам по себе, а куратор воркшопа (я) задает ритм, становится прославленным указателем на документацию и делает кофейные прогоны. Наконец, поскольку мастерская подключена к CircleCI, люди могут создавать несколько веток, не загружая ЦП. PR и артефакты сборки действуют как журнал аудита всех усилий, который обычно дает подсказки о том, как исправить сломанный код.

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

11:00 — Приятные встречи, короткие знакомства.

11:05 — Создание репозитория GitHub

Раздайте свой компьютер, чтобы все подписались. Если у них нет учетной записи GitHub, попросите их создать ее. Если не создадут, то ты SoL, но я с этим пока не сталкивался.

11:10 — Первые пулл-реквесты к README.md

Пусть все сделают pull request на README.md. Объединяйте их по мере их появления и помогайте людям решать их собственные конфликты слияния. Таким образом, люди, которым не нравится поток git, могут получить помощь от других участников. Это единственное место, где я увидел, что некоторым более продвинутым студентам стало скучно, и я попросил их помочь настроить .gitignore, TypeScript, package.json, Jest и различные другие лакомые кусочки, чтобы мы могли сразу же взяться за дело.

11:14 — Настройка CircleCI

Немедленно запустите автоматические сборки и заполните репозиторий минимально жизнеспособным конфигурационным файлом CircleCI. Примерно половина толпы понятия не имеет, как легко запускать автоматические тесты для вашего кода. Есть по крайней мере один человек, который плачет, думая о том, сколько времени он потратил впустую, не используя такой инструмент, как CircleCI. Успокойте их и идите дальше.

11:18 — Напишите свои первые тесты

На данный момент мы хотим, чтобы люди писали тесты. Не потому, что мы пропагандируем разработку через тестирование, и не потому, что учим их использовать unmock (ну, ладно, вроде как из-за этого), а потому, что тесты дают представление о том, как люди продумывают свою работу, и показывают ожидания успеха и неудачи, что облегчает сотрудничество.

Например, ОлехБурияОСФ написал PR со следующим тестом:

test("string + number = string", () => {
  expect("2" + 3).toBe("23");                                      
});

Хотя, возможно, не раскрывая слишком много о пристрастиях, стремлениях и страхах OlehBuriaOSF, мы знаем, что он ожидает, что строка плюс число будет строкой в ​​JavaScript. Вы будете поражены тем, как много людей утешаются, видя, как другие пишут тесты. Это убеждает их в том, что писать тесты несложно, что писать глупые тесты — это нормально, и что тесты действительно помогают в общении.

11:30 — Напишите свои первые функции для тестирования

Более реалистичный сценарий — человек пишет тест для функции. Например, kl2karpenko написала прекрасную функцию pow (сила Лили!), импортировала ее в свой тест и протестировала.

11:40 — провал теста

Это и есть секретный соус — попросите всех написать заведомо плохой кусок кода, который исправит то, чему вы учите. Это не так сложно, так как большинство библиотек или пакетов исправляют то, что сломалось в процессе разработки. В этом случае, поскольку мы учим unmock, то есть все, что касается имитации API, мы просим их вызывать настоящий API. Как и ожидалось, сборки для такого рода вещей будут терпеть неудачу по целому ряду причин — 404 несанкционированных ошибок, ограничений скорости и т. д. Если вам повезет, вы даже можете использовать настоящий API и сделать что-нибудь веселое, например, перевести деньги между двумя банками! Но обычно этого не происходит.

11:55 — Прохождение теста с помощью unmock

Как только все почувствуют боль, помогите им облегчить их выход, представив суть того, чему вы должны научить. В этом случае unmock спасает ситуацию, помогая им написать спецификацию для своего API и используя эту спецификацию для автоматического имитации API, что означает, что их тесты проходят. Пулл-реквесты не врут — студенты это понимают. Ура!

Никогда больше не запускайте мастерскую

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