Заказная разработка
Внутренние системы, интеграции и инструменты, которых нет в готовом виде, — сделанные так, чтобы их мог сопровождать тот, кто придёт следующим.
- Системы, подстроенные под процесс, а не процесс под систему
- Интеграции, переживающие изменения на другой стороне
- Документация и тесты, написанные для инженера, который это унаследует
Честная версия выбора «купить или сделать»
Купить обычно правильнее. Готовый продукт впитал годы пограничных случаев, о которых вы ещё не думали, а его лицензия почти всегда дешевле полной стоимости сопровождения аналога.
Заказная разработка оправдана в трёх ситуациях:
- Процесс и есть преимущество. Если клиенты выбирают вас за то, как именно вы это делаете, подгонка процесса под продукт означает отказ от преимущества.
- Настоящая задача — интеграция. Системы у вас есть; нет связующей ткани. Её вам не продаст ни один вендор, потому что она специфична для вас.
- На рынке действительно ничего нет. Реже, чем кажется, но бывает — особенно в отраслевой специфике.
Если ни одно из трёх не выполняется, мы скажем, какой продукт купить. Этот разговор стоит нам проекта и экономит вам два года сопровождения.
Как мы строим
Сначала обследование, и оно короткое. Одна-две недели, результат — письменный объём работ с явно перечисленным тем, что в него не входит. Именно раздел «не входит» вызывает споры и именно он удерживает проект в конечных границах.
Вертикальные срезы. Первый релиз делает один сценарий целиком, а не все экраны наполовину. Вы рано узнаёте, выдерживает ли архитектура реальные данные.
Тесты там, где они оправданы. Бизнес-правила, деньги, преобразование данных и границы интеграций покрываются подробно. Вёрстка — нет. Набор тестов, покрывающий всё одинаково, — это набор тестов, который никто не запускает.
Документация по ходу. README, по которому новый инженер поднимет проект локально за полчаса, и записи решений по всему, что позже будет выглядеть произвольным.
Отдельно про интеграции
Большая часть этой работы — интеграции, а они ломаются предсказуемо: другая сторона меняет контракт, не предупредив; реальный лимит запросов ниже задокументированного; тестовый контур ведёт себя иначе, чем боевой; а ошибкой считается ответ 200 с текстом ошибки внутри.
Отсюда: повторы с нарастающей задержкой, ключи идемпотентности на всех операциях записи, контрактные тесты на записанных ответах и алерты, отличающие «их API лежит» от «мы сломали своё». Ничего изобретательного. Но именно это отличает интеграцию, работающую годами, от той, за которой нужно следить.
Что вы получаете
Исходный код, инфраструктуру в виде кода, тесты, регламент эксплуатации и записи решений. В вашем репозитории, под вашей учётной записью, с первого коммита.
Частые вопросы
Когда заказная разработка оправдана?
Когда процесс — реальное конкурентное преимущество; когда готовые продукты требуют менять способ работы дороже, чем экономит лицензия; или когда настоящая задача — интеграция существующих систем. В остальных случаях лучше купить.
Что происходит после сдачи?
Систему сопровождает ваша команда, мы помогаем с переходом, и поддержка оформляется отдельным соглашением, а не зашивается в архитектуру. Если вам удобнее, чтобы систему эксплуатировали мы, это возможно — но как выбор, а не как следствие.
Как вы считаете стоимость?
Фиксированная цена за обследование, дальше — время и материалы с потолком стоимости на итерацию. Фиксированная цена на неисследованную задачу означает, что риск заложен в смету, а каждое изменение превращается в переговоры.