Разработка фичи

Разработка фичи в существующий продукт 2026: критерии и передача

Гайд для CTO: разработка фичи в существующий продукт под ключ. Что входит в результат, как формулировать критерии приёмки, инструкция по эксплуатации, передача без привязки к подрядчику, SLA.

Обновлено: 15 мая 2026 г.

Что описывает эта статья, а что нет. Разработка фичи в существующий продукт за 6-12 недель — экспорт в новом формате, новый платёжный метод, дашборд, отчёт, интеграция с одним сервисом. Это не про целые модули или новые продукты (для них см. разработку под ключ — добавление модуля к зрелому продукту), не про отраслевые решения целиком (см. вертикальные решения) и не про MVP с нуля.

Разработка под ключ — это контракт на результат. Не на «попробуем», не на «давайте сделаем что-нибудь», а на конкретный продукт, который проходит формальную приёмку и передаётся в in-house команду клиента. Качество проекта под ключ определяется не процессом, а финальным результатом — насколько он реально работает в production, насколько in-house команда может с ним самостоятельно справляться, насколько передача снимает зависимость от вендора. Эта статья — практическое руководство для CTO, который принимает фичу под ключ или модуль. Что должно быть в результате, как проверять критерии приёмки, что должно быть в инструкции по эксплуатации, как должна проходить передача, какие SLA после сдачи.

Что входит в результат под ключ

Стандартный набор по умолчанию, фиксируется в контракте.

1. Production-ready код в репозитории клиента. GitHub, GitLab, Bitbucket — где у клиента. Не у вендора. С момента оплаты весь код в собственности клиента, доступен для всех его процессов разработки. Соответствует стилю и архитектурным паттернам клиента — мы изучаем существующие модули, ADR, общаемся с tech lead клиента до старта разработки.

2. Тесты. Unit-тесты с покрытием 80%+ для критичной логики. Integration-тесты для всех внешних интеграций. End-to-end тесты для критичных бизнес-сценариев. Все тесты проходят в CI клиента, не в отдельной среде вендора.

3. Документация. README с инструкцией по локальному запуску. Архитектурное описание с диаграммами и схемами данных. API-спецификация (OpenAPI 3.x или GraphQL schema). Deployment guide для всех окружений.

4. Инструкция по эксплуатации. Операционная документация на 10 разделов — отдельный документ, см. ниже.

5. Развёртывание. Через CI/CD-пайплайны клиента на dev / staging / prod-окружениях. Инфраструктура как код (Terraform, Helm chart, Ansible) включается в репозиторий.

6. Передача. 30-60 дней процесса передачи в in-house команду — см. отдельный раздел.

7. Опциональный SLA-период. 1-3 месяца с гарантированным временем реакции.

Критерии приёмки: как формулировать

Критерии приёмки — главный документ, по которому проходит финальная приёмка. Все споры о том, что входит в проект, а что нет, решаются ссылкой на критерии приёмки.

Хорошие критерии приёмки — это:

  • Измеримые. Можно объективно проверить выполнение. Не «работает быстро», а «P95 < 200ms на 10k записей в БД».
  • Конкретные. Не «обеспечивает безопасность», а «использует bcrypt с cost factor 12 для хеширования паролей; токены подписываются HS512; refresh tokens хранятся в Redis с TTL 30 дней».
  • Привязанные к функциям. Не общая «производительность системы», а «производительность операции экспорта CSV».
  • Явно перечисляют edge cases. Что делать при отсутствии данных, при ошибке внешнего сервиса, при таймауте.

Стандартная структура — Given/When/Then:

Given пользователь авторизован с ролью admin, When он нажимает «Экспорт пользователей в CSV» с фильтрами по статусу и дате регистрации, Then файл генерируется за < 5 секунд для 100k записей, в кодировке UTF-8 BOM, с заголовками на русском языке, скачивается через одноразовую ссылку, действующую 24 часа, по истечении ссылка возвращает 404; событие экспорта записывается в audit log с указанием user_id и параметров фильтра.

Сколько критериев в типовом проекте. На фичу под ключ средней сложности (6-12 недель) — 30-80 критериев приёмки. На модуль под ключ (10-16 недель) — 50-150 критериев. Список фиксируется в приложении к контракту.

