Разработка фичи в существующий продукт 2026: критерии и передача
Гайд для CTO: разработка фичи в существующий продукт под ключ. Что входит в результат, как формулировать критерии приёмки, инструкция по эксплуатации, передача без привязки к подрядчику, SLA.
Что описывает эта статья, а что нет. Разработка фичи в существующий продукт за 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 критериев. Список фиксируется в приложении к контракту.
Процедура финальной приёмки:
- Клиент получает результат + acceptance checklist
- Клиент проходит по чек-листу, проверяет каждый критерий
- В течение 5-10 рабочих дней клиент даёт замечания
- Если замечания — вендор закрывает их в течение 1-2 недель
- Повторная итерация приёмки (если нужна)
- Финальный 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&M | 2,4-3,4 млн ₽ (с TCO) |
| Срок до результата | 6-12 недель | 6-12 недель работ + 2-4 нед ramp-up | 4-8 мес поиск + 1-2 мес ramp-up |
| Ответственность за результат | Подрядчик целиком | Делится с заказчиком | Полностью у заказчика |
| Критерии приёмки | Обязательны, в контракте | Опционально, в SOW | Внутренний документ |
| Передача | Включена в стоимость | Не предусмотрена | Не применимо |
| Зависимость от одного разработчика после сдачи | Закрыта инструкцией по эксплуатации | Зависит от заказчика | Зависит от заказчика |
| Подходит для | Жёсткий roadmap-дедлайн | Длинная разработка с гибким объёмом работ | Постоянная функция |
Под ключ выигрывает в сценарии «есть фича X, дедлайн через 3-4 месяца, штатных рук нет, нанимать долго». Аутстафф — при длинной разработке, где объём работ ещё не зафиксирован. Найм — когда функция нужна постоянно и есть HR-ресурс на 4-8 месяцев процесса.
TCO фичи под ключ на горизонте 12 месяцев
| Статья | Фича под ключ 3 млн ₽ | 2 senior на квартал (TCO найма) |
|---|---|---|
| Прямые затраты на разработку | 3,0 млн ₽ | 2,1 млн ₽ (зарплаты, налоги, инфраструктура) |
| HR-расходы (рекрутер, реклама) | 0 | 0,5 млн ₽ |
| Подключение пользователей (потери первых 4-6 нед) | 0 | 0,5 млн ₽ |
| Управленческое внимание CTO/VP | 0,1 млн ₽ (eq) | 0,6 млн ₽ (eq) |
| Риск разрыва оффера (вероятностный) | 0 | 0,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-расходы | 0 | 0 | 0,5-0,7 млн ₽ |
| Налоги и страховые | 0 (в стоимости) | 0 (в стоимости) | 0,6-0,8 млн ₽ |
| Инфраструктура и софт | 0 | 0,05-0,1 млн ₽ | 0,15-0,25 млн ₽ |
| Подключение пользователей (потери первых 4-8 нед) | 0 | 0,2-0,3 млн ₽ | 0,5-0,7 млн ₽ |
| Управленческое внимание CTO | 0,1 млн ₽ eq | 0,3-0,5 млн ₽ eq | 0,6-1,0 млн ₽ eq |
| Риск разрыва оффера | 0 | 0,05 млн ₽ eq | 0,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/).