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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Затем один за другим стали подводить подрядчики.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итоги

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

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

Новости школы «Хуториум» публикуются в Telegram-канале и на сайте школы. Как обычно, готов ответить на все вопросы в комментариях к статье.

0
165 комментариев
Написать комментарий...
Sam Beckett

Погодите, я правильно понял, что для того, чтобы получить контакты недоджунов, которые пару недель назад научились что-то там прогать, нужно еще и денег отвалить?

Ответить
Развернуть ветку
Сергей Сальников-Введенский

Так взамен можно получить сильно мотивированного, лояльного сотрудника. Это же классно, не?

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Алексей Конышев

Никто не говорил про "всему" :)
Научился основам, которые позволяют делать реальный вклад – да, за 6 дней.

Ответить
Развернуть ветку
Bringo_call_tracking

Как можно сделать джуна, который может приносить пользу за 6 дней??????

Не смешите, пожалуйста. Ладно месяц, два, уже хоть простые таски можно давать (css подправить или html).

Ответить
Развернуть ветку
Алексей Конышев

За 6 дней пока не получается.
Две недели – вот это норм. Хотите через неделю попробовать?

Ответить
Развернуть ветку
Bringo_call_tracking

Алексей, я программист, поэтому мне можно по ушам не ездить и дичь не втирать.

Спасибо.

Вы пишете:

В общем, оказалось возможным за шесть дней освоить верстку до уровня создания сложных страниц и использования CSS-фреймворков, интерактива на чистом JavaScript, повторение того же интерактива на ООП, а затем — на React, основы сервер-сайда на чистом Node и создание динамических веб-страниц на EJS.

На кого эти сказки рассчитаны? И react, и верстка и ооп и node....

Ответить
Развернуть ветку
Алексей Конышев

Спасибо, я тоже программист. Если вы считаете, что это сказки – это круто. Значит это действительно сложно и кажется недостижимым. Но даже старая версия курса, которая проходила боевую обкатку показала, что эти сроки достижимы. Повторюсь, речь идет не о глубоком погружении, а о получении базовых навыков, которые студент потом может легко углублять. Новая версия, естественно, немного лучше – поэтому результат, с вашей точки зрения, еще более "сказочный"

Ответить
Развернуть ветку
Sam Beckett

Вы, скорее всего, не понимаете одного - а именно насколько "глубоко" ваши студенты понимают материал. А понимают они только на уровне "нажать сюда, чтобы получить это", но ПОЧЕМУ это так происходит, и как сделать что-то чуть-чуть другое - они уже не поймут. Я это не на пустом месте говорю, видел такое миллион раз уже. Тем более вы зачем-то замешали и фронт, и бэк, и верстку и реакт для людей, которые скорее всего вообще про программирование ничего до этого не знали. Представляю, какая у них сейчас каша в голове и как они потом будут мучительно учить и разбираться во всем заново, если решат продолжить обучение.

Ответить
Развернуть ветку
Алексей Конышев

На самом деле курс формирует именно понимание ответа на вопрос "ПОЧЕМУ". Все задания курса предполагают необходимость сделать как раз "чуть-чуть" другое – а не то, что было в предшествующем описании. То есть формируется ровно тот навык, который вы описали как недостижимый. Только вы почему-то исходит из аксиомы, что это невозможно за такой короткий срок. А я исхожу из практики – того, что уже получилось сделать.

Ответить
Развернуть ветку
Sam Beckett

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

Ответить
Развернуть ветку
Алексей Конышев

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

Ответить
Развернуть ветку
Sam Beckett

"Держите себя в руках" мне говорит человек, который пишет ответ под каждым вторым комментарием?

Ответить
Развернуть ветку
Алексей Конышев

Я пишу ответ под каждый комментарием с исключительно практической целью. Если она вам неочевидна, то мне вас искренне жаль :)

Ответить
Развернуть ветку
Sam Beckett

О, прекрасно - "мне вас искренне жаль"! Ждем "сперва добейся" теперь?

Ответить
Развернуть ветку
Алексей Конышев

Этой каши я уже не понимаю, извините.

Ответить
Развернуть ветку
162 комментария
Раскрывать всегда