Процедура финальной приёмки:

  1. Клиент получает результат + acceptance checklist
  2. Клиент проходит по чек-листу, проверяет каждый критерий
  3. В течение 5-10 рабочих дней клиент даёт замечания
  4. Если замечания — вендор закрывает их в течение 1-2 недель
  5. Повторная итерация приёмки (если нужна)
  6. Финальный sign-off после прохождения всех критериев

Инструкция по эксплуатации: 10 разделов в стандарте

Главный документ для in-house команды клиента. Не архитектурное описание, а практическое руководство по эксплуатации.

Раздел 1. Архитектура высокого уровня. Одна страница: диаграмма компонентов (C4 model или аналог), ключевые потоки данных, связи с внешними системами.

Раздел 2. Зависимости. Внешние сервисы (API, СУБД, кэш, очереди), их версии, точки failover’а. Что делать, если каждый из них недоступен.

Раздел 3. Развёртывание и rollback. Как развернуть модуль на каждое окружение, типовое время операций, проверки после деплоя, процедура rollback и её стоимость (например, потеря 5 минут данных).

Раздел 4. Конфигурация и переменные окружения. Полный список ENV, где хранятся секреты, как менять конфигурацию без рестарта.

Раздел 5. Мониторинг и алерты. Какие метрики мониторить (системные, бизнес-уровневые, end-to-end), какие пороги для алертов, ссылки на dashboards в системе клиента.

Раздел 6. Типовые ошибки и решения. Топ-15 ошибок, которые мы видели в процессе разработки или которые ожидаются в production. Каждая ошибка → симптом → диагностика → решение.

Раздел 7. Процедуры срочных исправлений. Типовые сценарии быстрых фиксов: что менять, какие тесты прогнать, как развернуть срочное исправление без полного релиз-цикла. Шаблоны hotfix-PR.

Раздел 8. Performance. Где узкие места, какие операции дорогие, как профилировать, какие настройки тюнить. Целевые SLA и текущие показатели.

Раздел 9. Security. Режим доступов (кто что может), аудит-логи, security-инциденты и реакция, требования compliance (152-ФЗ, КИИ, отраслевые).

Раздел 10. FAQ. Частые вопросы in-house команды, которые мы собрали по ходу проекта. По мере накопления — пополняется и in-house командой.

Объём. Для модуля средней сложности — 30-60 страниц. Для большого модуля или сложного сервиса — 60-100 страниц.

Когда составляется. Параллельно с разработкой, не в последние дни перед сдачей. Конкретно: после первой production-готовой версии (середина проекта) → черновик инструкции; за 2-3 недели до сдачи → финальная версия; на финальной приёмке инструкция проверяется по чек-листу полноты.

Передача: 30-60 дней

Цель — клиент полностью владеет продуктом и может развивать его без зависимости от вендора (без привязки к подрядчику).

Структура передачи

Недели 1-2. Walkthrough архитектуры и кода.

2-3 сессии по 2-3 часа с in-house tech lead клиента. Объяснение архитектурных решений со ссылками на ADR. Разбор кодовой базы по модулям. Обзор тестов и тестовой стратегии. Объяснение нестандартных мест — где какие компромиссы и почему.

Недели 3-4. Demo по инструкции.

Проход по 10 разделам инструкции с in-house командой. Тренировка типовых сценариев: «БД упала, что делать», «алерт N сработал, диагностика», «как развернуть срочное исправление», «как сделать rollback». Это тренинг, не презентация.

Недели 5-6. Парное программирование на первых срочных исправлениях.

Первый production-баг (он неизбежно возникает) — разработчик клиента пишет фикс, наш senior смотрит на ходу, объясняет, корректирует. На втором срочном исправлении — наоборот: наш senior пишет, разработчик клиента проверяет.

Недели 7-8. Самостоятельная работа клиента.

Клиент закрывает следующие баги полностью самостоятельно. Мы доступны на консультации (не более 2-4 часов в неделю — это включено в стоимость).

Метрика готовности передачи

«Первое срочное исправление без нашего участия» — клиент закрыл production-баг полностью самостоятельно, без обращения к нам. Это объективная проверка.

Что измеряется:

  • Время от обнаружения бага до фикса в production
  • Качество фикса (не сломал ли что-то ещё)
  • Наличие новой записи в инструкции («раздел 6: типовые ошибки») с описанием бага и решения

