Напоминаю, что мы уже в Технопарке

Как мы это делали

Время на прочтение
10 мин

Всем привет. Данная статья описывает портал «Технопарк»: его функции и возможности, историю разработки и использованные технические и архитектурные решения. Статья написана разработчиками портала — студентами самого Технопарка. Мы надеемся, что опыт разработки, которым мы делимся, будет полезен читателям.

С чего всё начиналось

Три года назад свои двери открыл Технопарк — проект компании Mail.Ru Group и МГТУ им. Н. Э. Баумана. Чтобы построить взаимодействие со студентами, для старта проекта была выбрана LiveStreet CMS. Преподаватели выкладывали топики с домашними заданиями, а расписание для студентов поступало в виде еженедельных топиков. Так выглядел портал в свой первый релиз:

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

Публичная часть портала

Весь портал разделён на две части. Открытая часть видна всем и включает в себя несколько страниц общего описания Технопарка, раздел с полным описанием программ и дисциплин, а также расписание.

Читайте также  Как обойти черный список в Одноклассниках

Все лекции и занятия в Технопарке записываются, мы выкладываем обработанные видео в раздел «Видеозаписи». Для абитуриентов разработан раздел FAQ, содержащий ответы на большинство вопросов о работе проекта.

Поступление в Технопарк

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

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

Поступление в Технопарк включает в себя несколько этапов: регистрацию, онлайн-тестирование, тематическое оффлайн-собеседование. После каждого этапа результаты и решения собеседующих фиксируются в карточке абитуриента. В конце концов по нажатию кнопки «Зачислить» лучшие из лучших обретают учебную группу, становятся участниками нашего коммьюнити и получают доступ во внутренние разделы портала. Им открывается возможность принимать участие в обсуждениях, поднимать темы для обсуждения, создавая топики как в общих разделах, так и в разделах, посвящённых дисциплинам.

После успешного прохождения учебной программы выпускники проекта попадают в раздел «Выпуски» — на «доску почёта» окончивших обучение.

Каждому выпускнику выдаётся диплом с QR-кодом.

При помощи данного кода можно попасть непосредственно на страницу выпускника — владельца диплома, что служит подтверждением официального диплома.

Приватная часть портала

Вторая, бóльшая часть портала, о которой уже вскользь упоминалось, — закрытая часть, предназначенная для студентов, преподавателей и администраторов Технопарка.

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

Личный кабинет студента и преподавателя

Студенты также получают доступ в личный кабинет, где могут наблюдать за оценками, которые они получают, за собственной успеваемостью и посещаемостью. За успехи в обучении мы выдаём достижения. Лучшим студентам — самые крутые бейджики!

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

Да, мы просим всех студентов по окончании занятия оставить своё мнение о нём.

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

Более того, каждый участник имеет возможность побеседовать в чате с другими участниками или в составе группы. Чат построен по технологии WebSocket. Все сообщения приходят мгновенно (Instant Messenger). Для реализации мы использовали разработку Александра Емелина Centrifuge, о которой есть подробная статья на Хабре.

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

Управление учебными программами

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

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

В конечном счёте все студенты и абитуриенты получают полную и исчерпывающую информацию по всей программе обучения.

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

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

По результатам таких модификаций всем сторонам рассылаются уведомления о принятых решениях. Студенты, успешно прошедшие всё обучение, получают статус «Выпускник» (попадают в раздел «Выпуски») и получают вечное право оставаться участником коммьюнити. Отчисленные студенты теряют доступ к внутренней части портала.

Отбор в Технопарк

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

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

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

Мероприятия

В Технопарке регулярно проводятся мероприятия, приглашаются спикеры. Весной 2015 года были выступления:

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

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

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

Баг-репорты

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

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

Мобильное приложение

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

Приложение доступно в App Store и Google Play.

Техносфера

