IT-инфраструктура для бизнеса и творчества

Расчёт стоимости разработки проекта for dummies

Наверняка многим знаком такой диалог

- Разработайте мне проект, на котором я буду зарабатывать деньги

- Хорошо, разработка будет стоить 10 миллионов рублей

- Слишком дорого, у меня есть только 100 тысяч рублей

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

Описание и состав проекта

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

Наши фаундеры - одеты неброско, но стильно и молодёжно

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

  • Мобильное приложение для заказчика, две платформы - iOS и Android
  • Мобильное приложение для исполнителя, две платформы - iOS и Android
  • API Endpoint, чтобы принимать запросы от мобильных клиентов (для простоты сделаем один общий)
  • Landing для регистрации клиентов (пока не будем делать 100500 лендингов под каждую аудиторию)
  • Landing для регистрации исполнителей
  • Админка для управления пользователями, объявлениями, тикетами, просмотра статистики и прочих полезных штук

Мы пойдём путём mobile first (ну всё-таки это абстрактный проект в вакууме), хотя если честно я бы добавил веб-версию для заказчиков и исполнителей.

Также мы понимаем, что нам надо как минимум интегрироваться с

  • Платёжной системой
  • Системами аналитики (amplitude/mixpanel/ga) и разметить все экраны
  • Системами контроля крэшей и производительности (AppSignal/NewRelic/Bugsnag/Rollbar)

А ещё

  • Подготовить проект для возможности использования нескольких языков
  • SEO/ASO оптимизацию, а также стратегии продвижения
  • Оптимизировать для слабовидящих и людей с инвалидностью
  • Настроить сервера
  • Подготовить документы для GDPR, CCPA и так далее
  • Завести аккаунты в сторах, выложить приложения и общаться с review team

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

Считаем необходимые ресурсы - деньги и время

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

  • Мобильный разработчик - минимум по 1 человеку на разработку каждого мобильного клиента, минимум 2-4 человека (ниже напишу почему так)
  • Backend разработчик - минимум по 1 на API, админку и 1 на 2 лендинга
  • Frontend разработчик - на лендинги и админку. Для экономии средств я бы предложил использовать монолитное приложение, а не SPA, но кто-то может не согласиться
  • Тестировщик - хотя бы 1
  • Дизайнер - 1
  • UX - 1
  • Аналитик / продукт (при желании его еще можно нагрузить написанием документации, "всё равно он ничего не делает") - 1
  • Менеджер проекта - 1
  • Юрист - 1
  • DevOps - 1 (но можно заставить бекендеров деплоить и поддерживать код самим, всё равно этот проект простой /sarcasm mode off)

Также есть расходы на офисных сотрудников:

  • гендиректору (самому бесполезному человеку в компании, на которого всегда можно свалить все проблемы)
  • операционный и финансовый директора (иногда это один человек)
  • директор по маркетингу и маркетологи (иногда это один человек)
  • бухгалтер

Это только роли, про затраты мы поговорим потом.

У нас есть возможность сэкономить на разработке мобильных приложений - использовать не нативную разработку, а кросс-платформенные решения типа ReactNative или Flutter (кстати мы в Progress Engine сейчас это успешно практикуем для наших клиентов) и поэтому я указал диапазон от 2 (реакт-нативщиков) до 4 (2 iOS и 2 Android) человек.

Чтобы продукт получился достойного качества - у нас должны быть профессионалы в команде, а их зарплата обычно начинается от 120-150к, даже в регионах. Таким образом, команда из 13 человек (экономим - делаем на кросс-платформе) сжигает при зарплатах в 150к сумму почти 2 миллиона (1.95млн) рублей в месяц. Если они оформлены по ТК РФ, то эта сумма превращается примерно в 2 788 500 рублей. Обратите внимание - в месяц! И это только команда, которая отвечает за продакшн.

Офисная команда (она в любом случае есть - ведь наши фаундеры тоже должны получать зарплату) вам обойдётся примерно в 750к (по 200тр директора и 150 бухгалтер) или 1 072 500, если оформлять их по ТК РФ

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

Итого ФОТ составляет

2 700 000 - если не по ТК РФ

3 861 000 - если по ТК РФ

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

  • Налоги. Мы будем считать УСН, поскольку у нас всё-таки стартап, а это 6% от всех входящих платежей или минимум 2% если мы на УСН-15 и все поступления списываем в расход
  • Офис. Ну сейчас это не настолько актуально, но для команды он будет стоить в обычное время 200тр в месяц
  • Лицензии на ПО - тут можно сэкономить, я приведу немного ссылок в конце статьи. У нас в среднем выходит около 100тр в месяц
  • Деньги на развитие (или в девиденды) и в стабилизационный фонд - минимум 25%

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

Таким образом наша сумма увеличивается

3 975 000 - если не по ТК РФ

5 513 325 - если по ТК РФ

Обращаю особое внимание - это сумма в месяц!!!

Теперь давайте поговорим о времени реализации проекта.