По нашему опыту, в 85-90% проектов клиент достигает третьего самостоятельного срочного исправления в первые 4-6 недель после сдачи. Если через 30 дней клиент всё ещё привлекает вендора к каждому багу — передача не сработала, нужны дополнительные сессии или доработка инструкции.

SLA-период после сдачи

Стандартный SLA-период — 1-3 месяца после финальной приёмки.

Уровни критичности

P1 — production down или бизнес-критично. Полная или существенная недоступность функциональности, влияет на бизнес. Реакция < 1 час, фикс < 4 часов.

P2 — degraded, частичная функциональность недоступна. Отдельные функции не работают, но основной поток продолжается. Реакция < 4 часов, фикс < 24 часов.

P3 — minor issue, обходное решение есть. Незначительные баги, не блокирующие работу. Реакция < 24 часов, фикс < 5 рабочих дней.

Что входит в SLA

  • Бесплатное исправление багов в коде вендора (то, что не работает по критериям приёмки)
  • Ответы на консультационные вопросы in-house команды
  • Парное программирование на сложных сценариях
  • Помощь с диагностикой нестандартных проблем

Что не входит в SLA

  • Добавление новой функциональности (это change request с отдельной оплатой)
  • Проблемы, вызванные действиями клиента или изменениями инфраструктуры
  • Интеграционные проблемы с системами, не входившими в объём работ проекта
  • Performance-проблемы при превышении заявленной нагрузки

SLA фиксируется в контракте, нарушение приводит к штрафам или возврату части оплаты. Стандартный штраф — 0.5-1% от стоимости проекта за каждое нарушение SLA.

Что делать, если что-то идёт не так

Ситуация 1: Финальная приёмка показала множественные несоответствия критериям приёмки.

Стандартная процедура — вендор фиксит до полного прохождения, без дополнительной оплаты. Если несоответствий 30%+ — это серьёзный сигнал, требуется встреча уровня tech lead клиента и tech lead вендора с разбором причин. Возможно, нужно расширение SLA-периода или частичный возврат.

Ситуация 2: Код прошёл acceptance, но архитектурно плох — сложно поддерживать.

Это самый сложный случай. Защита — двухуровневое code review во время разработки. Если она не сработала и архитектурные проблемы выявились только после сдачи, нужны: 1) Дополнительный SLA-период на рефакторинг наиболее проблемных мест за счёт вендора. 2) Парное программирование на 2-3 недели интенсивно для in-house команды, чтобы они могли сами поддерживать. 3) В крайнем случае — независимый аудит и отказ от части требований.

Ситуация 3: После сдачи возникают баги, которые SLA не покрывает.

Если за рамками — change request. Если в SLA — фикс бесплатно. Если на границе — переговоры. Стандартное правило: «всё, что нарушает критерии приёмки, попадает в SLA; всё, что выходит за объём работ — change request».

Ситуация 4: In-house команда не справляется с продуктом после передачи.

Это сигнал, что передача была неполной или in-house команда недостаточно зрелая для этой технологии. Стандартное решение — продление SLA-периода с консультационным сопровождением (за дополнительную плату — например, 200-400K в месяц за консультанта senior’а на 50% загрузки).

Сопутствующие материалы — разработка под ключ, разработчики на проект 2026, аутстафф vs под ключ, найм senior-разработчика vs под ключ, контракты разработки: фиксированная цена vs T&M.

Сравнительная таблица: под ключ vs аутстафф vs найм для одной фичи

КритерийФича под ключАутстафф 2 seniorНайм 2 senior
Стоимость за квартал1,5-4 млн ₽ фиксированной цены2,2-3,6 млн ₽ T&M2,4-3,4 млн ₽ (с TCO)
Срок до результата6-12 недель6-12 недель работ + 2-4 нед ramp-up4-8 мес поиск + 1-2 мес ramp-up
Ответственность за результатПодрядчик целикомДелится с заказчикомПолностью у заказчика
Критерии приёмкиОбязательны, в контрактеОпционально, в SOWВнутренний документ
ПередачаВключена в стоимостьНе предусмотренаНе применимо
Зависимость от одного разработчика после сдачиЗакрыта инструкцией по эксплуатацииЗависит от заказчикаЗависит от заказчика
Подходит дляЖёсткий roadmap-дедлайнДлинная разработка с гибким объёмом работПостоянная функция