Полтора года назад в МГУ им. Ломоносова был запущен аналогичный Технопарку проект — Техносфера, целью которого является готовить квалифицированных программистов — исследователей в области обработки больших объёмов данных. В течение года студенты получают знания о технологиях использования и построения СУБД, способах анализа большого объёма данных, многопоточном программировании и многом другом.

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

Технотрек

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

Архитектура

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

Сейчас портал полностью реализован на Python 2.6 с использованием фреймворка Django 1.6.

Для обеспечения производительности и быстрой отдачи страниц большинство объектов кешируется в memcached, в роли базы данных — MySQL v5.4. Многие операции на портале реализованы асинхронно с использованием Celery. Среди таких операций:

В качестве бэкенда к Celery используется RabbitMQ. Для обеспечения полнотекстового поиска по всем блогам и контенту портала мы использовали Sphinx. Индексация всего контента производится раз в 15 минут. Также Django-приложение взаимодействует с двумя внешними сервисами: Технотестом — это система, которую мы используем для тестирования абитуриентов во время набора, и системой баг-репортов, которая собирает все репорты с образовательных платформ.

Для видеотрансляций мы используем Wowza Streaming Engine. В аудитории, где ведётся трансляция, установлен VGADVI Broadcaster, который соединяет изображения с проектора и камеры и передаёт картинку и звук по RTP на сервер с Wowza. В свою очередь, на клиентской части мы используем JW Player.

При проектировании портала мы старались максимально нормализовать структуру БД, допуская денормализацию в местах, где это было резонно. В результате у нас более 130 таблиц.

Структура данных

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

В учебные программы Технопарка после окончания семестра вносятся изменения на основе фидбэка от студентов. Каждый следующий семестр создаётся новая версия учебной программы: новая версия представляет собой копию предыдущей с внесёнными корректировками. Версия учебной программы состоит из определённого набора дисциплин — версий дисциплин, в свою очередь состоящих из набора занятий, домашних заданий и оценок. Оценка может выставляться за занятие (контрольная работа), домашнее задание или за дополнительную активность, не предусмотренную учебным планом.

Версии учебных программ прикрепляются к семестрам, семестр в данном случае — это временнáя рамка: указывает, в каких промежутках времени ведётся обучение по определённой программе. Учебная группа также имеет связь с семестром, тем самым определяя, в какой момент времени студенты обучались на том или ином курсе учебной программы. Студенты связываются с учебной группой, где они обучаются, через статус, который принимает четыре значения:

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

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

Подобные денормализации удобно поддерживать с помощью механизма сигналов в Django, особенно если модели находятся в разных приложениях или даже библиотеках. В данном случае мы используем два сигнала: изменения связи M2M-блогов с версией учебной программы и сохранения сущности, связывающей пользователя с учебной группой, а так как обновление всех доступных блогов достаточно длительная операция, мы убираем её в celery-таск.

Похожий механизм мы используем для перерасчёта рейтинга студента и достижений.

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

В заключение

Таким образом организована основа портала Технопарка, но это лишь малая её часть. У нас постоянно рождаются новые идеи, и мы не стоим на месте. По состоянию на 10 октября 2015 года в трекере бэклог включает в себя ещё 233 нереализованные идеи и незафикшенных недочёта общей оценкой на 800 часов. На разработку было затрачено 2900 часов работы, в том числе 1700 часов разработки, 75 часов тестирования и 400 часов работы на боевой площадке. Гитлаб нам сообщает о 3650 коммитах, сделанных начиная с октября 2014 года.

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

Михаил Мишустин и Сергей Собянин посетили одну из крупнейших площадок высокотехнологичной промышленности – технопарк “Калибр” на северо-востоке Москвы.

Во время осмотра они поговорили с резидентами технопарка, изучили их продукцию, в том числе инновационные образцы. Также Собянин и Мишустин встретились со студентами, которые являются участниками образовательной программы молодежного предпринимательства “Я в деле”.

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

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

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

