Разработка мобильных приложений для бизнеса: как создавать кроссплатформенные решения быстро и относительно дешево
Меня зовут Валерьян Брунин, я сооснователь и директор ILAVISTA. Мы разрабатываем сложные комплексные продукты: веб-платформы и мобильные приложения, CRM- и ERP-системы, уникальные продукты для стартапов и мобильные приложения для классического бизнеса.
За этот год мы силами одной команды разработчиков создали с нуля и зарелизили 6 приложений для Android и iOS. В этой статье я расскажу, как выстроить процесс, чтобы быстро создавать качественные продукты, как кроссплатформенная разработка на Flutter помогает экономить время и деньги, а также, сколько стоит разработка приложения для бизнеса и из чего складывается цена.
Предисловие.
Почему я пишу вообще этот материал. Сотни компаний на рынке разрабатывают решения на Flutter. Мы здесь не уникальны и не создали что-то такое, что перевернуло рынок. Нет. Этот материал я пишу с точки зрения того, как, имея отличные процессы в веб-разработки, добавить к услугам еще и приложения.
Также я хочу немного добавить своих мыслей о том, когда бизнесу в целом нужна мобильная разработка. Если в вебе +/- все понятно, то приложение решает все таки специфические задачи и как правило сильно удорожает разработку.
Когда бизнесу нужно мобильное приложение
Нужно сразу уточнить: есть два разных типа приложений — для пользователей и для сотрудников.
Приложение для пользователей нужно в том случае, если
покупки совершаются более-менее регулярно: заказ одежды, техники, расходников, разных мелочей, продуктов, такси, цветов, доставка из ресторанов, финансовые сервисы — все, чем люди пользуются на регулярной основе,
через приложение делать все это пользователю будет проще и удобнее, чем на десктопе или мобильном сайте,
- бизнес планирует использовать приложение как дополнительный канал для маркетинга: пуш-уведомлений, специальных акций, розыгрышей и т.д.
Все исследования за последние годы показывают, что мобильное приложение стимулирует пользователей покупать больше и чаще. По сути, оно дает возможность пролезть в телефон к самым лояльным клиентам и напрямую коммуницировать с ними, что увеличивает продажи и укрепляет лояльность к бренду.
Приложение для сотрудников, в свою очередь, есть смысл делать только в одном случае — если оно дает возможность оцифровать какой-то процесс и экономить за счет этого десятки и сотни человеко-часов каждый месяц.
К примеру, один из наших клиентов при помощи приложения оцифровал процесс мониторинга объектов.
Раньше менеджер ездил, фотографировал, загружал фотографии в папку, вручную привязывал их к разным объектам, делал отчет, теряя в процессе часть фотографий (часто приходилось делать их повторно) или ошибаясь и прикрепляя неактуальные фото или снимки с других объектов.
Теперь все это делается в приложении: сотрудник подъезжает к объекту, по геопозиции автоматически определяется, какой именно объект нужно сфотографировать (выбор в один клик), фото делается прямо через приложение и с геометкой и отметкой времени сразу загружается в базу, сводный отчет формируется автоматически и выгружается в один клик.
Так как объектов у компании очень много по всей стране, приложение экономит сотни человеко-часов каждый месяц.
При этом, если раньше ошибок в отчетах (старые или не те фотографии, недостоверная информация) было очень много, то после внедрения приложения их количество сократилось до нуля — и клиент получает достоверные отчеты буквально в режиме реального времени.
Общие требования к мобильному приложению для бизнеса
- Экономическая эффективность. Приложение должно окупаться или за счет увеличения продаж клиентам, или за счет оптимизации бизнес-процессов. Если этого нет, запал, желание и инвестиции иссякнут очень быстро — и вместо эффективного бизнес-инструмента вы получите мертворожденный продукт.
- Кроссплатформенность. Приложение должно одинаково работать как на Андроиде, так и на iOS, так как пользователи, как правило, используют разные устройства. Исключение — некоторые корпоративные приложения, которые устанавливаются строго на устройствах, которые централизованно закупает и выдает сотрудникам компания. В этом случае можно выбрать только одну платформу.
- Стабильность работы на разных устройствах. Даже на старых телефонах приложение должно работать стабильно и быстро, не зависать, не вылетать, не выдавать ошибок, корректно отрабатывать статусы и т.д.
- Удобный UX/UI и привлекательный дизайн. Чтобы клиенты или сотрудники пользовались приложением, оно должно быть удобнее, чем альтернативные варианты, доступные с десктопов или через мобильный браузер. При этом должно одинаково хорошо выглядеть на разных устройствах с разными разрешениями экранов.
- Безопасность и защита пользовательских данных. Сверхкритичное условие для бизнеса, так как в случае взлома или утечки может пострадать не только репутация, но и быть причинен серьезный материальный ущерб.
- Возможность расширять и добавлять функционал. Гибкость — важное условие, так как если на этапе разработки не заложить расширяемость и возможность масштабирования архитектуры и функционала, в дальнейшем это исправить будет почти невозможно, и следующую версию нужно будет создавать с нуля.
- Адекватная стоимость поддержки. Которая доступна не для всех технологических стеков. К примеру, из-за ситуации на рынке стоимость поддержки приложений, написанных на Go, сейчас такая, что дешевле сделать новый продукт, поддерживать и развивать его.
Разработка мобильного приложения на Flutter для бизнеса: основные этапы
Создание мобильного приложения на Flutter ничем принципиально не отличается от любой другой разработки. Конечно, определенная специфика есть, как и для любого другого инструмента, фреймворка или языка, но в целом, процесс достаточно типовой.
- Исследование конкурентной среды. UX-исследование.
- Подготовка технического задания.
- Согласование ТЗ с клиентом.
- Передача проекта в разработку.
- Создание UX/UI дизайна.
- Бэкенд и Flutter разработка (если приложение создается в экосистеме с веб-частью, то здесь еще добавляется этап Front-end разработки).
- Тестирование приложения.
- Публикация в Google Play и App Store
Немного подробнее расскажу про каждый из этих этапов, чтобы было понятнее, что именно и почему мы делаем на каждом шаге.
Исследовательский этап
Вне зависимости от того, делается приложение для клиентов или сотрудников, мы уделяем исследованиям огромное значение.
- Во-первых, они дают возможность оценить ситуацию на рынке, сориентироваться самим и сориентировать клиента, каким образом мы можем разработать востребованный и конкурентоспособный продукт.
На выходе получается достаточно объемный документ, на основе которого в дальнейшем разрабатывается общая архитектура проекта и техническое задание на разработку.
К сожалению, показать пример я не могу (все исследования делаются строго под NDA), но в этой презентации вы можете посмотреть примерный состав работ по одному из исследовательских направлений, который мы презентуем клиентам на установочных встречах.
Подготовка технического задания и согласование его с клиентом
На этом этапе мы раскладываем все требования клиента и на основе результатов исследований разрабатываем подробное ТЗ, по которому в дальнейшем организуем все работы по созданию мобильного приложения для бизнеса.
По ходу разработки ТЗ мы непрерывно консультируемся с заказчиком и уточняем требования.
Когда ТЗ готово, обязательно проводим установочную встречу, чтобы еще раз сверить часы и финально согласовать все детали проекта перед стартом разработки.
Создание UI/UX дизайна
На следующем этапе мы полностью прорабатываем визуальную часть проекта: это важно как для дальнейшей разработки (программисты понимают, как будет выглядеть и работать приложение), так и для самого заказчика, которому важно как можно раньше увидеть, за что же он платит деньги.
Еще один важный момент: только на этом этапе у нас есть возможность безболезненно внести какие-то изменения в архитектуру проекта — добавить какой-то функционал или, наоборот, от чего-то отказаться.
Довольно часто именно так и происходит: клиент видит визуализацию и осознает, что какие-то вещи ему не нужны, а какие-то стоит сделать в первую очередь. Мы, таким образом, получаем возможность еще до передачи в разработку скорректировать приоритеты.
С точки рения расчетов стоимости этапа дизайна также были свои изменения.
Здесь я бы остановился детальнее. Эта информация будет полезна в основном компаниям-разработчикам. Но не буду перегружать статью и сделаю ссылку на файл расчетов.
Передача проекта в разработку
После согласования с заказчиком техзадания и разработки UI/UX-дизайна, бизнес-аналитик и менеджер проекта передает всю информацию по проекту разработчикам и знакомит их с основными артефактами, созданными к этому моменту:
уставом проекта,
- таблицей рисков,
- follow up,
- road map,
документами об образе и границах проекта,
реестром заинтересованных лиц,
документом с определением классов пользователей и их характеристик,
описанием функциональных возможностей и этапов внедрения,
спецификацией требований к ПО (техническим заданием),
результатами UX-исследования,
готовым UI-дизайном.
Информация доводится до команды разработки, и на ее основе формируется бэклог задачи, которые затем распределяются по спринтам.
Бэкенд и Flutter разработка
Классический итерационный процесс разработки, который строится по таким же принципам, как и создание любых других продуктов и приложений.
- В первую очередь создается окружение разработки на локальном сервере и устанавливаются все необходимые компоненты и библиотеки: инсталляция Flutter SDK, настройка IDE и эмуляторов, установка плагинов и зависимостей, необходимых для выполнения проекта.
- Затем создается GIT репозитории проекта. Обязательно с учетом всех необходимых правил форматирования и комментирования кода. Для обеспечения корректной работы системы контроля версий, нужно учесть требования к именованию веток, правилам коммитов и прочим деталям, связанным с использованием GIT.
- Следующим шагом создается документация по проекту, которая включает описание всех основных функций, элементов интерфейса, а также инструкции по использованию и настройке. Документация должна быть написана на понятном для пользователя языке и содержать достаточное количество информации, чтобы пользователь мог использовать приложение без дополнительной помощи
После чего начинается непосредственно разработка. Особое внимание при этом необходимо уделять безопасности: в этом отношении у Flutter есть определенная специфика, о которой я как-нибудь напишу отдельную статью.
Тестирование приложения
В процессе разработки код проходит через стандартные тесты. Когда основной этап завершен и приложение готово к релизу, оно еще раз прогоняется через серию тестов, которые помогают отловить незамеченные баги и исправить ошибки, которые вылезли на финальных этапах.
На этом же этапе приложение может полноценно протестировать заказчик: как правило, со стороны клиентов на этом этапе также прилетают правки и пожелания, которые нужно реализовать до полноценного релиза.
Публикация в Google Play и App Store. Релиз приложения
Отдельный процесс, в котором есть достаточно много подводных камней и узких моментов. Углубляться в него я не буду (это тема еще для одной большой статьи), пройдусь по основным этапам.
Процесс релиза приложения на Flutter в Google Play Market:
- Шаг 1: Создание учётной записи разработчика
- Шаг 2: Настройка android части
- Шаг 3: Тестирование приложения
- Шаг 4: Сборка и подписание приложения
- Шаг 5: Регистрация в Google Play Console
- Шаг 6: Описание приложения и подготовка визуальной части приложения для страницы в Google Play
- Шаг 7: Выбор категории и тегов
- Шаг 8: Проверка приложения
- Шаг 9: Проверка со стороны клиента и публикация.
Процесс релиза приложения в App Store:
- Шаг 1: Получение DUNS номера
- Шаг 2: Создание учётной записи разработчика
- Шаг 3: Настройка iOS части проекта
- Шаг 4: Тестирование приложения
- Шаг 5: Сборка и подписание приложение проходит
- Шаг 6: Регистрация в AppStore
- Шаг 7: Описание приложения и подготовка визуальной части приложения для страницы в AppStore
- Шаг 8: Выбор категории и тегов
- Шаг 9: Проверка приложения
- Шаг 10: Проверка со стороны клиента и публикация.
После релиза: как развивать и дорабатывать приложение для бизнеса
Как правило, в первой версии приложения для бизнеса реализуется самый критичный и нужный функционал. Иногда это может даже какая-то одна функция или киллер-фича, на которой и основывается ключевая ценность приложения для пользователя.
В дальнейшем приложение для бизнеса развивается по двум сценариям:
- Доработка текущего функционала, когда команда разработки занимается тем, что устраняет ошибки и баги, оптимизирует какие-то моменты, следит за тем, чтобы приложение корректно работало на новых устройствах.
- Расширение функционала. Когда в приложении появляются новые возможности, и команда разработки занята их созданием и внедрением.
Обычно работа ведется одновременно по обоим этим направлениям, но распределение задач может очень сильно отличаться в зависимости от особенностей проекта и текущей необходимости.
Стоимость разработки и бюджет на поддержку/развитие
Вопросы о том, сколько стоит разработать мобильное приложение для бизнеса, мне задают все без исключения клиенты в первые 10 минут после начала обсуждения проекта.
К сожалению, однозначных ответов у меня нет: все очень сильно зависит от проекта.
Когда нужно оцифровать какой-то простой интернет-магазин и выпустить его в сторах, бюджет может быть всего 2000-3000 долларов, и с этой задачей справится практически любой более-менее квалифицированный фрилансер.
Для проектов уровня Findgid, про который я рассказывал в одной из прошлых статей, бюджет обычно начинается от 50 000 долларов.
Еще один пример: проект, который мы делали для логистической компании. Клиенту было нужно приложение для бизнеса на iOS и Android, чтобы водители могли планировать график работы и маршруты, получить информацию о заказах и деталях поездок. Также в приложении реализована интерактивная карта маршрута с отображением зон отдыха, заправок и других необходимых данных.
Такого плана решение на сегодняшний день обойдется примерно в 30 000 долларов.
Важно оговориться, что цены указаны очень ориентировочно. Итоговая стоимость разработки приложения очень сильно зависит от того, что будет под капотом, поэтому каждый проект нужно оценивать индивидуально.
Несколько рекомендаций в завершение
- Если вы хотите разработать приложение для своего бизнеса, не пытайтесь сделать сразу второй Амазон или Яндекс — сконцентрируйтесь на узком функционале или какой-то конкретной фиче. В этом случае вы сможете создать и зарелизить продукт достаточно быстро и за разумные деньги.
- Масштабировать функционал стоит уже в следующих версиях, когда вы получите обратную связь от пользователей. Спойлер: здесь вас ждет немало сюрпризов и интересных открытий.
- Если вам нужно кроссплатформенное решение, есть смысл обратить внимание на Flutter. По нашему опыту, это оптимальный инструмент для создания кроссплатформенных приложений для бизнеса с адекватной стоимостью как разработки, так и поддержки.
Буду рад ответить на ваши вопросы в комментариях. Если вам нужна консультация по созданию приложений на Flutter для бизнеса или нужно валидировать какие-то идеи по мобильной разработке, можете связаться со мной в Телеграме, буду рад пообщаться лично.
Если вы занимаетесь разработкой и вашим клиентам нужны приложения, но вы их не делаете — тоже пишите, мы работаем не только с прямыми клиентами, но и на субподряде.
Сколько людей у вас в команде разработки и кто чем занимается?
Сейчас 4 Flutter разработчика. Было 5, но одного в армию забрали в ноябре. Все были с нуля и мы дотянули их до middle примерно. А остальная команда из веб: PM / BA / UX / UI / Front-end на vue.js / Back-end на Laravel / QA
норм, спасибо
Хорошая инструкция получилась
Спасибо)
А с какими вы юрисдикциями работаете? Нет ли проблем сейчас с логистическим клиентом из Германии, к примеру?
ну в целом мы с ними работаем) есть проблемы, но все решаемо)
На Апворк не думали выходить? Хорошие портфолийные проекты, бодрая недорогая команда, можно неплохо развернуться, как мне кажется
пробовали - но с первого раза не получилось(
если кто-то может выстроить нам процесс по апворку - буду рад.
Да, там хватает нюансов, я помню
Особенно с санкциями) У нас как-то 10 аккаунтов сразу заблокировали
Иногда для бизнеса эффективнее сделать чат-бота, который получится значительно дешевле в разработке и обслуживании.
да, по этому в начале статьи написал свои критерии для разработки приложения) к примеру, есть магазин айфонов в гродно с телеграм-чатом. ну просто мрак и ужас. а есть в Минске тоже такой же магазин с приложением в котором не просто каталог, но и заявка на ремонт, стекло и так далее. Заработки разные у компаний по итогу)
Чат-боты же только для совсем примитивных задач подходят, не? Приложение все-таки пофункциональнее будет.
Да почему? Сейчас они довольно умненькие существуют
Например?
Так и приложение порой для примитивных задач создают.
Я не думаю, что примитивное приложение будет стоить намного больше чат-бота.
Ну и не стоит забывать, что вся эта история с мессенджерами — это сугубо СНГ-шная тема, в ЕС особо ими не пользуются во многих странах. Так что приложение со всех сторон будет удобнее для всех.
Вы правы. Но надо исходить из задачи, а не из инструмента. Где-то приложение, где-то чат боты.
Если на западный рынок, то только приложение, как мне кажется. Делать чат-бот = загнать себя в такую систему ограничений, то не очень понятно, зачем.
В общем, если планировать вдолгую, то я бы даже в сторону чат-ботов не смотрел.
А можно отдельно заказать исследование и разработку ТЗ, а делать инхаус или нанять кого-то другого?
да, мы часто рекомендуем сделать исследование и ТЗ. И только потом идти в разработку. Даже мы рекомендуем с результатами исследования и ТЗ пойти и посчитаться в разных компаниях.
Спасибо за подробную инструкцию, полезно получилось. Примеры проектов ваши?
да, все проекты наши)
Странно, норм статья и ни одной ссылки на телеграм канал - это точно vc?
Есть ли сейчас проблемы с паблишингом в сторах? Санкции не мешают?
есть проблемы с этим. точнее проблема с тем, что надо получить DUNS номер и оплатить аккаунт разработчика. А сейчас из РФ это сделать очень сложно. ПО этому мы публикуем некоторых клиентов на своем аккаунте.
После публикации приложения общедоступны в сторах? Как решаете вопрос со скачками от левых людей?
у нас все приложения практически закрыты для сторонних скачиваний. по этому такой проблемы нет.
На каком этапе производится оценка проекта? Когда клиент узнаёт, в какие деньги встанет разработка?
Как правило у нас несколько шагов:
Бриф - даем вилку цен
КП - делаем предварительную оценку и фиксируем ее в договоре
После ТЗ - делаем переоценку и корректировку оценки
"Провалидировать идею" - это как?
Приходят к нам клиенты и говорят: хочу сделать конкурента av.by у нас есть 30 000$. Мы делаем исследование и показываем, что делать конкурента нет смысла и точно деньги будут потеряны. Но вот можно уйти в сторону, отстроиться и сделать что-то свое в рамках бюджета.
Интересно, сколько народу уволили после релиза в первом примере
наших разработчиков - ни одного) на стороне клиента тоже) просто работу стали делать быстрее, больше и эффективнее. переработки знаю точно ушли и это около 10 % от зарплатного фонда было.
Насколько сложно сейчас найти программистов под Flutter?
думаю не сложно. рынок СНГ переполнен. но вопрос в том, что им надо еще остальная команда сильная вокруг приложения
Впечатляющий опыт. Создание 6 приложений за год — удивительный результат!
спасибо)
а почему флаттер, а не react-native?
наш тех дир ресерчил рынок и мы пришли к тому, что для нас комфортнее будет именно Flutter) На Habr на этот ответ дали крутой комментарий. Цитирую: "На эту тему уже много холивара.
Тесно работали с native решениями, flutter и RN.
К плюсам flutter можно отнести производительность, скорость вёрстки интерфейсов, каналы платформ (позволяет тесно работать с нативным api устройства), наличие null safety (кратно уменьшает шанс падения приложения в проде). Отчасти минусом является необходимость изучения Dart (осваивается за пару дней, но многих может оттолкнуть).
Основной плюс RN - возможность обновлять приложение "на лету" без необходимости повторно проходить ревью в сторах. Хотя сами много работаем с фронтом, разработка в RN часто связана с болью.
По итогу остановились на flutter + native (для совсем уж специфичных задач)."