Под ключ выигрывает в сценарии «есть фича X, дедлайн через 3-4 месяца, штатных рук нет, нанимать долго». Аутстафф — при длинной разработке, где объём работ ещё не зафиксирован. Найм — когда функция нужна постоянно и есть HR-ресурс на 4-8 месяцев процесса.

TCO фичи под ключ на горизонте 12 месяцев

СтатьяФича под ключ 3 млн ₽2 senior на квартал (TCO найма)
Прямые затраты на разработку3,0 млн ₽2,1 млн ₽ (зарплаты, налоги, инфраструктура)
HR-расходы (рекрутер, реклама)00,5 млн ₽
Подключение пользователей (потери первых 4-6 нед)00,5 млн ₽
Управленческое внимание CTO/VP0,1 млн ₽ (eq)0,6 млн ₽ (eq)
Риск разрыва оффера (вероятностный)00,2-0,4 млн ₽
Сопровождение после сдачи (3 мес)0,2 млн ₽ (SLA)0,5 млн ₽ (продолж. найма)
Итого 12 мес3,3 млн ₽4,4-4,6 млн ₽

При сравнимом результате под ключ оказывается дешевле на 25-30% за счёт отсутствия HR-расходов, потерь на подключение пользователей и снятия управленческого внимания с CTO. Для зрелых продуктовых компаний, где CTO стоит 0,5-1,0 млн ₽/мес и его время дорого, это окупает контракт почти автоматически.

Антипример: турнки-фича без критериев приёмки

Fintech-компания серии B заказала фичу под ключ «модуль скоринга» у регионального подрядчика. Контракт с фиксированной ценой на 2,5 млн ₽, срок 10 недель. Критерии приёмки в контракте не были прописаны — только «модуль скоринга, работающий в production». На приёмке выявилось: модель скоринга не учитывает 4 из 12 типов клиентов, нагрузочное тестирование не проводилось, нет интеграции с CRM. Подрядчик настаивает: «контракт исполнен, модуль работает». Заказчик не имеет формальной базы для требования доработок без дополнительной оплаты. Итог: суд, потеря 4 месяцев, репутационный ущерб обеим сторонам. Урок: критерии приёмки — это не бюрократия, а единственный объективный документ, который защищает обе стороны от расхождения интерпретаций «работающий модуль».

Внешние источники по теме разработки под ключ

  • Хабр: «Под ключ vs T&M» — обзор на habr.com/ru/articles, экспертные мнения CTO.
  • GitHub Engineering Blog: Project handoff playbook — практики передачи проектов.
  • martinfowler.com/articles — Continuous Delivery, Trunk-Based Development как контекст передачи.
  • HH.ru/articles — статистика по срокам закрытия senior-вакансий в РФ (TCO найма).
  • «Joel on Software» — The Joel Test — базовые критерии зрелости разработки, релевантно при оценке вендора.

Все ссылки — для повышения доверия к экспертизе, не для прямого продвижения. Целевая аудитория (CTO) проверяет источники, ссылки на сторонние авторитетные ресурсы повышают тематический авторитет страницы.

Связанные материалы — контракты разработки, аутстафф vs под ключ, найм senior-разработчика, разработчики на проект.

Кейс: интеграция нового платёжного метода в SaaS-биллинг

Один из проектов, который мы вели в 2026 году — изолированный пример того, как работает разработка фичи под ключ для зрелого продукта. Компания (далее — Заказчик А) — B2B SaaS-платформа на 1200 корпоративных клиентов, выручка ~600 млн рублей в год, in-house команда 24 разработчика. Задача: добавить в существующий биллинг новый платёжный метод — корпоративный безналичный расчёт с автоматической выгрузкой первичных документов в 1С клиентов.

Контекст. В roadmap фича стояла шестой по приоритету, in-house команда была загружена двумя крупными модулями на квартал вперёд. CTO Заказчика А оценил: либо нанимаем ещё двух senior backend (HR-цикл 4-6 мес, риск разрыва оффера, дедлайн съезжает на третий квартал), либо передаём фичу наружу под ключ с дедлайном 10 недель.

Объём работ. 1) Новая платёжная сущность в модели данных биллинга (мигрировать ~80 тысяч активных подписок без даунтайма). 2) UI выбора метода оплаты при оформлении подписки и при апгрейде тарифа. 3) Workflow подтверждения платежа казначеем клиента с email-нотификациями. 4) Генерация счёта, акта, счёта-фактуры по шаблонам, согласованным с бухгалтерией Заказчика А. 5) Экспорт первичных документов в форматах УПД 5.01 и 1С Бухгалтерия 8.3. 6) Интеграция со страницей админ-панели для ручного резолва спорных платежей.