Проект в среднем идёт 4-6 месяцев. Разумеется - это в идеальных условиях. А вот что может пойти не так:

  • Неготовность инфраструктуры на стороне заказчика
  • Отсутствие подписанных документов с поставщиками услуг
  • Некорректно работающие внешние сервисы
  • Задержка платежей
  • Болезнь разработчиков и фаундеров
  • Увольнение ключевых сотрудников, которым предложили в 5 раз больше зарплату в офисе Гугла в Берлине
  • Пандемия и другая неведомая х... фигня, которая вылезла вообще невовремя

Таким образом мы видим, что цена в 10-20 млн рублей вполне реальна. Может быть доверить разработку профессионалам?

Как снизить расходы?

  1. Для начала - выбрать самые ключевые функции, без которых ваш продукт не взлетит и идти продавать уже на этапе MVP. Делать проект этапами, выводить его как можно раньше на рынок
  2. Измерять всё, что только сможете - сколько пользователей из какого канала к вам пришло, делать гипотезы, проверять их постоянно
  3. Изучить вашего клиента, сделать кастдев, познакомиться с конкурентами
  4. Придти к профессионалам, например к нам в Progress Engine, чтобы помогли с разработкой. Компании аутсорсеры обычно уже умеют гибко управлять ресурсами, чтобы снизить стоимость проекта
  5. Вывести проект в юрисдикцию, в которой комфортные налоги (мы в Progress Engine вывозим компании в Польшу, где комфортные налоговые условия, возможность получить ВНЖ для сотрудников и их семей ну и конечно же это Европа, где есть гранты, работает Stripe и много других плюсов - чуть позже я напишу отдельную статью на эту тему, также мы готовим проект, который позволит выбрать другие страны для релокации)

Гранты для стартапов

Как и обещал - немного скидок для стартапов

Если знаете что-то ещё, то присылайте в комментарии и я обновлю список.

Итог

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

{ "author_name": "Alexey Poimtsev", "author_type": "self", "tags": [], "comments": 18, "likes": 9, "favorites": 19, "is_advertisement": false, "subsite_label": "dev", "id": 185109, "is_wide": true, "is_ugc": true, "date": "Wed, 09 Dec 2020 17:35:02 +0300", "is_special": false }
(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ { name: 'camera', url: `${cdnUrl}CameraCat`, text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', link: 'https://vc.ru/selectel/306690', num: 3 }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', num: 1 }, { name: 'cloud', url: `${cdnUrl}CloudCat`, text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', link: 'https://vc.ru/dev/294799-maneki-neko', num: 2 } ] let buttonCycle = document.querySelector('.button--cycle') let buttonChoose = document.querySelector('.button--choose') let buttonMobile = document.querySelector('.button--mobile') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) buttonChoose.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) buttonMobile.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { sendEvent(`Promo ${articles[currentArticleNumber].num} Right`, 'Click') if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?3' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } const sendEvent = (label, action = 'Click') => { const value = `SelectelDIY — loc: Footer — ${label} — ${action}`; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } }; function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите научим?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg?3`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
18 комментариев
Популярные
По порядку
Написать комментарий...

Комментарий удален по просьбе пользователя

0

Бэкендер для лендинга - это как строка "прокатило" в том анекдоте

5

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

Целью лендинга является конверсия лида в платящего клиента. Существует ряд инструментов, позволяющих повысить конверсию, в деталях можно узнать на базовых курсах по маркетингу, например в Qacademy - если надо, дам промокод, сможете открыть для себя много нового. Конечно же есть лендинги на Тильде-Виксе и аналогах, для разработки которых не требуется бекендер, фронтендер, дизайнер и маркетолог. Это статические промо-страницы, сделанные по модели AIDA, PMPHS или подобных(есть разные мнения о том, насколько эти модели рабочие), они не учитывают канал привлечения, геолокацию, время суток и другие факторы, влияющие на конверсию. За все лендинг-платформы не скажу, но что-то я не припомню возможности на Тильде проводить полноценное A/B тестирование и создавать динамические лендинги. Если все, что ваш несомненно богатый опыт говорит, так это то, что А/В не нужно, конверсия значения не имеет и что любой проект можно собрать на битриксе-вордпрессе-тильде, то кто я такой, чтобы спорить с гуру? ред.

0

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

–1

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

1

Комментарий удален по просьбе пользователя

0

Ну ок, разработчиков с лендингов мы выгоним. Кто ещё подпадает под позицию «прокатило»? Может быть стоит избавиться от мобильных разработчиков и поищем какие-то конструкторы мобильных приложений, помнится когда-то давно был my-apps или что-то подобное? Или выгоним бэкендеров, ведь можно пойти путём no-code?

0

Ну и наверно не самый тактичный вопрос, но я всё-таки его задам. Можете показать что-то из реализованных вами проектов и рассказать о составе команды, сроках реализации и (если не под NDA) рассказать о фактической стоимости? Возможно я сейчас общаюсь с экспертом отрасли, у которого я смогу набраться опыта и в дальнейшем избежать подобной реакции на свои публикации

0

Комментарий удален по просьбе пользователя

4

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

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

0

1. Я правильно понимаю, что вы считаете, что слабовидящие и люди с инвалидностью должны воздержаться от использования ИТ-продуктов? Или им стоит вначале избавиться от инвалидности и только потом брать в руки смартфоны?
2. Да - в ряде случаев лендинги можно сделать и на Tilda/Wix/Squarespace, но у них есть свои ограничения. Если готовы к ним - без проблем, ресурсы разработки можно перебросить на другие компоненты, а сюда прибавить косты на тильдоделов - это от 50тр за одностраничный сайт на одном языке

0

Комментарий удален по просьбе пользователя

0

Мне кажется или вы сейчас пытаетесь отказаться от своих слов, написанных в предыдущем комментарии?

0

И не стесняйтесь - перечислите ресурсы, от которых вы считаете необходимо отказаться. Я правильно понял, что начать стоит с фронтов и бекендеров? Всех выбрасываем или кого-то оставим?

0

Клиентам всегда говорите, что они платят за ваш офис и фаундеров? :) Дайте мне команду без офиса и фаундеров ...
Работа с возражениями по цене не доделана в общем.
Не дёшево всё не потому, что нельзя, а потому что клиент не может сделать дёшево. Ну нет у него сейчас команды, которая дёшево сделает, а команду собрать, настроить это уже много затратнее, за это клиент заплатит, но за фаундера? :)

