Короткий ответ: разрабатывайте только недостающее
Кастомное ПО для среднего бизнеса — это система, спроектированная под конкретный процесс компании: внутренний кабинет, клиентский портал, управление заявками, согласования, расчёты, расписание, документы, интеграции или ограниченный операционный контур. Его преимущество — точное соответствие рабочей модели. Его риск — компания становится владельцем продукта, который нужно постоянно поддерживать.
Разумная стратегия редко звучит как «написать всё с нуля». Сначала определяют, какие задачи уже надёжно закрывают CRM, ERP, система записи, бухгалтерия, документооборот или готовый SaaS. Кастомная разработка заполняет подтверждённый разрыв между ними, объединяет процесс или реализует действительно уникальное правило.
Кастомное ПО под ключ должно включать не только интерфейс и код. Нужны обследование, модель предметной области, архитектура, UX, интеграции, миграция данных, безопасность, тестирование, запуск, документация, мониторинг и поддержка. Если предложение заканчивается передачей сборки, продукт ещё не готов к эксплуатации.
Что считать кастомным ПО
Кастомной может быть вся система или только отдельный слой вокруг готовых продуктов.
- Внутренняя система объединяет работу сотрудников: задачи, статусы, документы, расчёты, роли и контроль исключений.
- Личный кабинет даёт клиенту или партнёру доступ к собственным данным, заявкам, документам и действиям.
- Админка позволяет уполномоченной команде управлять справочниками, контентом, пользователями и исключениями без изменения кода.
- Мини-ERP закрывает ограниченный операционный контур, но не должна называться ERP только потому, что в ней есть несколько справочников и отчётов.
- Интеграционный слой связывает CRM, учётную систему, сайт, телефонию, расписание и другие продукты.
- Кастомный модуль добавляет готовой платформе функцию, которой нет в стандартной конфигурации.
Название не определяет объём. «Простая админка» может управлять критичными правами и деньгами, а «корпоративная платформа» — состоять из нескольких безопасных форм и отчётов. Для оценки нужны роли, данные, правила и сценарии.
Что ПО не исправит само
Система не устранит конфликт владельцев процесса, не выберет единый справочник и не заставит пользователей доверять данным. Если два подразделения по-разному определяют завершённую заявку, программа только перенесёт спор в статусы, исключения и ручные комментарии.
До разработки компания должна принять минимальные бизнес-решения: кто владеет процессом, где источник истины, какие действия обязательны и как измеряется готовность результата.
Кому нужна кастомная разработка
Разработка оправдана, если
- процесс отличает компанию от типовой модели рынка;
- готовое решение требует множества ручных обходов и дублирования данных;
- сотрудники работают между несколькими продуктами без единого workflow;
- клиентам или партнёрам нужен управляемый личный кабинет;
- критичные правила нельзя надёжно реализовать настройками существующей платформы;
- интеграции должны учитывать собственную модель данных и исключения;
- компания готова назначить владельца продукта и бюджет на эксплуатацию.
Сначала стоит выбрать готовый продукт, если
- задача типовая: базовая CRM, бухгалтерия, склад, расписание или документооборот;
- процесс ещё не стабилен и меняется после каждой встречи;
- бизнес не может выделить владельца и пользователей для приёмки;
- бюджет учитывает только первый релиз и не учитывает поддержку;
- требования в основном повторяют функции зрелого SaaS;
- единственная причина разработки — нежелание менять привычный процесс;
- нет ясного преимущества собственного решения перед настройкой платформы.
Иногда правильный ответ — купить готовый продукт и разработать только интеграцию или интерфейс для уникального участка. Это сокращает кодовую базу, которую компании придётся поддерживать годами.
Build, buy или гибрид
| Подход | Когда подходит | Сильная сторона | Основной риск |
|---|---|---|---|
| Готовый SaaS | Процесс близок к отраслевому стандарту | Быстрый запуск и готовая эксплуатация | Ограничения продукта и зависимость от поставщика |
| Настройка платформы | Нужны формы, роли, workflow и отчёты без уникального ядра | Меньше разработки при заметной адаптации | Конфигурация становится сложной и непрозрачной |
| Кастомный модуль | Готовой системе не хватает одной важной функции | Сохраняется зрелая платформа, код ограничен | Обновления платформы могут менять контракт расширения |
| Интеграционный слой | Функции уже есть, но данные и действия разорваны | Не нужно повторно создавать существующие возможности | Ошибки обмена требуют мониторинга и восстановления |
| Полностью кастомная система | Уникальная модель является ядром бизнеса | Максимальный контроль над продуктом и развитием | Высокая ответственность за весь жизненный цикл |
| Гибрид | Часть процесса типовая, часть уникальная | Баланс скорости, контроля и стоимости владения | Нужны чёткие границы между компонентами |
Сравнивайте варианты по одному горизонту: лицензии, разработка, миграция, интеграции, изменения, поддержка, безопасность и выход из решения. Дешёвый первый релиз может оказаться дорогим, если каждое обновление требует ручной синхронизации и участия одного специалиста.
Что внедрять в первом релизе
Первый релиз должен замыкать один полезный процесс от входа до результата. Набор разрозненных экранов не создаёт работающей системы.
Базовый workflow
Определите событие старта, роли, состояния, обязательные действия, исключения и завершение. Пользователь должен понимать, что находится в работе, что блокирует следующий шаг и кто отвечает.
Роли и доступ
Права проектируют по рабочим обязанностям и чувствительности данных. «Администратор видит всё» не должен быть способом обойти модель доступа. Отдельно фиксируют действия, требующие второго подтверждения или аудита.
Данные и справочники
Для каждой сущности определяют идентификатор, обязательные поля, источник истины, жизненный цикл и правила архивирования. Справочники должны иметь владельцев и контролируемое изменение.
Административный контур
Админка нужна для разрешённых операционных задач: управлять пользователями, справочниками, очередями, исключениями и настройками. Она не должна становиться скрытым набором опасных кнопок без журнала действий.
Интеграции
Первый релиз подключает только системы, без которых workflow не завершается. Для каждой интеграции нужны контракт, идемпотентность, обработка ошибок, мониторинг и сверка.
Наблюдаемость и поддержка
Команда должна видеть ошибки, задержки и действия пользователей. До запуска определяют канал поддержки, приоритеты, владельцев и порядок восстановления.
План разработки внутренней системы
1. Зафиксировать бизнес-результат
Опишите проблему через наблюдаемое состояние. Не «нужна мини-ERP», а «заказ проходит согласование, исполнение и закрытие без повторного ввода, с одним ответственным и историей решений».
Результат этапа: цель, границы, владелец продукта и критерии успеха.
2. Разобрать текущий процесс
Пройдите реальные случаи, включая возврат, ошибку, отсутствие данных и ручное исключение. Зафиксируйте системы, таблицы, документы, роли и теневые операции. Не автоматизируйте шаг только потому, что он существует сегодня.
Результат этапа: карта текущего процесса и список подтверждённых проблем.
3. Провести build-vs-buy анализ
Сравните готовые продукты, настройку, интеграцию и собственный модуль. Для каждого варианта укажите ограничения, стоимость владения, миграцию, зависимость от поставщика и сценарий выхода.
Результат этапа: обоснованная граница между готовыми и кастомными компонентами.
4. Спроектировать целевой workflow и доменную модель
Определите сущности, состояния, события, роли, правила и источники истины. Термины должны одинаково пониматься бизнесом, дизайном, разработкой и тестированием.
Результат этапа: модель предметной области и сквозные пользовательские сценарии.
5. Ограничить MVP
Оставьте один законченный поток и минимальный административный контур. Отложите универсальные конструкторы, редкие отчёты, гибкую настройку всего и автоматизацию неподтверждённых исключений.
Результат этапа: приоритетный backlog с явным не входит.
6. Спроектировать архитектуру и безопасность
Выберите компоненты, границы модулей, хранение данных, интеграции, резервное копирование, мониторинг и развёртывание. Требования безопасности фиксируют до разработки: модель угроз, права, аудит, секреты, зависимости и обновления.
NIST Secure Software Development Framework предлагает включать безопасность в подготовку, защиту компонентов, производство защищённого ПО и реакцию на уязвимости. OWASP ASVS можно использовать как основу проверяемых требований к безопасности веб-приложения, а не как формальную отметку после релиза.
Результат этапа: архитектурное решение, модель доступа и критерии технической готовности.
7. Создать прототип и проверить с пользователями
Прототипируйте самые рискованные участки: массовые операции, сложные формы, согласования, ошибки и мобильные сценарии. Пользовательская проверка нужна до того, как интерфейс станет дорогим кодом.
Результат этапа: подтверждённый workflow и список исправлений до реализации.
8. Поставлять вертикальными срезами
Каждая итерация должна проходить от интерфейса через правила и данные до интеграции и наблюдаемости. Демонстрация статичного экрана не доказывает готовность функции.
Результат этапа: регулярно проверяемые части продукта, а не один большой финальный запуск.
9. Подготовить миграцию и запуск
Очистите данные, выполните тестовый перенос, сверку и репетицию отката. Обучите пользователей по ролям, назначьте поддержку и запустите ограниченную группу. Если заменяется критичная старая система, поэтапный переход обычно снижает риск по сравнению с одномоментным переписыванием.
Результат этапа: проверенный план запуска, отката и стабилизации.
10. Передать продукт в эксплуатацию
Зафиксируйте владельцев, SLA, мониторинг, резервные копии, обновления зависимостей, обработку уязвимостей и процесс изменений. Продуктовый backlog после запуска должен управляться ценностью и риском, а не громкостью запросов.
Результат этапа: работающая система с документацией и ответственностью.
Workflow изменения после запуска
- Пользователь описывает проблему и ожидаемый результат, а не готовую кнопку.
- Владелец продукта проверяет частоту, влияние и соответствие границам системы.
- Команда анализирует данные, роли, интеграции и риски безопасности.
- Решение сравнивается с изменением процесса или настройкой готового компонента.
- Требование получает критерии приёмки и план обратной совместимости.
- Изменение проходит разработку, тесты, проверку доступа и миграции.
- Релиз выполняется с мониторингом и возможностью отката.
- После запуска проверяется фактическое использование и влияние на процесс.
Такой workflow защищает продукт от превращения в набор локальных исключений. Не каждый запрос пользователя должен становиться функцией; иногда достаточно изменить инструкцию, справочник или распределение ответственности.
Ошибки кастомного ПО и как их предотвратить
| Ошибка | Последствие | Антиошибка |
|---|---|---|
| Начать с полного ТЗ на год | Требования устаревают до проверки пользователями | Разбить продукт на сквозные релизы с регулярной приёмкой |
| Копировать старую систему | В новый код переносятся ограничения и лишние шаги | Проектировать целевой процесс, сохраняя только нужное поведение |
| Называть всё MVP | Первый релиз разрастается без границ | Зафиксировать один outcome и список исключённого |
| Делать универсальную админку | Срок уходит на конструктор вместо рабочего процесса | Добавлять только подтверждённые операционные настройки |
| Откладывать безопасность | Права и данные приходится переделывать после релиза | Включить требования и проверки в архитектуру и Definition of Done |
| Мигрировать грязные данные | Новая система стартует с дублей и недоверием | Очистить, протестировать и сверить перенос |
| Принимать по демонстрации | Штатный экран скрывает ошибки процесса | Принимать по сквозным и аварийным сценариям |
| Не назначить владельца продукта | Приоритеты определяются случайными запросами | Дать одному владельцу полномочия и ответственность за backlog |
| Зависеть от одного разработчика | Поддержка и релизы останавливаются | Передать код, окружения, документацию и знания команде |
| Не планировать эксплуатацию | Уязвимости и сбои накапливаются после гарантии | Заранее определить поддержку, мониторинг и обновления |
| Переписать всё одновременно | Запуск становится единственной рискованной точкой | Заменять модули постепенно, если архитектура позволяет |
Из чего складывается стоимость кастомного ПО
Цена кастомного ПО состоит из создания и владения. Оценка только экранов почти всегда неполна.
На стоимость первого релиза влияют:
- количество ролей, процессов, сущностей и исключений;
- сложность бизнес-правил и расчётов;
- личный кабинет, админка и адаптивные интерфейсы;
- интеграции и качество API внешних систем;
- миграция, очистка и сверка данных;
- требования к безопасности, аудиту и доступности;
- отчётность, экспорт и массовые операции;
- автоматизированные тесты и объём приёмки;
- инфраструктура, развёртывание и мониторинг;
- обучение, запуск и период стабилизации.
После запуска остаются:
- хостинг, базы данных, хранилища и внешние сервисы;
- мониторинг, резервные копии и проверка восстановления;
- поддержка пользователей и обработка инцидентов;
- исправления, обновления зависимостей и уязвимостей;
- изменения интеграций и API поставщиков;
- развитие продукта и адаптация к новым процессам.
Сравнивайте подрядчиков не по одной итоговой сумме, а по составу релиза, допущениям, качеству команды и прогнозируемой стоимости владения. Диапазон без описания границ не помогает принять решение.
Как выбрать подрядчика по кастомной разработке
Задайте вопросы до договора:
- Как вы проверите, что кастомная разработка нужна, а не заменяет готовый продукт?
- Кто отвечает за продуктовые решения и приоритеты?
- Как будет определён и защищён объём MVP?
- Как вы моделируете процесс, роли и данные?
- Что не входит в первый релиз и почему?
- Как проходит пользовательская и техническая приёмка?
- Какие требования безопасности войдут в Definition of Done?
- Как выполняются миграция, сверка и откат?
- Как устроены окружения, CI/CD, резервные копии и мониторинг?
- Какие тесты останутся у заказчика?
- Кто владеет репозиторием, инфраструктурой, доменами и аккаунтами?
- Как передаются документация и знания другой команде?
- Что входит в гарантию, поддержку и развитие?
- Как оцениваются изменения после запуска?
- Как система сможет заменить отдельный модуль без полного переписывания?
Подрядчик должен уметь отказаться от лишнего модуля и предложить готовое решение там, где оно лучше. Команда, заинтересованная только в объёме разработки, создаёт конфликт с целью заказчика.
Чек-лист готовности
Бизнес и продукт
- Назначен владелец продукта с полномочиями по приоритетам.
- Определён один сквозной результат первого релиза.
- Проведено сравнение build, buy и гибридного варианта.
- Зафиксировано, что не входит в MVP.
- Пользователи доступны для прототипов и приёмки.
Процесс и данные
- Согласованы роли, состояния и исключения.
- Для сущностей определены источники истины.
- Справочники имеют владельцев.
- Подготовлены очистка, тестовая миграция и сверка.
- Интеграции имеют контракт и обработку ошибок.
Техника и безопасность
- Архитектура поддерживает поэтапные релизы.
- Права доступа следуют рабочим обязанностям.
- Критичные действия журналируются.
- Секреты хранятся вне кода и имеют ротацию.
- Зависимости и уязвимости контролируются.
- Резервные копии и восстановление проверяются.
Запуск и владение
- Приёмка включает штатные и аварийные сценарии.
- Есть план ограниченного запуска и отката.
- Назначены поддержка, SLA и владельцы инцидентов.
- Репозиторий и инфраструктура доступны заказчику.
- Переданы документация, тесты и runbook.
- Бюджет учитывает эксплуатацию после релиза.
Мини-ТЗ на первый релиз
| Раздел | Что зафиксировать |
|---|---|
| Проблема | Наблюдаемая потеря времени, данных или управляемости |
| Результат | Какое состояние должно появиться после релиза |
| Пользователи | Роли, задачи, частота и рабочий контекст |
| Workflow | Старт, этапы, исключения и завершение |
| Данные | Сущности, поля, источники истины и хранение |
| Интерфейсы | Кабинет, админка и необходимые массовые операции |
| Интеграции | Системы, события, ошибки и владельцы |
| Доступ | Роли, чувствительные действия и аудит |
| Миграция | Источники, очистка, тестовый перенос и сверка |
| Приёмка | Сквозные, пограничные и аварийные сценарии |
| Эксплуатация | Мониторинг, резервные копии, SLA и обновления |
| Границы | Что явно не входит в первый релиз |
Мини-ТЗ не заменяет discovery, но позволяет сравнивать предложения по одному результату, а не по разным представлениям о «личном кабинете» или «мини-ERP».
Пример Estomed: не строить собственную систему вместо каждой готовой
В кейсе Estomed роли распределены между сайтом медицинского центра, телефонией, Altegio и amoCRM. Сайт объясняет услуги, телефония поддерживает разговор, Altegio ведёт расписание специалистов и визитов, а amoCRM хранит контекст обращения, ответственного и следующее действие.
Этот пример полезен для build-vs-buy решения: профильные задачи оставлены в подходящих готовых системах, а ценность создаётся связным процессом и корректными границами. Кастомный слой имеет смысл только там, где подтверждённый разрыв нельзя закрыть настройкой или интеграцией без постоянных обходов.
Другие проекты доступны в кейcах Амобит, а продуктовые модули и варианты расширения — в разделе решений.
FAQ
Как понять, нужно ли кастомное ПО?
Опишите процесс и сравните готовые продукты на реальных сценариях. Если уникальная часть создаёт существенную ценность, а обходы в готовых системах постоянны и дороги, кастомный модуль может быть оправдан. Если задача типовая, сначала рассматривайте настройку или интеграцию.
Как разработать внутреннюю систему и не превратить её в долгострой?
Назначить владельца продукта, выбрать один сквозной workflow, ограничить MVP и поставлять вертикальными срезами. Каждая итерация должна давать проверяемый пользовательский результат, включая данные, права и интеграции.
Что выбрать: личный кабинет, админку или мини-ERP?
Это разные интерфейсы и уровни системы. Личный кабинет обслуживает клиента или партнёра, админка — управляет операционными настройками, мини-ERP — закрывает ограниченный внутренний контур. Выбор определяется ролями и процессом, а не названием проекта.
Сколько стоит кастомное ПО?
Стоимость зависит от ролей, workflow, данных, интеграций, миграции, безопасности и требований эксплуатации. Отдельно считайте инфраструктуру и поддержку после запуска. Корректная оценка появляется после discovery и определения границ первого релиза.
Нужно ли писать систему с нуля?
Обычно нет. Повторно используйте зрелые сервисы для типовых задач, а собственный код ограничьте уникальным процессом и интеграционными границами. Это уменьшает объём, который придётся тестировать и поддерживать.
Как принимать кастомную разработку?
По заранее согласованным сквозным сценариям: обычный путь, ошибки, права, интеграции, миграция и восстановление. Дополнительно принимаются код, тесты, документация, инфраструктура, мониторинг и владельческие доступы.
Кому принадлежат код и доступы?
Это фиксируется договором. Заказчик должен понимать права на исходный код, сторонние компоненты, дизайн и документацию. Репозиторий, инфраструктура, домены и сервисные аккаунты не должны оставаться доступными только подрядчику.
Что делать со старой системой?
Не выключать её одним движением без проверки. Определите данные и модули для поэтапного перехода, совместимость, период параллельной работы, сверку и откат. Полное одномоментное переписывание увеличивает риск, если старая система критична и плохо документирована.
Источники
Обсудить кастомное ПО с Амобит
Подготовьте схему текущего процесса, список систем, примеры ручных обходов и один приоритетный результат. Команда Амобит проведёт аудит процесса и стека, сравнит готовые и кастомные варианты и предложит проверяемую границу первого релиза.