Контракт. Фиксированная цена 2,8 млн рублей, срок 11 недель, критерии приёмки — 47 пунктов в приложении к контракту. Команда — Solution Architect, два senior backend, один senior frontend, QA на парт-тайм. Двухуровневое code review: внутреннее у нас и кросс-ревью in-house tech lead Заказчика А на каждый PR. SLA-период 2 месяца с реакцией на P1 < 4 часов.

Что получилось. Сдача в срок, прохождение 45 из 47 критериев на первой приёмке (два — мелкие edge cases по форматированию УПД, закрыты за неделю). Инструкция по эксплуатации на 38 страниц. Передача за 5 недель: walkthrough архитектуры, прохождение типовых сценариев, парное программирование на двух первых production-багах. Третий баг in-house команда Заказчика А закрыла самостоятельно через 19 дней после сдачи. За SLA-период (60 дней) — 4 обращения по P3, 1 по P2, ноль по P1. Все закрыты в SLA.

TCO. Прямо: 2,8 млн рублей за разработку + 0,2 млн рублей SLA-стоимость = 3,0 млн. Альтернатива в найме: 2 senior backend × 0,35 млн ЗП × 4 мес поиска и работы = 2,8 млн прямых затрат + 0,5 млн HR-расходов + риск разрыва оффера. На горизонте «получить функционал в production» под ключ оказался дешевле на 20% при гарантированной дате релиза.

Что не пошло гладко. На третьей неделе обнаружилась недоговорённость по формату УПД — у Заказчика А кастомный шаблон, согласованный с налоговой два года назад, его не было в начальной документации. Стандартная процедура: change request с фиксацией дополнительного объёма работ (12 человеко-часов) и согласование с обеих сторон, без скрытого расширения объёма работ. В итоге это +90 тысяч рублей к контракту, согласовано официальным письмом, отражено в финальном акте.

Урок. Чем строже зафиксирован объём работ на этапе предпроектного обследования, тем меньше change request’ов в середине проекта. Стандарт: 2-3 итерации уточнения критериев приёмки до подписания контракта, не «уточним по ходу».

Decision tree: когда выбирать разработку фичи под ключ

Часто CTO стоит перед выбором между тремя моделями. Этот чек-лист помогает решить за 5-10 минут.

Выбирайте разработку фичи под ключ, если:

  • Фича понятна по объёму работ (не «давайте сделаем что-то про оплату», а «новый платёжный метод X с конкретным workflow»)
  • Срок до результата критичен — есть жёсткий дедлайн roadmap, регуляторный или коммерческий
  • Объём работ — одна фича или модуль на 6-16 недель, не «направление развития» на 6+ месяцев
  • In-house команда загружена на текущий квартал и не может выделить 2-3 senior на эту задачу
  • Критерии приёмки можно сформулировать измеримо — есть владелец продукта, который их утвердит
  • Готовы к структуре с фиксированной ценой и формальной приёмкой (не «гибкая разработка по ходу»)

Выбирайте аутстафф, если:

  • Объём работ ещё не зафиксирован, фича будет уточняться по ходу разработки
  • Есть сильный in-house tech lead, который будет вести разработчиков
  • Срок гибкий — релиз через 4-9 месяцев, дата может сдвигаться
  • Длинная разработка с переменным составом задач — нужна именно команда «на руки»
  • Готовы к T&M-бюджету и принятию рисков по дате релиза

Выбирайте найм, если:

  • Функция будет нужна постоянно следующие 18-24+ месяцев
  • HR-ресурс позволяет вести 4-6 месяцев поиска
  • Можно жить с дедлайном «когда найдём, тогда и начнём»
  • Готовы вложить 0,5-0,8 млн рублей в HR-цикл + потерянная скорость roadmap

Гибрид «фича под ключ + параллельный найм» — для случаев, когда нужно закрыть текущий дедлайн и одновременно строить in-house экспертизу. Под ключ закрывает квартал, найм идёт параллельно на следующий.

Сравнительная таблица для одной фичи: TCO 12 месяцев

