OneSoil — это agtech-компания с беларусскими корнями. У нас 400 000 пользователей со всего мира, для которых мы регулярно обновляем продукт.
Как и у всех продуктовых компаний, у нас есть проблема: непрерывный поток обновлений — это дорого. Поэтому мы ищем способы оптимизировать разработку, и вот недавно мы сделали контрастный NDVI — новую фичу, которая стала у пользователей одной из любимых, а нам почти ничего не стоила.
Для начала: в чём суть нашего продукта?
OneSoil делает приложение для точного земледелия. В 2021 году сельское хозяйство — это такая же высокотехнологичная сфера, как авиапромышленность. Роль OneSoil — предоставлять фермерам данные о состоянии их полей, чтобы их работа стала эффективнее. Когда у тебя несколько сотен гектаров с разными культурами, за ними очень сложно следить не используя технологии: рискуешь пропустить сорняки, болезни растений, проблемы почвы, а обойти все поля пешком невозможно. OneSoil берёт спутниковые снимки и обрабатывает их с помощью собственных алгоритмов, а потом даёт фермерам результаты в удобном виде в приложении.
Один из главных функционалов продукта — индекс NDVI. По нему фермеры понимают, сколько на поле растительности и здорова ли она. Индекс рассчитывается по тому, как растения отражают солнечный свет (здоровое растение активно поглощает красный свет и отражает ближний инфракрасный).
Контрастный NDVI — это слой в нашем мобильном и веб-приложении, который максимально понятно показывает разницу в значениях NDVI на поле за счёт контрастных цветов. (Читайте подробно о том, что говорит NDVI о состоянии полей, тут.)
А теперь давайте к делу: как мы сделали хорошую фичу за «совсем недорого»? Рассказывают сами сотрудники OneSoil — Лера Мацкевич, Филипп Кондратенко и Женя Воронец.
Контрастный NDVI: начало
Накала страстей как в блокбастере у нас не было, но выхода этой фичи наши пользователи ждали не меньше, чем очередного «Бэтмена». Кстати, подсказали нам идею сами же фермеры.
Функцию контрастного NDVI нам предложили сами пользователи, которые видели что-то похожее в других приложениях. Вдобавок, наш продакт-менеджер с дипломом агронома — Филипп Кондратенко — очень топил за этот функционал. После непродолжительного обсуждения с командой было решено — контрастному NDVI быть!
Лера Мацкевич
Агент техподдержки
Для меня сделать контрастный NDVI было настолько естественным желанием, которое может понять только человек, который работал в программах ГИС.
Филипп Кондратенко
Тот самый продакт-менеджер с дипломом агронома
Давайте, к примеру, посмотрим на поля вблизи города Балатон, штат Миннесота, через одну из ГИСовских программ.
Но даже с фильтром фермеру будет непонятно, насколько хорошо колосится его американская рожь. Вот тут-то и приходит на помощь OneSoil.
Как вы видите, из наших снимков уже можно делать какие-то выводы: американская рожь отлично колосится на тёмно-зелёных участках, хуже — в зонах, окрашенных красным цветом. (Как мы превращаем спутниковые снимки в NDVI, читайте в нашей статье.)
Обычный NDVI нужен для общего понимания ситуации. А контрастный NDVI — это тот же снимок, но с более чётким выделением проблемных зон. На снимке, где все значения лежат в пределах 0,7−0,8, всё поле было бы просто зелёным. А с контрастным NDVI гораздо легче заметить разницу.
Как мы быстро и недорого сделали эту фичу
Между моментом, когда Лера рассказала команде про пожелания пользователей, и релизом прошло не больше месяца. А месяц — это небольшой срок релиза для компании, которая зачастую все свои фичи делает с нуля.
Сама по себе задача не представляла сложности для нашей команды. Контрастный NDVI — это по сути просто другая раскраска, или, скажем, как фильтр в инстаграме.
Женя Воронец
Бэкенд-разработчик
В обычном NDVI поля раскрашены по цветовой гамме от коричневого до зелёного на диапазоне от −1 до 1: 0 — самый плохой NDVI, 1 — самый хороший, а минусовые значения — это побочные элементы на картинке (снег, вода, скалы, горы и пр.). В контрастном NDVI используется градиент от красного до синего, и рассчитывается он не по стандартному диапазону значений от 0 до 1, а по разнице минимального и максимального значений NDVI на конкретном поле.
Особых сложностей с этой задачей у нас не было, а польза для пользователей получилась огромной.
А что это дало нам?
Как ни странно, контрастный NDVI мы пилили достаточно долго. Причина очень простая: эта задача была связана с другими более глобальными, инфраструктурными задачами. Решено было по-новому обрабатывать данные, по-новому их хранить, чтобы в будущем мы могли эффективно расти. Соответственно, нужно было полностью изменить архитектуру решения.
Раньше мы брали спутниковые данные и хранили картинки разного вида (например, обычный NDVI / контрастный NDVI), но этот подход к моменту разработки себя изжил. В итоге с новой архитектурой мы храним одну-единственную картинку в сыром виде, которую раскрашиваем на лету. Какую пользователь картинку запросил, такую мы ему и готовим.
Фича нам обошлась очень дёшево и с максимальной пользой для юзеров. По сути это просто фильтр, который добавляет реальную ценность нашим приложениям. Более того, мы даём этот функционал бесплатно, в отличие от конкурентов. И, конечно, приятно, что пользователи это оценили.
Как вы видите, в разработке этого нового функционала не было ничего сложного. Как говорит Женя Воронец 一 не ядерная физика. Тем не менее, выгода для пользователя очевидная.
Получается ли так же легко выкатывать новую фичу каждый раз? Нет, в приложении есть и очень сложные вещи, которые требуют месяцев долгой и сложной работы. Например, Cloud-free (безоблачный) NDVI или таблица севооборота. Конкретно эта фича является хорошим примером того, как можно повысить ценность продукта, просто посмотрев на вещи в другом цвете.