У вас есть продуктовая идея торгового терминала, бюджет и нет инженерной команды. Нанять команду и заказать разработку партнёру — не две цены за одно и то же: эти пути по-разному распределяют время, знание и риск. Разбираем, что берёт с вас каждый путь, что обязано быть в передаче и что у вас в руках в день, когда работа остановится.
У вас есть идея торгового терминала, бюджет под неё и нет инженерной команды. Следующий вопрос почти всегда ставится как сравнение цен: сколько стоит нанять инженеров и сколько стоит, чтобы компания построила это и передала вам.
Такая постановка прячет само решение. Оба пути заканчиваются работающим кодом. Различаются они тем, когда появится первая пригодная версия, кто понимает систему через год, что произойдёт при уходе ключевого человека и что у вас в руках, если работа остановится.
Короткий ответ: сравнивайте два пути по четырём вещам, а не по ставке — срок до версии, которую можно показать трейдеру; где живёт знание о системе; что переживает уход человека; и чем вы владеете в день остановки работы. Путь, выигрывающий по ставке и проигрывающий по всем четырём, — более дорогой.
Торговый терминал — не одна система. Это путь рыночных данных, путь ввода заявок, предторговые риск-проверки, подключение к площадкам или брокерам, состояние позиций и счёта, экран, который обязан перерисовываться, пока движется стакан, и бэк-офис, сверяющий всё это после закрытия.
Когда вы нанимаете, вы покупаете не систему. Вы строите организацию, которая её произведёт, и знание о том, как она работает, стартует с нуля и копится в головах ваших сотрудников. Это актив, пока они остаются, и это весь риск целиком, когда они уходят.
Нанимая партнёра, вы покупаете систему плюс историю решений, которая уже существует в другом месте. Знание стартует выше и в первый же день находится вне вашей компании. Переедет ли оно внутрь — это пункт договора и рабочая практика, а не то, что случается само.
Полезно уточнить, что здесь значит знание о системе, потому что это не исходный код:
Ничего из этого не лежит в репозитории по умолчанию. Оно живёт в человеке, пока процесс не вынудит записать это, — и неважно, ваш это сотрудник или инженер партнёра.
Перед путём найма стоит очередь, которую бюджет не убирает. Вы пишете вакансию, которую сможете защитить технически, ищете на рынке, где торговых инженеров мало, собеседуете по навыкам, которые внутри компании оценить пока некому, ждёте отработки на прежних местах, а потом первое время смотрите, как новая команда спорит об архитектуре, вместо того чтобы её строить.
Путь партнёра начинается с объёма работ, а не с поиска людей, — отсюда и разница во времени. Чего он не убирает, так это работы, которую можете сделать только вы: решить, для чего терминал, какие инструменты и площадки важны первыми и кто первые пользователи.
А часть сроков не принадлежит ни одному из путей. Эти пункты идут своим темпом, кто бы ни писал код:
Поэтому честное сравнение — не гонка двух дат сдачи. Вопрос в том, какой путь ставит перед работой меньше того, на что вы не влияете, и какой раньше начинает то, на что влияете.
Задайте обоим путям один и тот же вопрос. Если инженер, написавший обработчик рыночных данных, в понедельник перестанет работать, что будет во вторник и что будет в следующем квартале.
В маленькой нанятой команде ответ обычно упирается в одно имя. Ранние команды концентрируют знание по устройству: один держит горячий путь, другой — подключения, и дорожная карта тихо перестраивается вокруг того, кто ещё на месте. В работе с партнёром всё зависит от того, читал ли там код больше одного инженера и записано ли это в вашем договоре.
Ни одна из конструкций сама по себе не безопасна. Партнёр с единственным инженером на вашем проекте уязвим ровно так же, как внутренняя команда из двух человек, и защита в обоих случаях одна: знание записывается по ходу того, как оно появляется, а не восстанавливается задним числом.
Приёмочный тест, который работает на обоих путях: возьмите инженера, ни разу не видевшего систему, дайте ему документацию и чистую машину и попросите поднять терминал в тестовой среде и выставить заявку. Всё, о чём ему придётся спросить живого человека, — знание, которым вы пока не владеете.
Слово «передача» покрывает два совершенно разных события. Одно — передача файлов. Другое — передача способности продолжать без тех, кто это построил, и платить стоит только за второе.
Впишите второе в объём работ списком артефактов, к каждому из которых приложен приёмочный тест. Разумный список выглядит так:
Передача, которую ни разу не репетировали, — это план, а не результат. Репетируйте её в середине разработки, а не после последнего счёта, и репетиция проста: ваши инженеры выкатывают изменение и откатывают его, а те, кто писал систему, смотрят.
Владение — вопрос, отдельный от передачи, и решается он в договоре до начала работы, а не выясняется в конце. Наш собственный ответ — одно предложение, и мы не сокращаем его ни в одной версии ни одного документа.
Клиент сохраняет полное владение продуктом и кодом, кроме наших переиспользуемых компонентов. Именно это исключение стоит внимательно читать у любого партнёра, включая нас: спросите, что за переиспользуемые компоненты, на каких условиях вы продолжаете ими пользоваться, собирается ли система без того, что вы не можете воспроизвести сами, и что станет с этими компонентами, если вы перестанете работать вместе.
Вопрос обычно ставится как выбор из двух: нанять команду или отдать всё целиком на сторону. На практике большинство проектов стоит между этими полюсами, и позиции разрешено меняться по мере взросления системы.
Три формата: полная разработка, выделенная команда или инженеры внутри вашей команды. Так мы описываем свою сторону, и разница между тремя не в счёте, а в том, кто держит план, кто держит приоритеты и кто отвечает за результат.
Этот последний пункт снимает большую часть исходного вопроса. Сильная версия партнёрского пути с самого начала планирует вашу собственную команду: вы нанимаете под уже существующую систему, ваши собеседования опираются на код, который кандидат будет поддерживать, а первое, что читает новый сотрудник, — запись решения, а не пустой репозиторий.
Сравнение ставок — наименее полезная цифра в этом решении: два пути выставляют счёт в разных единицах. Положите оба списка рядом и посчитайте честно.
Путь найма берёт с вас:
Путь партнёра берёт с вас:
Затем посчитайте выходы: они есть у обоих путей. Путь найма заканчивается сокращением команды, которую вы собрали, и знание уходит в этих головах. Путь партнёра заканчивается передачей, которую вы либо репетировали, либо нет, и расстояние между этими двумя финалами и есть риск пути.
Прежде чем что-то подписывать, прогоните оба варианта через один вопрос: если это остановится в пятницу, что у нас останется в руках в понедельник. Отвечайте артефактами — репозитории, воспроизводимые среды, документация и люди, способные собрать систему заново по ним, — потому что намерения ухода человека не переживают, а артефакты переживают.
Что amBrain может подтвердить публично: мы пишем софт с 2019 года из Еревана, Армения, горячие пути — на Rust; мы построили торговый терминал Spectre Trade, а построенная нами мини-биржа работает в проде на колокации MOEX. Если вы взвешиваете наём против партнёра ради собственного терминала, возьмите список передачи выше в первый же разговор и попросите того, кто сидит напротив, нас в том числе, ответить по нему построчно.
Принесите текущую архитектуру и тот сценарий отказа, который вас беспокоит, — разберём его вместе за полчаса.