Развёрнутый расчёт по строкам — фича под ключ vs аутстафф 2 senior vs найм 2 senior на горизонте 12 месяцев с учётом подключения пользователей, рисков и управленческого внимания. Все цифры — для типовой фичи объёма работ 800-1200 человеко-часов.

ПараметрФича под ключАутстафф 2 seniorНайм 2 senior
Прямые затраты на разработку2,2-3,5 млн ₽2,5-3,8 млн ₽2,1-2,5 млн ₽ (зарплаты)
HR-расходы000,5-0,7 млн ₽
Налоги и страховые0 (в стоимости)0 (в стоимости)0,6-0,8 млн ₽
Инфраструктура и софт00,05-0,1 млн ₽0,15-0,25 млн ₽
Подключение пользователей (потери первых 4-8 нед)00,2-0,3 млн ₽0,5-0,7 млн ₽
Управленческое внимание CTO0,1 млн ₽ eq0,3-0,5 млн ₽ eq0,6-1,0 млн ₽ eq
Риск разрыва оффера00,05 млн ₽ eq0,2-0,4 млн ₽ eq
Гарантия даты релизаДа (контракт)НетНет
Гарантия результатаДа (критерии приёмки)НетНет
Передача и lock-inНет lock-in, передача в стоимостиНе предусмотренаНе применимо
Сопровождение после сдачи 3 мес0,15-0,3 млн ₽ (SLA)Продолжается T&MПродолжается ЗП
Итого 12 мес2,5-4,0 млн ₽3,1-4,8 млн ₽4,1-5,6 млн ₽

Разница — 20-40% в пользу под ключ для задач с зафиксированным объёмом работ и дедлайном. Найм оправдан, только если фича — часть постоянной функции на 18+ месяцев. Аутстафф — компромисс при гибком объёме работ.

Типовые ошибки CTO при заказе фичи под ключ

Семь паттернов, которые мы видели в практике 2024-2026 годов. Каждый — реальная причина того, почему фича под ключ дала плохой результат, хотя выбор модели был правильным.

Ошибка 1. Заказ без discovery-фазы. CTO хочет «сэкономить две недели и 0,5 млн рублей» и подписывает контракт без discovery. Результат — вендор закладывает в цену 30% риска неизвестности, либо в середине проекта возникает 4-6 change request’ов на ту же сумму. Discovery — не опция, а защита бюджета.

Ошибка 2. Размытые критерии приёмки. «Модуль работает корректно», «производительность приемлемая», «безопасность стандартная» — это не критерии. Все споры на финальной приёмке решаются в пользу формального исполнителя. Каждая функция должна иметь измеримые критерии в формате Given/When/Then.

Ошибка 3. Подмена senior на middle без согласования. На этапе продажи команда — senior, на этапе разработки приходят middle с senior-title. Контракт должен явно фиксировать состав команды по именам или по грейду с правом замены только по согласованию.

Ошибка 4. Нет двухуровневого code review. Code review только внутри команды вендора — слепая зона. In-house tech lead клиента должен смотреть каждый PR. Это не контроль, а защита архитектурного соответствия.

Ошибка 5. Передача в стиле «вот вам код, разбирайтесь». Без 30-60 дней передачи с walkthrough, demo по инструкции и парным программированием — модуль остаётся чёрным ящиком. В первые 2-3 месяца после сдачи у in-house команды нет шансов поддерживать его без эскалаций к вендору.

Ошибка 6. Игнорирование SLA-периода. «Контракт исполнен, всем спасибо». Любой production-баг становится новой коммерческой сделкой. Стандарт — 1-3 месяца SLA с заранее зафиксированными уровнями реакции и фиксации.

Ошибка 7. Параллельные изменения архитектуры со стороны клиента. На 8-й неделе проекта in-house команда клиента «улучшает» базовый модуль, с которым работает вендор. Архитектурное соответствие ломается, появляются конфликты слияния. Договорённость: основные ветки модулей, с которыми взаимодействует проект, не меняются в период разработки или меняются по согласованию.

Внешние источники для углубления

  • «Continuous Delivery» (Humble, Farley) — стандарты production-готового кода и пайплайнов.
  • «Domain-Driven Design» (Eric Evans) — паттерны интеграции модулей в существующую архитектуру.
  • GitHub Engineering: «Code review best practices» — практика двухуровневого code review.
  • martinfowler.com/articles/feature-toggles — feature-flag-управляемые интеграции.
  • Хабр: хабы «Программирование», «Системный анализ» — российская практика проектов под ключ.

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

