В этой статье мы расскажем про нашу попытку перейти от разговоров к реальным делам. У нас нет ресурсов, чтобы изменить ситуацию глобально, поэтому мы действуем точечно. Выездная школа по программированию — это возможность выправить ситуацию, воздействуя на наиболее способных студентов.
Добро пожаловать под кат, если вам интересно, как мы это делаем и что из этого получается.
Мы уже пять лет занимаемся различными активностями, чтобы укрепить позиции ИТ-образования в регионе. За это время мы пришли к разным выводам: например, сформулировали важный принцип «концентрации усилий». Наши ресурсы ограничены, поэтому нужно сосредотачивать свои усилия на наиболее перспективных участках: собирать подающих надежды ребят в одном месте и максимально в них вкладываться.
Несколько лет назад мы впервые провели для наших стажёров-программистов (как правило, это студенты ИТ-специальностей) массовое обучение перед началом стажировки. Получилось. Этот опыт мы повторили. Стало ещё лучше. Так что мы больше не смогли держать это в себе и год назад впервые объявили о проведении школы промышленной разработки под названием Контур.Кампус.
Мы проводили подобные школы уже четыре раза и научились за это время чему-то хорошему. А поскольку хорошим нужно делиться, вы и читаете нашу статью!
Какие правила мы для себя открыли?
Элитарность
Звучит довольно пафосно. На деле это означает, что на нашу школу можно попасть лишь в том случае, если качественно выполнить тестовое задание — деньги, знакомства и связи не помогут! :-) В тестовом оценивается все: идеи, алгоритмы, качество кода, умение декомпозировать задачу, аккуратность с крайними случаями.
Кстати, сложно вести школу на разных языках программирования, поэтому мы фиксируем C# (основной язык разработки у нас в компании) в качестве главного языка программирования на школе и предлагаем на нём же и выполнять тестовое. Это гарантирует, что все, справившиеся с заданием, хотя бы на базовом уровне овладели основами языка, а также открывает больше возможностей по взаимодействию участников и обмену опытом. Да и лекции с практиками в таких условиях могут быть более содержательными и конкретными.
Изоляция
Чтобы полностью погрузиться в процесс, надо изолировать себя от ненужных раздражителей (не будите программиста!). Поэтому для нашей школы мы снимаем удалённый коттедж, куда сложно добраться и откуда ещё сложнее выбраться, чтобы несколько дней студенты не отвлекались ни на что. Тем более получается очень романтичная атмосфера стартапа, такая привлекательная с точки зрения студентов!
Программа школы
Чтобы не отрывать студентов от основной учёбы, мы стараемся отнимать у них как можно меньше учебного времени и проводим школу с пятницы на воскресенье. То есть всего три дня, и ни одной минуты не должно быть потеряно: занятия идут с 10 утра до 11 вечера (включая короткие перерывы на чаепитие и обедоужины). Для некоторых это настоящее испытание — напрягать мозг целый, черт возьми, день! Зато другие сидят до трех ночи, доделывая «домашнее» задание, потому что «интересно же!» и «домашка сама себя не сделает!»
Что же включено в трехдневную программу?
В основном это базовые, необходимые почти всем темы: чистый код, рефакторинг, умение разбивать задачу на подзадачи, тестирование, многопоточность, элементы функционального стиля программирования, системы контроля версий.
Любая лекция, не подкрепленная практикой, стремительно вылетает из головы студента уже через полчаса. Поэтому практика — наше всё. Мы пользуемся следующей эмпирической формулой.
- Прямо во время лекции одна-две паузы для решения заготовленных тривиальных задачек по теме. Например, сразу после рассказа про рефакторинг и декомпозицию кода — задание, в котором нужно переименовать несколько переменных и выделить связный блок кода в метод, используя соответствующие команды в IDE; после рассказа про какую-то технологию — сделать что-то очень простое с ее помощью.
- В конце лекции нужна одна большая «домашняя» задача по теме на 2-4 часа. Решают ее в специально выделенное для этого время после лекций.
Наибольший эффект получается, если все темы школы связаны друг с другом. Например, темы про чистый код и декомпозицию хорошо согласуются с темой про функциональный стиль программирования; в случае с C# все это хорошо согласуется с LINQ, который, в свою очередь, связывается с темой про многопоточное программирование через pLINQ, и так далее и тому подобное. Чем больше связок, тем лучше усваивается весь материал.
А ещё последний день мы щедро тратим на Code Retreat. На Хабре про него уже писали здесь. Если вы ещё не знаете что это — обязательно прочитайте! Со студентами, которым только что рассказали много нового и полезного, это работает особенно хорошо. По отзывам самих студентов, Code Retreat — это стабильно один из лучших пунктов в программе школы.
Отдых тоже предусмотрен, но на деле является лишь сменой мозговой активности: вместо написания кода мы предлагаем участникам поиграть в шарады или «шляпу» со словами типа «монада» или «инкапсуляция» и подобные развлечения.
Преподаватели
Только практики, только с опытом преподавания, только хардкор. Да, таких сложно найти, но они существуют. И ещё наблюдение: очень неплохие преподаватели получаются из некоторых недавних участников школы. Видимо, им помогает, что они гораздо более на одной волне со студентами, чем взрослые мужики-программисты. Так что мы прямо во время школы присматриваем себе преподавателя на следующую школу из состава текущих участников.
Работа в парах!
Это не только облегчит работу преподавателей, но и научит участников работать в разных командах, советоваться, делиться опытом. Правило простое. Новая тема — новая пара.
За трехдневную школу каждый студент может успеть поработать с десятком других студентов. Так они все друг с другом ещё и перезнакомятся!
Опять же, студенты от парного программирования в полном восторге!
Никакого хантинга, никакой платы
Мы хотим работать с лучшими, поэтому делаем это совершенно бесплатно: никакой платы ни за проживание, ни за учёбу. Наша цель — научить, а не взять на работу. Поэтому отбор и обучение проводятся безо всякой оглядки на то, пойдет этот человек к нам на работу или нет. Конечно, такую позицию довольно сложно объяснить экономическому отделу, но если не заниматься подобной работой, не повышать концентрацию крутанов на квадратный метр, то тем, кто всё-таки вырастает в хорошего специалиста, становится скучно, и они уезжают туда, где концентрация повыше. Таким образом, мы не только рискуем потерять кого-то из тех, кто уж здесь, но и никого не приобретаем.
С другой стороны, мы совершенно не расстроимся, если те, кто пройдёт через школу, потом придут к нам на стажировку и/или на работу, благо, так часто и происходит само! ;)
И самое важное — обратная связь
Важность этого принципа сложно переоценить. Без обратной связи нельзя развиваться. Поэтому последние полчаса-час мы проводим за ретроспективой (да-да, прямо как в Agile). В результате можно очень хорошо понять, какой преподаватель не крут (и его больше не стоит звать), какие темы хорошо пошли, а какие не очень и т.п. Чем жёстче обратная связь, тем лучше!
Конечно, за три дня (даже с условием тринадцатичасового учебного дня) поднять уровень образования невозможно. Но эффект от школы длится гораздо дольше. Студенты понимают, к чему надо стремиться, что же такое в действительности промышленное программирование. Они идут сами и тянут за собой своих друзей и знакомых, потом вырастают, становятся профессиональными разработчиками, затем из некоторых получаются преподаватели, у каждого по 15 новых студентов…
Картина утопичная, но мы в неё верим и прикладываем усилия, чтобы она реализовалась.
Да, кстати!
В феврале мы планируем очередную школу Контур.Кампус для студентов Екатеринбурга и окрестностей. Участие, естественно, бесплатное! Все подробности тут!
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий