"Повітряна тривога" та бункери із запуском сирени. Як створювали один з найбільш затребуваних застосунків в Україні
Степан Танасійчук — засновник IT-компанії Stfalcon і співзасновник конференцій Fwdays. У співпраці з компанією Ajax та Мінцифри Степан разом з командою запустили один із найбільш потрібних застосунків в сьогоднішній Україні — «Повітряна тривога».
Журналістка DOU поговорила з Танасійчуком про шлях від ідеї до швидкої реалізації аплікації, про технічні проблеми та казуси під час розробки, а також про перші повідомлення про те, як застосунок допоміг врятувати життя людей. Крім цього, він розповів, хто відповідає за сповіщення про тривогу та що станеться із проєктом після перемоги України.
«До розробки проєкту долучилися понад сто людей»
Ідея застосунку виникла на третій день повномасштабної війни. Я скролив соцмережі та бачив чимало нарікань людей на те, що вони не чують сирену у своєму місті чи селищі. Власне, так і з’явилася думка про програму, яка б розв’язала цю проблему та сповіщала про тривогу. Я швидко закинув її у Slack нашої команди для обговорення, усім ідея сподобалася.
А на ранок у спільноті хмельницьких айтівців у соцмережах я побачив, що в нашої обласної військової адміністрації теж є запит на схожий застосунок. Переконавшись, що це потрібна річ, ми через особисті контакти зв’язалися з місцевою адміністрацією. Через них взяли контакти людей, які відповідають за оповіщення про тривогу у Хмельницькому, які нам розповіли, як усе влаштовано.
По тому у голові одразу виникла схема запуску застосунку по всій Україні: ми виходимо на кожну область, зв’язуємося з відповідальними за сигнали людьми, надаємо їм доступ до програми, і вони в ручному режимі вмикають і вимикають оповіщення про тривогу, почергово.
Недільного ранку 27 лютого ми з командою Stfalcon почали розробку. Спершу написали простеньку аплікацію на кшталт «ліхтарика», аби запустити її у маркети на модерацію та згодом не витрачати на це час. Це була така собі «заглушка».
Та для ефективної роботи застосунок мав би програвати сповіщення, навіть коли телефон стоїть на беззвучному режимі або в режимі «Не турбувати». Як це реалізувати, ми не знали. Аж раптом згадали про сигналізацію від Ajax та їхній застосунок, у якого функція обходу таких режимів є.
Я почав шукати контакти когось з їхньої технічної команди і врешті зв’язався з ними. Їхній техлід пояснив мені: аби застосунок міг запускати відповідні «критичні сповіщення», потрібно отримати спеціальний дозвіл від маркету на акаунт розробника. Ці дозволи — питання не годин, а щонайменше тижня. Ані бажання, ані можливості стільки чекати у нас не було, тож ми запитали , чи можна буде опублікувати програму з їхнього облікового запису.
Вони погодились, ще й запропонували допомогу у розробці застосунку. Я зрозумів, що немає сенсу змішувати наші команди: в технічному плані не йшлося про дуже велику розробку. Тож після обговорень ми розділили ролі. На той час технічна сторона розробки повністю перейшла до Ajax. Я займався супутніми процесами проєкту.
З кінця березня цей розподіл змінився: розробка мобільних застосунків iOS/Android перейшла до Stfalcon. Ajax роблять бекенд-фронтенд системи, UI/UX додатків і рев’ю-публікацію в маркетах. На стороні Stfalcon і все, що стосується сайту та підпроєктів — мапи з тривогами та API. Останні ми створювали з волонтером Артемом Лемешевим.
За годину після нашого дзвінка до телеграм-чату проєкту від Ajax додалось 40 людей
Знадобилося трохи часу, щоб зрозуміти, хто є хто :) Але ми конкретизували зони відповідальності на третій день розробки. З технічної команди Ajax з самого початку ми стабільно працювали з близько десятьма людьми. А загалом до створення та запуску проєкту долучилися понад сто людей.
«У Мінцифри нам запропонували CDTO»
В процесі розробки у нас постало кілька питань. Перше — як виходити на адміністрації в інших областях? Для роздачі доступів до сповіщень застосунку нам, вочевидь, потрібен був державний орган, щоб кнопка вмикання та вимикання тривоги не потрапила не в ті руки. Виникла думка «зайти» з боку Мінцифри та ДСНС.
Я почав шукати контакти через кілька каналів, і найшвидше спрацював Валентин Гриценко (СМО Ajax Systems), який мав прямий вихід на Валерію Іонан (заступницю міністра Мінцифри). У міністерстві позитивно сприйняли інформацію про проєкт, погодилися співпрацювати. Дали контакти CDTO (Chief digital transformation officer) — своїх представників у тих областях, де вони вже були. Далі я вже з ними напрацьовував варіанти роботи. Уже до кінця першого дня ми почали запуск з Хмельницької, Вінницької, Рівненської і Волинської областей.
Додаючи перші області, ми перевіряли кожен контакт через СБУ, щоб переконатися, що людина справді працює на відповідній посаді, її контакти — правильні. До того ж представники міністерства були не всюди, часто зв’язок йшов через незнайомим нам людей. Ми мали розуміти, кому даємо доступ. На жаль, Мінцифри не взяло на себе роль цього фільтра, доводилося робити все власними силами. І час від часу у нас траплялися проблеми.
Представник з Львівської області став на диби і сказав: «Друже, кого ти хочеш перевіряти? Мене?»
Поки ми з ним це все вирішували, я міг додати п’ять областей, які не ставили зайвих питань.
Деякі області сумнівалися, чи долучатися. Черкаська, наприклад, понад тиждень думала. Зрештою зі всіх сторін її дотиснули, і вони погодились. Аргументували затримки тим, що чекали на якісь листи чи дозволи від Мінцифри або Держспецзв’язку.
«Основним принципом розробки було „keep it simple, stupid“»
Моя розповідь звучить так, ніби ми чітко знали, що і як робити, але це неправда. Процес розробки був доволі динамічним і трохи хаотичним — велика кількість незнайомих мені людей щось робить, причому з різним баченням, але на результат. Мені це трохи схоже на те, як в Китаї будували ковідний госпіталь: десятки одиниць техніки і тисячі людей на одному будівельному майданчику спорудили за тиждень те, що в нормальному режимі зайняло б пів року чи рік. Тільки у нас замість екскаваторів айтівці з ноутами :)
Це перша реальна тривога, яку ми запустили. З початку роботи над застосунком минуло менше як 24 години
Основним принципом розробки було «keep it simple, stupid». Один з наших бекендерів суворо його дотримувався і налаштовував на це команду. «Ні, цього не роби! Наше завдання зробити на коліні, просто щоб це працювало, і скоріше запустити», «Яка краса коду?!», «Ти можеш заюзати API чи будеш розмови вести про костилі чи не костилі!?», «Нічого не вдосконалюй, не поліруй. Працює? Зашибісь!».
Протягом кількох днів була анархія, і я іноді взагалі не розумів, над чим саме ми зараз працюємо і коли буде готова та чи інша задача. У нас навіть таск-менеджера не було — просто кілька потоків повідомлень в Telegram-чатах. Згодом ми виділили ролі проджект-менеджера і продакт-менеджера і налагодили процес розробки.
Оригінальний застосунок опублікували 28 лютого. О першій ночі білди пішли на реліз в App Store/Google Play.
Понеділок, 0:55. Так працював наш перший білдВ App Store ми потрапили за пів години — у них є фіча «Прискорене рев’ю». А от в Google Play модерація підвисла, і довелося шукати людину, яка б могла її пришвидшити. Все ж релізитись тільки в Apple — ідея така собі. Знайти людину у Google вдалося. Зранку застосунок вже був у маркеті.
Наступного ранку ми продовжували розробку і тестували застосунок — давали то тривогу, то відбій. Аж раптом у чатах помітили двіж: люди цікавились, чого програма сигналізує про тривогу, а сирен немає?
Тут виникло питання: а скільки, власне, у нас користувачів? З’ясувалося, що 40 тисяч — і це тільки в Хмельницькій області. Виявилось, що посилання на застосунок в маркетах, яке я публікував у фейсбук-дописі, коли шукав, хто допоможе з модерацією, розійшлось по місцевих чатах ОСББ тощо. Люди встановлювали наш застосунок, бо думали, що він вже працює. Після цього ми додали «Тестовий регіон» і далі перевіряли продукт уже на ньому, бо тисячі людей могли бігати в сховище і назад просто так.
Перевели тестування тривоги на Тестовий регіон
До ранку понеділка ми додали Вінницьку, Рівненську і Волинську області, і на момент офіційного релізу мали вже понад 100 тис. користувачів. Коли сягнули такої кількості, помітили технічну проблему — розсилання пушів відбувалось дуже повільно. Враховуючи, що йшлося про потенційно мільйони завантажень, вирішувати все потрібно було оперативно.
І доки ми намагалися все виправити, застосунок завантажували все більше людей — до поширення інформації долучилися медіа, що на той час додало нам проблем. Новинні сайти просто публікували інформацію про «Повітряну тривогу» та навіть не розбиралися, чи програма працює, чи був офіційний реліз та анонс. А на той час їх не було.
На початку ми встигали «гасити» ці ресурси, просили забрати публікації. Але вже за кілька годин новина пішла у Telegram-канал з близько мільйоном підписників. Ми зрозуміли, що приховувати інформацію більше немає сенсу — так ми тільки дискредитуватимемо продукт. І хай він працює не ідеально, треба його анонсувати.
Тоді Мінцифри, всі обладміністрації, певні новинні сайти вийшли в ефір та оголосили про розробку: «Компанія Stfalcon та компанія Ajax за підтримки Мінцифри створили застосунок, що сповіщає про повітряну тривогу».
На той час ми вже працювали з 10 областями. За 15 хвилин після анонсу вдалося розв’язати проблему із розсилкою сповіщень. За першу годину ми отримали мільйон завантажень. Не знаю, чи це рекорд, але ми увійшли в топ App Store/Google Play за день.
«За сповіщення у застосунку відповідають ті ж люди, що й за сирену за вікном»
Паралельно з розвитком продукту ми почали відходити від системи оповіщень через представників Мінцифри. Безумовно, вони перебувають недалеко від чергових, швидко дізнаються про тривогу і можуть написати про це у телеграм. Але це трохи напружувало: а якщо людина спить вночі? А якщо щось трапиться і вона не зможе повідомити про тривогу? Загалом це не могло бути постійним варіантом. Я хотів досягнути позначки у 99% коректних спрацювань тривоги, в ідеалі — 100%.
Ми почали наполягати на тому, щоб за сповіщення у застосунку відповідали ті ж чергові, які запускають сирени у містах
Як дають сигнали через сирени у містах? В кожній області є центр сповіщення про надзвичайні ситуації. Як правило, це бункер, в якому стоїть совковий пульт з силою-силенною кнопок. З нього запускають сирену про повітряну/хімічну/радіаційну тривогу — на кожен із видів є своя послідовність сигналів.
Повідомлення про тривогу «вертикальні». Є центральний штаб, який «спускає» повідомлення на область, а та — на окремі ОТГ. У відповідному порядку все йде і навпаки: якщо у місті стався, умовно, витік аміаку чи артобстріл, воно повідомляє область, а та — «центр».
Буває, що у вищезгаданих центрах оповіщень працюють літні люди. І от через ОДА або ДСНС ми можемо до них дійти та налагодити процес запуску тривоги через застосунок в їхній області. Буває важкувато: що старша людина, то важче їй освоювати щось нове, проте все можливо.
Тому, до речі, тривога в застосунку часто спрацьовує швидше за сирену на вулиці. Кнопки у ньому натискаються практично одночасно з кнопками на пультах чергових, але стара система — аналогова, і їй потрібно трохи часу, щоб увімкнутися. Зазвичай різниця становить
Але буває і навпаки. Через проблеми з критичними оповіщеннями на певних пристроях (переважно це телефони на базі ОС Android) може затримуватися сигнал у застосунку на хвилини. Тому добре, що ми все ж дублювальний канал оповіщень про тривогу. У нас немає 100% гарантії, що пуш-сповіщення дійде до користувача — і це було б ще критичніше, якби ми були основним каналом.
Технічні проблеми: «Люди писали, що видаляють застосунок через гучність сирени»
Стабільна робота оповіщень на Android-пристроях — це один з основних викликів. Трапляються проблеми з надходженням пуш-повідомлень через особливості тієї чи іншої моделі телефону, і їх не так легко вирішити, адже варіацій Android-телефонів десятки тисяч.На мою думку, більш ніж 95% Android-девайсів працюють із застосунком стабільно, менш ніж 5% мають певні проблеми.
Подекуди вони розв’язуються через системні налаштування, але це вимагає від користувача дещо заморочитись. Скарги досі є, але їх набагато менше, ніж було на старті.
Коли ми додали поділ на громади й райони, то одразу стали показувати статус тривоги в застосунку. На це був прямий запит від користувачів. Наприклад, «пуш» не прийшов, але ти почув сирену за вікном і хочеш перевірити, чи є зараз тривога. Це було важливим оновленням у релізі другої версії.
Ще у нас було багато скарг на гучність сирени. Спочатку ми не переймалися питанням її регулювання і робили сирену максимально голосною, адже завдання було — сповістити про небезпеку. Та люди почали писати про те, що видаляють застосунок, адже вночі він дуже волає. Тому додали можливість регулювання гучності.
Недавно військові написали, що їм взагалі не надійшло сповіщення і вони лише вранці побачили повідомлення про тривогу. Це був відокремлений підрозділ без чергового під боком, який дає сигнал про тривогу у казармі.
Спеціально для таких кейсів ми додали можливість у налаштуваннях перевірити, чи працює підписка і сповіщення за допомогою «Тестового регіону» — на нього кожну хвилину генерується сигнал про тривогу або відбій для перевірки. Якщо на телефоні є проблема при підписці на «Тестовий регіон», значить проблема буде і при підписці на будь-який інший регіон. За допомогою цього оновлення ми швидше виловлюємо різні проблеми та можемо їх розвʼязувати.
Було багато смішних моментів. Наприкінці першого тижня повномасштабної війни тестувальник дав тривогу на стейджі, але вона пішла до реальних підписників по Закарпатській області. На той час там було близько 60 тис. підписників, які ще жодного разу не чули тривог — це й досі найспокійніший регіон України. Ввечері мені стали дзвонити наші люди із Закарпаття, мовляв, щось тут не те. Проблему ми швидко усунули та вирішили чесно надіслати людям сповіщення з таким текстом: «Приносимо вибачення за хибну тривогу». Але перший рядок «пушу» обрізався, і це мало такий вигляд: «Приносимо вибачення за х..». Це було весело ). І таких мемів у нас було достатньо.
«Додати голос Арестовича здалося класною ідеєю, адже він герой мемів про заспокійливе»
Запит на фічу з позаштатним радником голови ОП Олексієм Арестовичом надійшов від користувача. Дослівно звучав так: «Додайте фотку Віталія Кіма (голова Миколаївської ОДА — ред.) і голос Арестовича на відбій». І мені здалося, що це класна ідея — перші кілька тижнів після запуску нам багато скаржилися то на заголосні, то на «нервові» звуки. А тут відома людина, ще й герой мемів про заспокійливе.
Обговорили це з командою, їм сподобалося. Ми швидко вийшли на Арестовича, він без проблем погодився записати звук. Там було кілька варіантів, ми прослухали і вибрали найкращий.
Додали голос Арестовича і зарелізили разом з іншими оновленнями. Багатьом користувачам ідея сподобалась, але не усім. Майже відразу ми почали отримувати купу негативного фідбеку. Сапорту довелося важко: кожному користувачеві потрібно відповісти на його скаргу, а скарги, бувало, розтягувалися на кілька листків А4 з переліком причин, чому та чи інша людина не любить чи не поважає Арестовича. Ще нам прилетів закид у «проплаченості».
У нас є дані, що застосунок зберіг життя військових у казармі в Рівному в перші тижні війни
Крім того, ми почали отримувати важливий зворотний звʼязок від людей, які перебували у містах з особливо активними бойовими діями. Арестович говорив фразу: «Увага, відбій повітряної тривоги. Можете повертатися до нормального життя. Все буде добре». А нам пишуть: «Ми тут третій тиждень живемо під бомбардуваннями, спимо у підвалі. До якого нормального життя ми можемо повернутися?»
Тож в наступному релізі фразу Арестовича ми скоротили до першої частини та дали людям можливість обирати між ним та жіночим голосом, який був до цього. Коли з’явилася можливість обирати голос — майже зник і хейт.
Для продукту це шматок історії. Щодо закидів про проплаченість одразу скажу: проєкт на рівні компаній волонтерський. Компанії Ajax, Stfalcon, а також Fwdays та The Kasta (які допомогли нам з відділом підтримки клієнтів) витрачають власні ресурси, а команди отримують оплату за свою роботу.
«У планах запустити сповіщення про нові види тривог»
Зараз ми працюємо над сповіщеннями про нові види тривог. Поки що можемо давати сигнал тільки про повітряну, яка вимагає негайно перейти в укриття. Але якщо у місті триває артобстріл або вуличні бої, то від людини потрібна інша схема поведінки. Наприклад, під час вуличних боїв ти маєш відійти від вікна і сховатись за стіною, щоб тебе ні рикошетом, ні осколком не зачепило, і точно не виходити на двір, якщо укриття не в підвалі твого будинку. Зараз над цим працюємо. Згодом плануємо додати повідомлення про хімічну та радіаційну небезпеку. Можливо, ще й біологічну.
Запускати нові види тривог будемо у співпраці з ДСНС, якраз обговорюємо з ними нюанси. Реалізувати цей задум потрібно правильно та обережно, щоб ніхто раптом не запустив хімічну тривогу замість повітряної, і навпаки. Варто добре проінструктувати чергових, адже інтерфейс керування стане складнішим: якщо раніше була одна кнопка, то зараз стане більше як пʼять.
Нові види тривог у застосунку значно спростять людям життя. Люди здебільшого не відрізняють сигнали сирен та їхні значення, які змінюються залежно від інтервалів сигналів. Ми ж з допомогою волонтерів записали голосові сповіщення, які конкретно казатимуть: «Увага! Артобстріл! Пройдіть в укриття», «Увага! Вуличні бої. Відійдіть від вікон».
Це зручно та інклюзивно. Голосові сповіщення будуть особливо корисні людям з порушеннями зору, які не можуть просто зайти в програму й поглянути, а який там вид тривоги. Для людей з порушеннями слуху ми додали віброрежим. Все це ми не продумували на початку — додаємо нові функції та виправляємо нюанси, коли отримуємо зворотний зв’язок від користувачів.
Ми також міркуємо над долею продукту після нашої перемоги, у мирний час. Плануємо передати застосунок ДСНС для сповіщень про стихійні лиха і надзвичайні ситуації. Зараз у нас чотири мільйони користувачів, а в «Дії» — 14 мільйонів, тож, думаю, маємо запас у 10 мільйонів українців, які ще, можливо, встановлять застосунок.
«Повітряна тривога — найкрутіший з моїх проєктів»
Ми з командою Stfalcon робили чимало проєктів із соціальною складовою, корисних для держави: «Дороги України», гра «Останній блокпост», «Громадський патруль» тощо. Але «Повітряна тривога» — мабуть, найкрутіший з них, бо він безпосередньо рятує життя людей..
У нас є дані, що застосунок зберіг життя військових у казармі в Рівному в перші тижні війни.
Під час того обстрілу був дуже короткий проміжок часу між сигналом тривоги й прильотом снарядів. Завдяки тому, що наша тривога спрацювала швидше за класичну, вони встигли перейти в укриття.
Також нам писали про випадки, коли люди спускалися у підвал, бо чули тривогу в застосунку, а потім виходили й бачили, що в їхній будинок «прилетіло». Думаю, таких випадків є багато.
Загалом це неймовірно круте відчуття, коли долучаєшся до розробки такого продукту. Думаю, цей кейс унікальний. Десятки людей в умовах війни об’єднались, щоб створити доволі складне технічне рішення для надзвичайно важливої мети. Такі проєкти створюються-інтегруються роками, а ми зробили за кілька днів. Усі, хто брав участь у цьому, дуже пишаються результатом. Мотивація та адреналін зашкалювали. Я точно розповідатиму про цей кейс своїм майбутнім онукам.
Якийсь період після запуску було враження, що застосунок «Повітряна тривога» — це квінтесенція усього мого життєвого шляху і придумати-реалізувати щось корисніше в майбутньому буде важко. Але я постараюсь :)
Колись я формував місію свого життя і дійшов до простого варіанту — розвивати економіку України. Зараз ще додав туди пункт «Руйнувати економіку росії»
Я відчуваю небезпеку для наших дітей з тієї сторони, і не тільки зараз — вона буде і через десятиліття.
Діти в росії виростуть у ще більшій ненависті до України та Європи, до наших громадян. Тож я намагатимусь зробити максимум, щоб вони якомога довше були неспроможні на «можем повторить».
А поки дуже дякую усім, хто долучився до розробки і запуску застосунку «Повітряна тривога» та продовжує працювати для його покращення та ефективної роботи.