FAQ о разработка фичи

Как формулировать критерии приёмки для фичи под ключ?

Критерии приёмки — формальные измеримые требования к каждой функции. Хорошие критерии: измеримые (можно проверить выполнение объективно), конкретные (не «работает быстро», а «P95 < 200ms на 10k записей»), привязанные к функциям, явно перечисляют edge cases. Стандартная структура — Given/When/Then: «Given пользователь авторизован, When он нажимает экспорт CSV, Then файл генерируется за < 5 секунд для 100k записей, в кодировке UTF-8 BOM, с заголовками на русском, скачивается через одноразовую ссылку, действующую 24 часа». Каждая функция — 3-10 критериев. На проекте под ключ средней сложности — 30-80 критериев суммарно. Список фиксируется в приложении к контракту, проверяется на финальной приёмке.

Что должно быть в инструкции по эксплуатации?

Стандартная инструкция по эксплуатации на 10 разделов: 1) Архитектура высокого уровня (диаграмма, ключевые потоки). 2) Зависимости (внешние сервисы, БД, кэш, очереди). 3) Развёртывание и rollback. 4) Конфигурация и переменные окружения. 5) Мониторинг и алерты (какие метрики, какие пороги, dashboards). 6) Типовые ошибки и решения (топ-15 ошибок, которые ожидаются). 7) Процедуры срочных исправлений (типовые сценарии быстрых фиксов). 8) Performance (узкие места, профилирование, тюнинг). 9) Security (доступы, аудит-логи). 10) FAQ для in-house команды. Объём — 30-60 страниц для модуля средней сложности. Инструкция составляется параллельно с разработкой, проверяется на финальной приёмке. Качество инструкции — главный индикатор того, что передача будет работать.

Что такое передача и как она проходит?

Передача — это процесс передачи продукта от вендора в in-house команду клиента за 30-60 дней. Этапы: 1) Walkthrough архитектуры — 2-3 сессии по 2-3 часа с in-house tech lead клиента. 2) Demo по инструкции — проход по 10 разделам, типовые сценарии. 3) Парное программирование на первых срочных исправлениях — клиентский разработчик пишет фикс, наш senior смотрит и объясняет; затем наоборот. 4) Самостоятельная работа клиента — он закрывает следующие баги без нашего участия. Метрика готовности — «первое срочное исправление без нашего участия»: клиент полностью самостоятельно разрешает production-баг. Только после этого передача считается завершённой. Это объективная проверка того, что вендор не оставил чёрный ящик.

Что включать в SLA на срочные исправления после сдачи?

Стандартный SLA-период 1-3 месяца после сдачи. Уровни критичности и времена реакции: P1 (production down, бизнес-критично) — реакция < 1 час, фикс < 4 часов. P2 (деградация, частичная функциональность недоступна) — реакция < 4 часов, фикс < 24 часов. P3 (minor issue, обходное решение есть) — реакция < 24 часов, фикс < 5 рабочих дней. Что входит в SLA: бесплатное исправление багов в коде вендора (то, что не работает по критериям приёмки); ответы на консультационные вопросы; парное программирование на сложных сценариях. Что не входит: добавление новой функциональности (change request); проблемы, вызванные действиями клиента или изменениями инфраструктуры; интеграционные проблемы с системами, не входившими в объём работ. SLA фиксируется в контракте, нарушение приводит к штрафам или возврату части оплаты.

Что такое «первое срочное исправление без нашего участия» как метрика?

Это объективная проверка качества передачи. После сдачи проекта под ключ неизбежно возникают баги в production (даже у самых тщательных вендоров — это норма для нового кода). Каждый баг — это срочное исправление. Стандартная схема: первое срочное исправление — наш senior пишет фикс, in-house разработчик клиента смотрит и учится. Второе срочное исправление — клиентский разработчик пишет, наш senior проверяет. Третье и далее — клиент работает полностью самостоятельно. Метрика готовности передачи — это третье срочное исправление, которое клиент закрыл без обращения к нам. Если через 30 дней после сдачи клиент всё ещё привлекает нас к каждому багу — передача не сработала, инструкция неполная или код слишком сложный. Это объективный сигнал к доработке. По нашему опыту, в 85-90% проектов клиент достигает третьего самостоятельного срочного исправления в первые 4-6 недель после сдачи.

