Как я создал калькулятор стоимости программного обеспечения
26 апреля 2023 г.Как технический директор небольшой компании по разработке программного обеспечения, создающей индивидуальные решения для Интернета вещей, я помогаю своим коллегам оценивать затраты на разработку приложений при подготовке сметы проектов для наших потенциальных клиентов.
Поскольку мы в основном работаем со стартапами, наши клиенты очень трепетно относятся к своему бюджету.
В идеале каждый проект по разработке программного обеспечения следует начинать с этапа исследования и на раннем этапе изучать функциональные и нефункциональные требования к продукту. В результате вы можете определить набор функций продукта, от функциональных прототипов до MVP и полноценного продукта, и получить реалистичную и точную оценку.
В идеале, но это не относится к стартапам, работающим в условиях ограниченного бюджета, поскольку открытие также стоит денег.*
Некоторые из наших клиентов также могут иметь нереалистичные ожидания в отношении стоимости разработки технологического решения. Мы все слышали анекдоты о стартапах, которые хотят создать клон Facebook за 10 000 долларов, и самое печальное, что некоторые люди действительно думают, что это возможно.
Поэтому я обдумывал идею свести к минимуму работу по оценке с нашей стороны, давая клиентам приблизительную цену за воплощение их технологической идеи в жизнь еще до того, как они свяжутся с моей командой. Проверка реальностью, если хотите. 🙂
Вот так в моей голове сформировалась концепция калькулятора стоимости программного обеспечения.
Компьютерщик в душе и мобильный разработчик по профессии, я решил убить двух зайцев одним выстрелом. Помимо целей, упомянутых выше, я также проверил свои знания Flutter. Я разработал кроссплатформенное приложение для расчета стоимости программного обеспечения, которое без проблем работает на устройствах iOS и Android и в браузерах, не прибегая к JavaScript, который в чистом виде вызывает у меня ужас.
Flutter оказался достаточно стабильным и эффективным для этой задачи. Я даже подумываю построить физический калькулятор на базе одноплатного компьютера в качестве рождественского подарка нашим постоянным клиентам. Кроме того, коллеги-разработчики могут использовать калькулятор для оценки стоимости разработки конкретного технологического решения (или его части!) вне сферы их компетенции.
В любом случае, в этой статье я подробно описываю свой опыт создания решения — и проблемы, с которыми я столкнулся на этом пути.
Итак, приступим.
Как я реализовал идею калькулятора стоимости разработки программного обеспечения
Хорошо, хорошо, я знаю, о чем вы думаете.
<цитата>*Разработка программного решения, будь то небольшой интернет-магазин или полноценная операционная система для организации криотерапевтических аппаратов — это долгий извилистый путь с сотнями возможных поворотов и ловушек, которых следует избегать.*
И если вы не подготовили исчерпывающую спецификацию требований к программному обеспечению (SRS), в которой перечислены набор функций продукта, требования к пользовательскому интерфейсу/UX, оптимальный технологический стек, целевая аудитория, положения о соответствии и дюжина других вопросов, невозможно указать цену. ваше приложение.
Это были именно мои опасения. Поэтому я решил проверить, как другие инженеры-программисты подошли к проблеме точности оценки до меня.
Протестировав несколько калькуляторов стоимости программного обеспечения, я выявил несколько моментов, о которых следует помнить при создании своего решения:
- Калькуляторы конкурентов полностью игнорируют потребности нетехнических пользователей. Например, откуда мне знать, какие языки программирования будет использовать мое приложение, если я новичок в программировании? ? Чтобы разобраться в этом вопросе, я написал подробное руководство по использованию моего калькулятора на соответствующей целевой странице.
2. Некоторые решения оценивают стоимость создания группы разработчиков программного обеспечения, а не создания программного продукта. Если вы раньше не работали с компаниями, занимающимися разработкой программного обеспечения, или сами не руководили ими, вы, вероятно, не знаете внутренностей. разработки программного обеспечения, включая оптимальный состав команды разработчиков программного обеспечения и роли в ней. Вот почему я сосредоточился на функциях программного обеспечения, а не на обязанностях разработчика, и внедрил модификатор смешанной ставки, чтобы упростить расчеты.
3. Большинство калькуляторов дают оценку только в обмен на рабочий адрес электронной почты. Я инженер-программист, а не маркетолог. 🙂 Я хочу решать проблемы компаний, а не забрасывать их письмами с рекламой наших услуг; если им понадобится помощь, они все равно напишут нам! Вот почему мой калькулятор не собирает никаких данных — и не требует от вас заполнения каких-либо форм перед получением оценки. Мы знаем только, что кто-то зашел на целевую страницу калькулятора стоимости программного обеспечения, поставил все галочки и получил оценку.
Как мой калькулятор оценивает стоимость разработки программного обеспечения на заказ
Мой калькулятор учитывает целевую платформу приложения и ожидаемые функции для получения точной оценки стоимости программного обеспечения. Затем внедряются различные модификаторы для снижения или увеличения стоимости заказного программного обеспечения в зависимости от стадии проекта и особенностей отрасли. На последнем этапе усилия по разработке программного обеспечения, выраженные в человеко-часах, умножаются на ставку смешанной ИТ-команды.
Для разработки механизма оценки я изучил более 20 проектов, реализованных моей компанией, и десяток проектов из портфолио наших партнеров. Эти проекты различались по размеру и сложности: от приложений для бронирования мероприятий до индивидуальных решений для умного дома. Некоторые технологии и решения, такие как искусственный интеллект и AR/VR, намеренно отсутствуют в калькуляторе, потому что я редко создаю такие приложения. Таким образом, калькулятор отражает основной опыт моей компании, и я могу поручиться за точность его оценок.
Вот основные факторы стоимости, которые учитывает калькулятор:
* Целевые платформы. Приложение, созданное для определенной платформы (iOS, Android, Интернет или кросс-платформенное решение на основе Flutter) имеет минимальный жизнеспособный набор функций, в результате чего усилия по разработке программного обеспечения составляют X человеко-часов. Если мы создаем многоплатформенное решение, мы должны умножить количество часов на количество целевых платформ.
* Цена функции. Каждая функция приложения —, например, профили конечных пользователей или администраторов — имеют минимальную метку времени Y человеко-часов. . Усилия увеличиваются пропорционально, когда вы добавляете подфункции для улучшения функциональности приложения.
* Модификаторы. Отрасли и функции программного обеспечения имеют множители сложности. Например, я увеличил количество часов на 20% для ИТ-проектов в сфере здравоохранения, чтобы решить возможные проблемы разработки, такие как интеграция с существующими медицинскими системами, соответствие требованиям и т. д. Чтобы рассчитать модификаторы сложности, я разделил сумму функций программного обеспечения на общее количество часов. считать. Постоянный модификатор добавляет к оценке показатели управления проектом и обеспечения качества. После оценки функций приложения и предполагаемых платформ число умножается на 1,3, увеличивая количество часов на 30%. Наконец, есть модификатор стадии проекта, который оценивает стоимость разработки программного обеспечения на основе готовности продукта. Если пользователь хочет только спроектировать интерфейс приложения, окончательная оценка умножается на 0,16. Для функциональных прототипов модификатор равен 0,25. Минимально жизнеспособный продукт (MVP) версии программного решения, содержащего достаточно функций для выхода на рынок, имеет модификатор 0,5-0,75. Наконец, усилия по разработке в человеко-часах умножаются на 1 для готовых к продаже продуктов.
* Почасовая ставка разработчика. Стоимость создания индивидуального программного решения зависит от того, кто его создает. Почасовые ставки инженера-программиста сильно различаются в зависимости от специализации человека, опыта и страны проживания. Согласно недавнему опросу Accelerance , эти ставки могут варьироваться от всего лишь 25 долларов США за человеко-час для мобильных разработчиков в Южной Азии до 172 долларов США в час (и больше!) для старших инженеров-программистов из Северной Америки. При разработке своего калькулятора стоимости программного обеспечения я запрограммировал его так, чтобы он умножал итоговое количество часов на смешанную ставку команды разработчиков программного обеспечения, дислоцированной в Восточной Европе, где работает моя компания. В настоящее время она колеблется в пределах 41,6 доллара США за человеко-час.
Ниже вы найдете формулу, которая суммирует упомянутые выше факторы для получения оценки:
Позвольте мне написать это для вас:
- Если функция не связана с мобильными устройствами и не требует реализации на нескольких платформах, она будет помечена как featurePrice.
2. avgFeatureComplexityMult увеличивает оценку на основе набора технологий проекта и целевой отрасли.
3. productStageMultiplier обозначает желаемую стадию продукта, т. е. согласование дизайна, прототип, MVP или готовое к продаже решение.
4. Часы PM/QA обязательны для всех проектов, если только клиент не занимается частью управления и обеспечения качества. Однако в этом случае ни один разработчик не может гарантировать, что ошибки не проявятся в коде. Небольшое пояснение: некоторые компании ожидают, что их поставщик будет производить код без ошибок с первой попытки, и искренне недоумевают, зачем им нужен контроль качества.
Зрелые клиенты, напротив, имеют адекватные ожидания в отношении качества тестового кода и заранее инвестируют в контроль качества, чтобы избежать ошибок после запуска.
Вопрос в том, насколько точны эти оценки?
<цитата>Учитывая мой опыт работы в качестве технического директора и старшего разработчика Android, калькулятор стоимости программного обеспечения обеспечивает точную оценку для всех простых проектов и проектов средней сложности.
Для более сложных задач, связанных с инновационными технологиями, такими как Интернет вещей, калькулятор может снизить окончательную оценку на 10-13%. В таких случаях мы пересматриваем цену после принятия решения о технологическом стеке и наборе функций решения. Изменения также необходимы, если ваша ИТ-система включает в себя функции и технологии, которые отсутствуют в калькуляторе, такие как искусственный интеллект и интеграция со сторонними службами.
Как оценить свой проект с помощью моего калькулятора стоимости программного обеспечения
Посетитель веб-сайта должен заполнить информацию о следующих характеристиках приложения:
- Тип решения. В этом разделе пользователи могут выбрать одну из шести категорий: Интернет вещей, электронная коммерция, образование, путешествия, образование или другое.
- Стадия проекта. Как я уже говорил ранее, модификатор стадии проекта увеличивает или уменьшает стоимость разработки программного обеспечения в зависимости от готовности программного продукта. Разница между оценками для различных этапов продукта также может дать покупателю представление о том, сколько ему может стоить дальнейшее развитие своей концепции, улучшение решения после его выпуска.
- Целевые платформы. Текущая версия калькулятора позволяет пользователям выбирать между собственным стеком технологий разработки мобильных приложений (iOS, Android), кроссплатформенными приложениями, созданными с помощью Flutter, а также веб-приложениями и приложениями для планшетов. . Я выделил версии мобильных приложений для планшетов в отдельную категорию из-за сложной настройки пользовательских интерфейсов.
- Дизайн UI/UX. В зависимости от ожидаемой сложности ресурсов дизайна модификатор UI/UX добавляет к оценке определенное количество человеко-часов. Я включил функцию «Анимация» в список для клиентов, которые хотят создать плавные переходы между экранами приложения в функциональных прототипах. Смета будет уменьшена, если пользователь захочет предоставить свои собственные дизайнерские ресурсы.
- Роли пользователей. Калькулятор стоимости программного обеспечения содержит раздел, в котором перечислены предполагаемые роли пользователей приложения. Они варьируются от конечных пользователей до многоуровневых программных решений, удовлетворяющих потребности сотрудников компании, менеджеров приложений и клиентов.
- Поддерживаемые языки. Калькулятор стоимости разработки программного обеспечения увеличит оценку для многоязычных веб-сайтов и приложений.
- Варианты входа. Здесь я выбрал три наиболее часто используемых механизма входа: через учетную запись в социальной сети, адрес электронной почты или одноразовый пароль (OTP).
- Поддержка клиентов. Потенциальные клиенты, желающие поддерживать связь со своими клиентами, могут выбрать один или несколько доступных вариантов поддержки клиентов, различающихся по сложности, от контактной формы до интегрированной системы продажи билетов. ли>
- Стратегия монетизации. В этом блоке пользователи могут выбирать между разовыми покупками и подписками или отказаться от каких-либо механизмов монетизации.
- Типы контента. Я перечислил текст, фотографии, видео и аудиофайлы как наиболее распространенные типы контента, доступные в программных решениях, а возможности потоковой передачи добавил в качестве отдельной функции. К смете можно добавить несколько вариантов.
- Живой чат и аудио/видеозвонки в службу поддержки. Как часть функции поддержки клиентов, о которой говорилось ранее, живые чаты могут позволить нескольким пользователям присоединяться к беседе и обмениваться файлами. Функции аудио- и видеозвонков оплачиваются отдельно.
- Геолокация. При создании программного калькулятора я настроил карты с булавками и карты с маршрутизацией в качестве основных параметров геолокации.
- Бронирование мероприятий. Оценка будет увеличиваться в зависимости от того, будет ли ваше приложение поддерживать функцию бронирования мероприятий и кто может ее выполнять (например, администраторы или конечные пользователи).
- Привлечение клиентов. В качестве основных механизмов удержания пользователей я выбрал push-уведомления и прямые ссылки.
- Удовлетворение и удовлетворение. Калькулятор позволяет пользователям выбирать только между лайками и оценками. Пользователи также могут добавлять функции геймификации, такие как индикаторы выполнения и списки лидеров.
- Аналитика. Калькулятор предлагает включить базовые или расширенные возможности аналитики в набор функций приложения. Обратите внимание, что мы не говорим здесь об аналитике на основе ИИ.
- Соответствие. Если пользовательское приложение должно соответствовать определенным правилам, таким как HIPAA, GDPR или PCI/DSS, наша оценка обязательно возрастет.
- Управление контентом. Наконец, калькулятор стоимости программного обеспечения предлагает пользователям уточнить свои потребности в управлении контентом, от базовых возможностей создания контента до надлежащей CMS и сочетания CMS и визуализации данных.
Подводя итоги
Ура, мы сделали это!
Теперь, когда у пользователя есть приблизительная оценка, он может скорректировать ее, вручную удалив или добавив функции программного обеспечения, указав стадию продукта и т. д.
При написании этой статьи я также заполнил форму, выбрав характеристики специализированного медицинского IoT-продукта, соответствующего HIPAA, готового к выпуску на рынок. Калькулятор дал мне оценку в 3390,4 человеко-часа, или 140 992 доллара США, если умножить на смешанную ставку команды (41,6 доллара США).
Увеличим оценку на 10 %, учитывая возможные расхождения, связанные с типом проекта (IoT) и целевой отраслью (здравоохранение), и мы получим 150 000 долларов США.
Реалистична ли это цена индивидуального решения для Интернета вещей?
Пакет программного обеспечения для криокамер, о котором я упоминал в самом начале статьи, помогает нашему клиенту управлять подключенными криоустройствами, установленными в десятках фитнес-центров и спа-салонов по всей территории США. Хотя проект все еще находится в разработке и стоит более 1 000 000 долларов США, два лет назад, когда программное решение превысило отметку в 3000 человеко-часов, оно обладало примерно такой же функциональностью, как и воображаемый проект, который я пытался оценить с помощью калькулятора.
В целом, я доволен результатом: я успешно протестировал Flutter, убедившись в его надежных возможностях кроссплатформенной разработки, свел к минимуму работу по оценке со стороны моей команды и позволил нашим потенциальным клиентам получить реалистичные приблизительные оценки своих программных проектов до обращение в компанию по разработке программного обеспечения.
Но так как у меня могут быть всякие предубеждения — ведь это я написал код! — Я призываю вас попробовать калькулятор и поделиться своими мыслями о его функциональности и точности!
Итак, нажмите на раздел комментариев ниже! Мы очень ценим ваши отзывы!
Оригинал