Как запустить школу программирования за полтора месяца. Итоги первого заезда в Хуториум

Чуть больше месяца назад мы анонсировали на vc.ru запуск Хуториума — школы программирования на базе поселка. Пару дней назад у нас завершился заезд первой группы. В статье — подробный рассказ о том, как все создавалось, организационных трудностях и радостях первого запуска.

Результаты обучения

Ребята конкретно удивили. Раньше я считал, что курс веб-разработки, лежащий в основе Хуториума, можно пройти за три недели. Это время, которое затратил мой взрослый друг, попросивший меня помочь ему с освоением новой профессии. Его интеллект — сильно выше среднего, поэтому казалось, что срок действительно минимальный, а в реальности прохождение займет намного дольше.

В старой версии курса была пара проблем с объяснением некоторых концепций — обычно студенты от них «отскакивали» или пробивались, теряя значительное время и задавая преподавателю одни и те же вопросы. Я попытался такие места исправить — разбил некоторые таски пополам, с более подробным объяснением и описанием типовых ошибок.

Улучшенная версия курса, общая атмосфера и драйв, возможность заниматься фулл-тайм — привели к гораздо более высокой скорости движения. Если бы не некоторые организационные накладки, которые были первые пару дней и отняли часть времени — скорость могла бы быть еще выше.

В общем, оказалось возможным за 6 дней освоить верстку до уровня создания сложных страниц и использования CSS-фреймворков, интерактива на чистом Javascript, повторение того же интерактива на ООП, а затем — на React, основы сервер-сайда на чистом Node и создание динамических веб-страниц на EJS. Дальше ребятам предстоит освоить работу с MongoDB и организацию REST API, использование Express, концепцию SPA, настройку Webpack и изоморфный рендеринг — все это уже в режиме онлайн-занятий.

К сожалению, до указанной точки успели дойти только 30% из группы. Остальные ребята потеряли скорость на модуле с основами Javascript. Причина, по словам некоторых из них — слишком большое количество концепций, которые нужно тщательнее уложить в голове — то есть сознательный отказ от скорости в пользу более глубокого понимания.

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

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

На самом деле за всем этим стоит кромешный организационный ад.

«Трамвай построить — это не ешака купить», или Как сделать школу за полтора месяца

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

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

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

Марсианский пейзаж и другие проблемы

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

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

Грунт в палаточном городке сразу после выравнивания

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

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

Затем один за другим стали подводить подрядчики. Краску для здания хотели подороже, заказали в Москве, но поставщик отвез ее в ТК на 4 дня позже обещанного. Пришлось срочно покупать другую в Кирове и красить ей. Заказали теннисные столы –, но банковский перевод по непонятным причинам задержался на 5 дней, а продавец без подтверждения бухгалтерии не хотел двигаться. Вдобавок, он оказался обычным посредником, и после получения денег только заказал логистику от своего поставщика, которая добавила к сроку еще пару дней. Доставка до нас сработала нормально, но в результате столы приехали только к концу первого заезда. А вот когда заказывали оборудование для оптики, подвела уже ТК — медиаконвертеры, SFP-модули и роутер приехали за 2 дня до старта.

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

Последний день перед стартом

В воскресенье, 24 июня, в крытом блоке школы одновременно толпились плиточники, установщики натяжных потолков, установщик дверей и сантехник.

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

Планровка учебного помещения

То есть, площадка, где происходил основной экшен, представляла собой квадрат 3×3 метра. Поэтому среди приглашенных специалистов царила некоторая нервозность и разобщенность. Однако, когда я попытался проникнуть в помещение с целью установки свежеполученного из Нага оборудования и настройки интернета, все специалисты проявили удивительную сплоченность. Чуть ли не хором они убедили меня отложить задуманное, заодно повысив мои знания в местной географии.

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

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

День «Х», или Как вы яхту назовете, так она и поплывет

Когда я несколько месяцев назад показывал жене первые варианты логотипа Хуториума, я был поставлен в тупик резонным вопросом «А что это вообще за х…?». С целью получения более объективного фидбека я не познакомил ее предварительно с глубокой концепцией названия, сочетающей в себе challenge и смысловую нагрузку в виде хутора и ума. Название казалось офигенным.

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

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

Этот фокус поставщики повторяли еще пару раз, зато потом начали присылать на коробках смайлики и извинения.

Обратите внимание — для еды мы используем картонные коробки, которые сами закупаем и передаем поставщику. Это позволяет нам не выбрасывать использованные контейнеры, а закапывать их вместе с остатками еды — такая органика перегнивает в земле менее, чем за год. Это несколько дороже, зато так мы вносим небольшой вклад в концепцию Sustainable Development Goals (конкретно, в цель #12 — Responsible Consumption). Поскольку мы все живем на одной планете, я считаю, что каждый из нас по мере возможностей должен помогать двигаться в этом направлении — прочитайте об этих целях, если вы еще с ними не знакомы https://en.wikipedia.org/wiki/Sustainable_Development_Goals

После завтрака нам сообщили, что санузлы готовы, специалисты покинули помещение, и мы можем заходить. Мебель поставить конечно же не успели, ребята вызвались перетаскать ее из подсобки, а я в это время занялся интернетом. Собственных способностей по настройке нового профессионального роутера не хватило. Он просто не работал. Чтобы никого не задерживать, я сбегал за своим домашним роутером — уже настроенным.

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

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

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

Я снова выдохнул. Но тут Денис отвел меня в сторонку и показал баг в панели управления, который позволял ему проверять только собственные задания. Снова паника. Я показал ему, как делать это через отправку АПИ-запросов в Postman-е, а сам сел на пол в соседней комнате (стульев не хватило) и начал чинить. Еще через пятнадцать минут все было готово.

Я вышел обратно под навес, чтобы показать баг-фикс Денису. И только тут я осознал. Все работало. В клиентской части ничего не сломалось. Интерфейс оказался понятным и не требовал объяснений. Кое-кто успел пройти несколько первых заданий, уперся в сложное и спрашивал Дениса. Одни ребята читали задания или документацию, другие — обсуждали сложности с соседями. Все шло как надо. Впервые за несколько последних лет я испытал то ни с чем не сравнимое чувство, когда люди пользуются твоим продуктом.

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

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

Если бы не эти проблемы — за первую неделю было бы вполне реалистично добавить к освоенному MongoDB и концепцию SPA. Не влез бы только изоморфный рендеринг, но им и профессиональные разработчики не все владеют.

Итоги

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

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

Новости школы Хуториум публикуются в телеграм-канале http://t.me/hutorium и на сайте школы http://hutorium.ru. Как обычно, готов ответить на все вопросы в комментариях к статье.

©  vc.ru