0

"Дайте мне команду без офиса и фаундеров ..." - а собрать её папа карло должен?

0

Правильно. Об этом и надо говорить клиенту. Тут главное не запнуться на том, что фаундер собрал команду. Надо развивать - какую дополнительную ценность клиенту несёт фаундер каждый день :)

1
Читать все 18 комментариев
ПСБ запустил личный кабинет для предпринимателей. Там можно следить онлайн за каждым своим терминалом

Сервис предоставляется бесплатно.

Исследование: сотрудники хотели бы иметь комнату отдыха, бесплатный сок, а работодатели уже готовы покупать ЗОЖ-снеки

Онлайн-сервис доставки продуктов и товаров СберМаркет и исследовательское агентство Research Me спросили сотрудников, как они хотели бы питаться в офисе и что в нем видеть. В опросе приняли участие более 1500 работающих людей по всей России. Сервис также спросил работодателей – В2В-клиентов СберМаркета: что они покупают в офис, что точно никогда…

Сюрпризы от Яндекса, конкуренция со Сбером и новые осенние продукты

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

Как не попасть в карьерную ловушку тимлида: личный опыт

Кажется, что тимлиду просто некуда расти: дальше надо либо идти в менеджмент, либо наоборот, становиться узконаправленным разработчиком. По просьбе «Лаборатории Касперского» Евгений Мацюк, который прошел в компании неординарный путь, рассказал о своих карьерных развилках во время и после тимлидства, а также поделился опытом горизонтального роста.

Как OTUS стал платформой для самореализации. История преподавателя

Наш преподаватель, специалист по Data Science, решил поделиться своей историей преподавания. Он рассказал, как пришел в эту сферу, с какими трудностями столкнулся на пути к преподаванию и что ему помогает. А еще поделился советами, как поддерживать внимание студентов и сделать занятия полезными и увлекательными.

Анализ и прогноз рынка нефти

Ежемесячный анализ рынка нефти. Выпуск №10 от 21.10.2021г

Как AliExpress забрал у меня $300

24.08 - оплачиваю заказ.

NYSE 2021: IPO на общую сумму 465 млрд $

В 2021 году существует уже множество компаний, которые стали публичными либо через IPO, прямой листинг на биржу или SPAс (Special Purpose Acquisition Company) – альтернатива IPO для некоторых стартапов и новый способ привлечения капитала для инвесторов.

Власти Петербурга планируют ввести локдаун по «московскому сценарию» с 30 октября — «Фонтанка» Статьи редакции

О новых ограничениях могут объявить вечером 23 октября.

Потратил 400 тысяч рублей на накрутку поведенческих в Гугле. Подвожу итог

Всем привет. Это уже моя пятая статья про накрутку ПФ в поисковых системах Яндекс и Гугл. Довольно много о проверенных гипотезах было изложено в первой статье про Гугл, в этой же, я подведу небольшой итог по экспериментам за последние 8 месяцев.

Cloud CDN: что это такое, как устроено и кому нужно. Разбираем на примере бургеров

Cloud CDN — это сеть быстрой доставки статического контента в формате услуги облачного провайдера. Объяснить, как работает технология, проще всего на примере — сравнить Cloud CDN с популярным продуктом, который выглядит плюс-минус одинаково вне зависимости от того, заказали вы его в Москве, Питере или Нью-Йорке. Знакомьтесь: классический бургер.…

null