Может ли in-house команда расширять функционал после передачи?

Да, это одна из главных целей правильной передачи. После её завершения in-house команда полностью владеет кодом, документацией, инструкцией и знаниями. Они могут: 1) Исправлять баги без участия вендора. 2) Добавлять новый функционал на существующей архитектуре. 3) Рефакторить отдельные части. 4) Интегрировать модуль с новыми системами. 5) Развивать модуль 6-24 месяца без зависимости от вендора. Это противоположность практике привязки к подрядчику, где после сдачи клиент привязан к вендору для любых изменений. Иногда клиент возвращается за новыми проектами под ключ (новая фича, новый модуль) — это нормально и выгодно обеим сторонам. Но это решение клиента, а не вынужденная зависимость. Качество передачи — главный фактор: если она сделана правильно, клиент сам решает, когда и кого привлекать.

Что делать, если команда под ключ сдала плохой код?

Стандартная защита — это процедура приёмки и SLA-период. На финальной приёмке клиент проверяет каждый критерий — если что-то не прошло, оплата задерживается, и вендор фиксит до полного прохождения. В SLA-период (1-3 месяца) — любые баги в коде вендора исправляются бесплатно. Если код плох по архитектуре, а не по критериям приёмки — это сложнее. Здесь работают: 1) Двухуровневое code review во время разработки (in-house tech lead клиента смотрит каждый PR — это превентивная защита). 2) Промежуточная приёмка в середине проекта (если код плохой — это видно на середине, можно требовать исправления до финала). 3) Архитектурное соответствие, согласованное на этапе предпроектного обследования (если код не соответствует — это нарушение контракта). Для критичных проектов рекомендуется выбирать вендоров с проверенной репутацией, запрашивать примеры предыдущих результатов, проводить технический собеседование с tech lead вендора до подписания контракта.

Сколько change request'ов нормально для проекта фичи под ключ?

Стандарт — 1-3 change request'а на проект объёмом работ 6-12 недель. Каждый change request означает, что объём работ был зафиксирован неполно на этапе предпроектного обследования, либо у клиента появились новые требования. Если change request'ов 0 — скорее всего, что-то скрыто (вендор молча расширил объём работ за свой счёт или клиент не проверял критерии). Если их 5+ — предпроектное обследование сделано плохо, контракт исходно описан слишком общо. Каждый change request оформляется письмом или дополнением к контракту с фиксацией дополнительного объёма работ, цены, нового срока. Скрытое расширение объёма работ без оформления — антипаттерн, который ломает финальную приёмку.

Можно ли разбить фичу под ключ на несколько контрактов?

Да, и это часто оправдано. Стандартный паттерн — разбить большую фичу на 2-3 связанных контракта: 1) Discovery и архитектурное обследование (2-4 недели, 0,3-0,7 млн рублей) с deliverable «архитектура + ADR + критерии приёмки + roadmap реализации». 2) Основная разработка (6-10 недель, 1,5-3 млн рублей) — реализация по утверждённой архитектуре. 3) Опциональный SLA-период (1-3 месяца). Это снижает риск для обеих сторон. Клиент после discovery может либо продолжить с тем же вендором, либо передать архитектуру другому исполнителю. Вендор получает реалистичный объём работ для второй фазы. Главное — единые критерии приёмки и архитектурное соответствие между фазами. Этот паттерн особенно полезен для проектов 12+ недель или когда исходный объём работ нечёткий.

Чем разработка фичи под ключ отличается от целого модуля под ключ?

Это две точки на одной шкале объёма работ. Фича под ключ — узкая функциональность за 6-12 недель, 1,5-3,5 млн рублей, 30-80 критериев приёмки, команда 2-3 senior + Solution Architect part-time. Модуль под ключ — крупный функциональный блок за 10-16 недель, 3-7 млн рублей, 80-150 критериев приёмки, команда 3-5 senior + Solution Architect full-time + дополнительные роли (DevOps, security при необходимости). Главное отличие — не только объём, но и архитектурная сложность: фича обычно работает в рамках существующих архитектурных паттернов клиента, модуль может вводить новые подсистемы (новый сервис, новая БД, новая интеграционная шина). Для модуля под ключ см. отдельный гайд по [разработке под ключ](/razrabotka-pod-klyuch/).