Там деятельность осуществляют свыше 2,2 тысячи компаний, на которых трудятся более 72 тысяч специалистов. С 2016 года объем инвестиций в развитие московских технопарков превысил 80 миллиардов рублей.

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

Как все начиналось

18 ноября 2011 года в МГТУ им. Н.Э. Баумана состоялось выступление генерального директора и со-основателя Mail.Ru Group Дмитрия Гришина, который объявил о запуске проекта. Целью проекта было создание кадрового резерва для отрасли и повышение престижа профессии разработчика. Чуть позднее, 24 декабря, прошел первый отбор студентов, в котором приняли участие ведущие разработчики и тим-лиды Mail.Ru Group. С начала 2012 года формировалась группа сотрудников Технопарка, создавалась программа. Первые 40 студентов начали учиться в конце февраля.
Нашей «задачей максимум» было подготовить системного архитектора, «минимум» — хорошего web-разработчика. Что получилось, а что нет — читайте ниже.

Суть проекта

Учебный план или программа Технопарка состоит из четырех семестров и составляет примерно 820 аудиторных академических часов. Каждая дисциплина — авторская, т.е. созданная непосредственно для программы Технопарка.
Так как набор на программу производится не только среди студентов факультета ИУ (самый айтишный факультет Университета), то первый семестр призван «выравнять» знания студентов. Такие дисциплины как алгоритмы и структуры данных, программирование на C++ сочетаются с обзорным курсом по web-технологиям. Завершив программу первого семестра и успешно сдав экзамены, студент Технопарка уже готов погрузиться в мир web-разработки.
Второй семестр — MySQL, Java и проектирование highload-систем. По замыслу, после второго семестра студент уже может идти на стажировку в крупные компании на позицию web-разработчика. По опыту первого года работы над проектом — так и получается: сейчас из 28 студентов первого набора 14 стажируются, а 7 уже работают как штатные сотрудники.
С третьего семестра, мы начинаем давать предметы, которые необходимы для «инициации» будущего системного архитектора: usability, тестирование, ИБ и системный анализ. Я не буду подробно описывать содержание каждой дисциплины, приглашаю посмотреть на нашем сайте. Скажу одно — мы старались спроектировать дисциплины исходя из опыта реализации наших проектов и по результатам бесед с «живыми» архитекторами.
А вот набор и содержание дисциплин четвертого семестра еще under construction. Вот прямо сейчас мы обсуждаем, в том числе со студентами, что лучше — сделать одну дисциплину и дипломный проект, или отказаться от идеи дипломного проекта и сделать, как обычно, 3-4 дисциплины (см. картинку ниже).

Организация проекта

Несколько ключевых моментов в организации проекта:

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

Мероприятия и активности

Важным элементом являются мероприятия, которые мы проводим в Технопарке. Их несколько видов:

Результаты

Чего удалось достичь за эти полтора года? У нас еще не было ни одного выпуска, так что эти результаты — промежуточные.
Конкурс на программу составляет 5-7 человек на место, а всего в отборе уже приняли участие 797 абитуриентов. Было зачислено на обучение 180 человек, сейчас у нас учатся 116 студентов, из них треть проходят стажировку и работают в IT-компаниях. В проекте участвует 21 преподаватель и ассистент. За это время мы провели 200 занятий — это 800 академических часов. Наши видеолекции посмотрели более 2 500 раз, средняя длительность просмотра — 62 минуты.
Мы провели 18 мастер-классов и конкурсов, в которых приняли участие 2 102 студента. На внешние мероприятия мы за это время направили 76 человек. Наши экскурсии посетили более 400 человек.

P.S.
Не уверен, что желание получать после выпуска из университета зарплату в 150 000 рублей будет реализовано у примерно 30% студентов Технопарка. Но если хотя бы 10% будут получать такие деньги, работая по специальности, то это и будет лучшим результатом проекта.

Понравилась статья? Поделиться с друзьями:
ТВОЙ ВК
Добавить комментарий