Офтоп
Petro Kovalchuk
981

Скрытые затраты при разработке мобильных приложений

Одна из наиболее частых ошибок на стороне заказчика - начать работу над проектом, без понимания реальных затрат на разработку.

В закладки
Некоторые вещи порой имеют совсем иные масштабы, чем кажется.

Меня зовут Петр, я владелец IT-компании Lvivity, которая специализируется на разработке программного обеспечения на заказ и услугах IT-аутсорсинга.

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

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

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

Поддержка нескольких платформ

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

А что если кроме основной версии для iOS, потребуется еще и версия приложения для Android? Можете представить себе как изначальная стоимость разработки легко увеличивается порой в несколько раз.

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

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

Интеграция со сторонними сервисами

В случае с корпоративными мобильными приложениями недостаточно создать само мобильное приложение, его необходимо интегрировать в корпоративную ИТ-инфраструктуру. Задача разработки мобильного приложения, которое бы давало возможность работы с корпоративной CRM или ERP системой, является довольно распространенной.

Совсем другое дело, когда у Вас уже есть приложение, но возможность интеграции его с чем-то (сайт, CRM, бухгалтерия и т.д.) – изначально не была предусмотрена, и теперь возникла в этом необходимость. Как правило, в этом случае приходится дорабатывать приложение, что может оказаться весьма трудоемкой и дорогостоящей задачей.

Приложение часто является всего лишь одним из элементов гораздо более сложной системы.

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

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

Инфраструктурные компоненты

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

Ещё до начала разработки мобильного приложения нужно подготовить техническое задание для взаимодействия «клиент-сервер». Нужно будет заложить на сервере правильную архитектуру, уточнить в каких таблицах хранить данные, структуру запросов, какие данные используются чаще других.

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

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

Затраты на тестирование

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

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

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

Затраты на маркетинг

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

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

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

● таргетированная реклама в социальных сетях;

● реклама Google AdWords в поисковой системе Google;

● создание контента для сторонних ресурсах (гостевые публикации);

● оплата обзоров на тематических сайтах;

● размещение в email-рассылках, реклама в каналах в мессенджерах и т. д.

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

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

Стоимость обслуживания

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

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

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

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

Итоги

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

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

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Petro Kovalchuk", "author_type": "self", "tags": [], "comments": 1, "likes": 9, "favorites": 32, "is_advertisement": false, "subsite_label": "flood", "id": 58326, "is_wide": false, "is_ugc": true, "date": "Tue, 12 Feb 2019 17:29:47 +0300", "is_special": false }
0
{ "id": 58326, "author_id": 254868, "diff_limit": 1000, "urls": {"diff":"\/comments\/58326\/get","add":"\/comments\/58326\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/58326"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791, "last_count_and_date": null }
1 комментарий
Популярные
По порядку
1

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

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }