В рубриці DOU Проекторвсі бажаючі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо прийняти участь. Якщо ні — можливо, серія надихне на створення власного made in Ukraine продукту. Питання і заявки на участь надсилайте на valentina@dou.ua.
Ідея
Привіт, розповім про наш пет-проект kpidata.org. В КПІ я зустрічав багато людей, які вже через кілька років навчання були розчаровані обраним факультетом або напрямом. Хтось припиняє навчання або перевступає до іншого ВНЗ, однак більшість пливе за течією і витрачає час даремно. Через відсутність інформації про обраний напрям абітурієнт стає заручником випадку або нав’язаного вибору батьків. Так не повинно бути.
Вступникам потрібна така інформація про потенційну альма-матер:
— Ким і де працюють випускники після навчання?
— Які дисципліни вивчають для отримання певного фаху?
— Які дисципліни варто вивчати на думку студентів?
— Чи є неадекватні викладачі?
— Які переваги та недоліки навчання на факультеті або кафедрі?
Українські абітурієнти можуть використати такі ресурси для осмисленого вибору місця навчання:
— Переглянути офіційні сайти ВНЗ, факультету або кафедри, наприклад kpi.ua, fpm.kpi.ua, pzks.fpm.kpi.ua;
— Поспілкуватися з тим, хто вже навчається за напрямом, який цікавить абітурієнта. Для цього в КПІ склали список волонтерів, які відповідають на питання вступників. Також є паблік з корисною інформацію, яка стосується вступу в КПІ;
— Поспілкуватися з приймальною комісією.
Ми створили ще одне джерело інформації про потенційне місце навчання.
Реалізація
Отже, найкраще про факультет та кафедру можуть розповісти студенти, випускники та викладачі. Тому ми вирішили піти таким шляхом:
1) Провели онлайн опитування студентів, випускників та викладачів КПІ. Заповнення анкети займало до 3 хвилин.
2) Отримали відгуки про викладання конкретних дисциплін від студентів та відгуки випускників i викладачів про факультети та кафедри. В КПІ 21233 студентів, за 10 днів отримали 7910 анкет.
3) Перевірили гіпотези щодо задоволеності навчанням, зробили зрізи за кожним факультетом та групою. В КПІ 28 факультетів та інститутів, 112 кафедр та 1800 груп.
4) Опублікували результати. Також доступні raw дані.
Зараз на сайті доступні такі результати нашої роботи:
1. Результати для кожного факультету та кафедри КПІ. Приклад — результати для ФПМ:
2. Оцінка викладанняпоказує, наскільки студентам подобаються пари. На графіку бачимо зріз за факультетами:
Зріз за факультетами
3. Відгуки студентів та випускників. Нижче подано деякі відгуки випускників про магістратурув КПІ:
Відгуки випускників про магістратуру
Також на сайті є:
— Сторінки з результатами для факультетів та груп; для груп наведено оцінки викладаннякожної дисципліни;
— Рейтингикафедр та факультетів від KPIdata, що базуються на задоволеності студентів та випускників;
— Відгукистудентів, випускників та викладачів за кожним факультетом або кафедрою;
— Перевірка гіпотез, які ми висували на початку роботи.
Як ми починали роботу.Восени 2015 наша команда складалась з двох розробників — мене і Міші, студента ФПМ. Для нас це вже
Щоб переконати людей пройти опитування, ми:
— сказали, що опитування допоможе зробити КПІ кращим;
— розіграли мерч — стікери, чашки та футболки з символікою проекту.
Пілотні опитування. Провели кілька опитувань студентів КПІ, використовуючи Вконтакті та Google Forms. Найбільшу увагу привернуло опитування про причини вступу до магістратури КПІ. Результат — 32% респондентів вважають, що диплом допомагає при пошуку роботи. Також провели опитування працівників ІТ-компаній і роботодавців. Підсумки — «Диплом магістра не є перевагою при пошуку роботи в ІТ (Україна)».
З пілотних опитувань зробили такі висновки:
— Нам подобається цим займатися;
— Є цікаві результати;
— Формат опитування варто покращити;
— Є зацікавлена аудиторія.
Розробка.Наступним етапом стало онлайн-анкетування студентів, випускників та викладачів КПІ. Для випускників та викладачів зробили анкети засобами Google Docs (як в попередніх опитуваннях) та вбудували в наш сайт.
Для студентів зробили індивідуальні анкети для кожної групи, враховуючи перелік дисциплін та викладачів, які були в минулому семестрі. Дисципліни взяли з розкладу КПІ. Завантаження даних про дисципліни спочатку реалізували на Python 2 + Twisted + Scrapy, а далі на Python 3 + asyncio + aiohttp.
Потрібні були 1000+ унікальних анкет і можливість їх оновлювати — змінювати питання та варіанти відповідей, так як в нашому джерелі були помилки в назвах дисциплін та прізвищах викладачів. Розглянули готові сервіси для проведення опитувань Google Docs i SurveyMonkey, вирішили використати Google Apps Script. Це технологія, яка дає можливість писати та хостити JavaScript код і використовувати сервіси Google в своїх додатках (схоже на AWS Lambda). Зробили прототип і зрозуміли, що зручніше написати веб-додаток для формування опитувань на Python 3.
Наш стек на той момент:
— Завантажені розклади, інформація про факультети та групи — в PostreSQL;
— Розгортання середовища розробки та деплой — Vagrant + Ansible;
— Кешування результатів запитів та збереження відповідей респондентів — Redis + Google Spreadsheet.
Ми розробили розподілену та масштабовану систему — додаток для формування опитувань працював на
— Розподіл навантаження між серверами — nginx;
— Збір і візуалізація метрик — StatsD та Graphana;
— Availability-моніторинг — StatusCake та HealthchecksIO;
— Оперативне інформування про помилки — Sentry та graphite-beacon;
— Ввімкнення/вимкнення функцій додатку без деплою та змін коду/конфігурації додатку — LaunchDarkly;
— Інтеграція з HipChat для отримання нотифікацій про зміни стану серверів: деплоймент, перевищення порогових значень для метрик, появу нових виключень та помилок, рестарт додатків.
Поки розбиралися з моніторингом, покращили знання безкоштовних планів різних сервісів, які допомагають в розробці.
Веб-додаток написали на Python 3, asyncio та aio-libs. Тести — на unittest, py.test та asynctest (в компонентах різних розробників). Зараз зрозуміло, що для уніфікації стеку варто було одразу писати на py.test.
Працюючи над додатком для збору відгуків, розробили бібліотеки та сервіси, які використали для наступного етапу. Щоб підвищити градус неадеквату в команді і не називати компоненти «survey_generator», «schedule_grabber», «redis_filler», «backuper», назвали репозиторії як заклинання в книжках про Гаррі Поттера. Інколи шкодуємо про це рішення, але стороннім людям, мабуть, весело слухати розмови в стилі «я пофіксив багу в патронумі, треба оновити його версію в залежностях експеліармуса і накатити тоталус». В наступному пет-проекті використаємо назви покемонів :)
Як я писав вище, у розкладі занять було багато помилок набору, ми їх шукали варіацією алгоритму Левенштейна (для групування дисциплін зі схожою назвою) та вручну. Деплоїти прототипи на продакшн почали на ранніх етапах.
Зібравши все докупи, провели бета-тестування серед друзів-однокурсників. Пофіксили баги та були готові до запуску наступного публічного етапу.
Збір відгуків про КПІ.Опитування почалось 26 лютого 2016 року. Кампанія зі збору відгуків тривала 10 днів, в які люди давали рекомендації щодо вмісту опитувальника, надсилали листи і вказували на помилки у розкладі.
На території КПІ з’явилися такі постери:
Кожного дня розігрували чашку або футболку серед підписників, які взяли участь в опитуванні і поділилися в соцмережах.
Дані Google Analytics щодо відвідуваності сайту KPIdata за 10 днів проведення опитування:
Максимальна кількість відвідувачів сайту співпала з днем, коли ректор КПІ оголосив про підтримку проекту на своїй сторінці Вконтакті, даний пост поширив найбільший паблік універститету.
Щоб охопити більшу аудиторію, ми проводили змагання між факультетами за кількістю анкет. Серед студентів факультету-лідера дня розігрували подарунки від KPIdata. Це працювало: студенти поширювали посилання на опитування в чатах своїх груп.
Ми думали, що в КПІ навчається 40 000 студентів, хотіли отримати 10 000 анкет (25%). Вдалося зібрати 8 000. Потім дізналися, що зараз навчається 22 000 студентів, тобто майже кожен третій студент КПІ оцінив ВНЗ на нашому сайті. Not bad.
Також порадувало, що після релізу у користувачів не було проблем з доступом до сайту.
Ми пообіцяли, що опублікуємо результати опитування до кінця березня 2016, протягом
Спроби масштабування проекту в Україні.Під час опитування до нас звернулися кілька представників студентських організацій інших ВНЗ. Вони хотіли зробити подібний проект в себе. В результаті нашого спілкування з’явилася стаття «Гайд: як зібрати відгуки в своєму університеті онлайн»в студентському онлайн-журналі PLCB.
Ми контактували з
— Переліку факультетів та груп немає у відкритому доступі;
— Розкладу занять немає онлайн;
— Треба писати сайт;
— Нема каналів поширення інформації онлайн серед студентів;
— Люди не довіряють анонімним опитуванням, але водночас не хочуть брати участь в неанонімних.
Виникла ідея зробити hosted-сервіс, яким можна зробити KPIdata для свого ВНЗ і не писати код. Ідея варта уваги, згодом ми до неї повернемось.
Аналіз відповідей. Опитування були анонімними, для того щоб люди не боялися залишати свої відгуки. КПІшники зауважили, що можна проголосувати кілька разів або написати бота для голосування на KPIdata. На щастя, захист від ботів зробили ще на початку розробки засобами No CAPTCHA reCAPTCHA.
Потрібно було відфільтрувати фейкові анкети. Інформації було небагато: дата та тривалість проходження опитування, UserAgent, IP-адреси, факультет, група та відповіді на питання анкети. Основною була боротьба з випадками на зразок «студенту не подобається викладач, тому він проголосує проти нього 14 разів». Не можна було видаляти анкети реальних людей. Системи з авторизацією та контролем доступу до опитування не мали б цієї проблеми. Ми не хотіли ускладнювати доступ до опитування нашим респондентам, тому пішли шляхом пост-валідації.
Результати аналізували за допомогою Python 3, Pandas, NumPy, Jupyter. Набір гіпотез оформили у вигляді функцій, які працюють з DataFrame, роблять зрізи аудиторії за факультетами, курсами, групами та визначають кількість варіантів відповідей кожного виду.
До нас зверталися люди з пропозиціями допомогти в аналізі даних або розробці сайту. Ми віддавали нетехнічні задачі — щось намалювати або запропонувати свої гіпотези, бо не хотіли гальмувати процес розробки додаванням нових людей до технічної частини команди.
Оприлюднення результатів.Головним фейлом проекту став час оприлюднення результатів. Між проведенням опитування та публікацією результатів пройшло 4 місяці.
Причини:
— Наша неорганізованість;
— Неякісна оцінка часу;
— Формат пет-проекту — розробка по кілька годин на день у вільний час;
— Бажання зробити все правильно, як альтернатива «херак-херак і в продакшн».
Респонденти хотіли побачити результати опитування. Однак ми не хотіли просто викласти екселівський файлик з відповідями. Дехто звинувачував нас в фальсифікації результатів. Ми просили ще почекати і продовжували працювати над проектом.
Щоб показати, що ми не забили, почали оприлюднювати результати перевірки наших гіпотез та відгуки респондентів в соцмережах:
Сайт для оприлюднення результатів ми зробили з використанням того ж набору технологій, що й для опитування. Для візуалізації даних використано D3.js. Дані поклали в Redis і залишили можливість для оновлення їх частинами спеціальним скриптом та видом деплоя (запуск скрипта, який оновлює дані в Redis для певної підмножини результатів).
Коли розробляли навігацію, виявилось, що в КПІ є групи з однаковими назвами на різних факультетах; мали місце і друкарські помилки на сайті розкладу КПІ в назвах дисциплін та груп.
Коли завершили основну роботу, зробили внутрішній реліз та провели бета-тестування серед друзів. Виправили багато дефектів.
Кілька разів зверталися до ком’юніті за допомогою для покращення навігації. Зробили міні-опитування: Які 3 факультети, на вашу думку, схожі на ваш факультет?. Також дізналися яким кафедрам відповідає кожна з груп КПІ — для цього збирали інформацію зі студентів та працівників КПІ в соцмережах.
Результати
Нарешті, 13 липня, наприкінці третього дня вступної кампанії, ми опублікували сайт з результатами і почали розсилати інвайти. Результати дослідження можуть бути корисними для:
— Абітурієнтів КПІ та їх батьків;
— Студентів, випускників та викладачів КПІ.
Гайд по використанню сайту для кожної з груп користувачів — kpidata.org/howto.
Подальші плани.Головна задача — донести результати опитування до абітурієнтів, щоб вони могли зробити зважений вибір місця навчання. Вступна кампанія для більшості спеціальностей закінчується 27 липня. Після вступної кампанії ми плануємо зробити кілька вдосконалень, які стосуються студентів. Також маємо намір зібрати відгуки про останній семестр в КПІ. Завдяки проробленій роботі, час між проведенням опитування та публікацією результатів буде суттєво зменшено.
Тепер долучитися до проекту просто:
— Поширити інформацію серед абітурієнтів та їх батьків — це те, що найбільше допомагає проекту на даному етапі;
— Перевірити свою гіпотезу на відкритих даних і запропонувати її візуалізацію на нашому сайті — ми розміщуємо діаграми від сторонніх розробників із вказанням авторства;
— Повідомити про помилку: у нас є публічний багтрекер; також ми виправляємо помилки, отримані на емейл kpidatahq@gmail.comабо соцмережах;
— Записатися для участі в наступних опитуваннях, заповнивши формуза 19 секунд.
Висновки:
— Потрібно було зразу зробити мобільну версію сайту: третина наших користувачів заходить на сайт з Android + iOS. Це вирішується кодом, ми працюємо над цим;
— Абітурієнтам та їх батькам назви кафедр не дають потрібної інформації, їх цікавлять відгуки стосовно викладання конкретної спеціальності. Це також вирішується кодом, доробляємо це;
— Достукатися до абітурієнтів складніше, ніж ми думали: потрібно домовитися з адміністраторами пабліків/сайтів, де бувають абітурієнти КПІ і заявити про проект там; ця задача кодом не вирішується :)
— Є багато крайніх випадків з назвами груп та кафедр. Добре, що студенти та викладачі повідомляють про подібні помилки, і ми маємо змогу внести корективи;
— Щоб допомогти абітурієнтам, було б добре запуститися на кілька місяців раніше.
P.S.На DOU прийшли за фідбеком, тож будемо вдячні за коментарі.
P.P.S. Варто згадати про людей, які допомогають в роботі над проектом.